// 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  S1540C5_nt  {
  int s1540c5f0[2];
  void  mf1540c5(); // _ZN10S1540C5_nt8mf1540c5Ev
};
//SIG(-1 S1540C5_nt) C1{ m Fi[2]}


void  S1540C5_nt ::mf1540c5(){}

//skip512 S1540C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1540C4_nt  {
  int s1540c4f0;
  __tsi64 s1540c4f1;
  void *s1540c4f2[4];
  int s1540c4f3[2];
  void *s1540c4f4;
  ::S1540C5_nt s1540c4f5;
  void *s1540c4f6[2];
  virtual  ~S1540C4_nt(); // _ZN10S1540C4_ntD1Ev
  virtual void  v7(); // _ZN10S1540C4_nt2v7Ev
  virtual void  v8(); // _ZN10S1540C4_nt2v8Ev
  virtual void  v9(); // _ZN10S1540C4_nt2v9Ev
  virtual void  v10(); // _ZN10S1540C4_nt3v10Ev
  virtual void  v11(); // _ZN10S1540C4_nt3v11Ev
  virtual void  v12(); // _ZN10S1540C4_nt3v12Ev
  virtual void  v13(); // _ZN10S1540C4_nt3v13Ev
  virtual void  v14(); // _ZN10S1540C4_nt3v14Ev
  virtual void  v15(); // _ZN10S1540C4_nt3v15Ev
  virtual void  v16(); // _ZN10S1540C4_nt3v16Ev
  virtual void  v17(); // _ZN10S1540C4_nt3v17Ev
  virtual void  v18(); // _ZN10S1540C4_nt3v18Ev
  virtual void  v19(); // _ZN10S1540C4_nt3v19Ev
  virtual void  v20(); // _ZN10S1540C4_nt3v20Ev
  virtual void  v21(); // _ZN10S1540C4_nt3v21Ev
  virtual void  v22(); // _ZN10S1540C4_nt3v22Ev
  virtual void  v23(); // _ZN10S1540C4_nt3v23Ev
  virtual void  v24(); // _ZN10S1540C4_nt3v24Ev
  virtual void  v25(); // _ZN10S1540C4_nt3v25Ev
  virtual void  v26(); // _ZN10S1540C4_nt3v26Ev
  virtual void  v27(); // _ZN10S1540C4_nt3v27Ev
  virtual void  v28(); // _ZN10S1540C4_nt3v28Ev
  virtual void  v29(); // _ZN10S1540C4_nt3v29Ev
  virtual void  v30(); // _ZN10S1540C4_nt3v30Ev
  virtual void  v31(); // _ZN10S1540C4_nt3v31Ev
  virtual void  v32(); // _ZN10S1540C4_nt3v32Ev
  virtual void  v33(); // _ZN10S1540C4_nt3v33Ev
  virtual void  v34(); // _ZN10S1540C4_nt3v34Ev
  virtual void  v35(); // _ZN10S1540C4_nt3v35Ev
  virtual void  v36(); // _ZN10S1540C4_nt3v36Ev
  virtual void  v37(); // _ZN10S1540C4_nt3v37Ev
  virtual void  v38(); // _ZN10S1540C4_nt3v38Ev
  virtual void  v39(); // _ZN10S1540C4_nt3v39Ev
  virtual void  v40(); // _ZN10S1540C4_nt3v40Ev
  virtual void  v41(); // _ZN10S1540C4_nt3v41Ev
  virtual void  v42(); // _ZN10S1540C4_nt3v42Ev
  virtual void  v43(); // _ZN10S1540C4_nt3v43Ev
  virtual void  v44(); // _ZN10S1540C4_nt3v44Ev
  virtual void  v45(); // _ZN10S1540C4_nt3v45Ev
  virtual void  v46(); // _ZN10S1540C4_nt3v46Ev
  virtual void  v47(); // _ZN10S1540C4_nt3v47Ev
  virtual void  v48(); // _ZN10S1540C4_nt3v48Ev
  virtual void  v49(); // _ZN10S1540C4_nt3v49Ev
  virtual void  v50(); // _ZN10S1540C4_nt3v50Ev
  virtual void  v51(); // _ZN10S1540C4_nt3v51Ev
  virtual void  v52(); // _ZN10S1540C4_nt3v52Ev
  virtual void  v53(); // _ZN10S1540C4_nt3v53Ev
  virtual void  v54(); // _ZN10S1540C4_nt3v54Ev
  virtual void  v55(); // _ZN10S1540C4_nt3v55Ev
  virtual void  v56(); // _ZN10S1540C4_nt3v56Ev
  virtual void  v57(); // _ZN10S1540C4_nt3v57Ev
  virtual void  v58(); // _ZN10S1540C4_nt3v58Ev
  virtual void  v59(); // _ZN10S1540C4_nt3v59Ev
  virtual void  v60(); // _ZN10S1540C4_nt3v60Ev
  virtual void  v61(); // _ZN10S1540C4_nt3v61Ev
  virtual void  v62(); // _ZN10S1540C4_nt3v62Ev
  virtual void  v63(); // _ZN10S1540C4_nt3v63Ev
  virtual void  v64(); // _ZN10S1540C4_nt3v64Ev
  virtual void  v65(); // _ZN10S1540C4_nt3v65Ev
  virtual void  v66(); // _ZN10S1540C4_nt3v66Ev
  virtual void  v67(); // _ZN10S1540C4_nt3v67Ev
  virtual void  v68(); // _ZN10S1540C4_nt3v68Ev
  virtual void  v69(); // _ZN10S1540C4_nt3v69Ev
  virtual void  v70(); // _ZN10S1540C4_nt3v70Ev
  S1540C4_nt(); // tgen
};
//SIG(-1 S1540C4_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]}


 S1540C4_nt ::~S1540C4_nt(){ note_dtor("S1540C4_nt", this);}
void  S1540C4_nt ::v7(){vfunc_called(this, "_ZN10S1540C4_nt2v7Ev");}
void  S1540C4_nt ::v8(){vfunc_called(this, "_ZN10S1540C4_nt2v8Ev");}
void  S1540C4_nt ::v9(){vfunc_called(this, "_ZN10S1540C4_nt2v9Ev");}
void  S1540C4_nt ::v10(){vfunc_called(this, "_ZN10S1540C4_nt3v10Ev");}
void  S1540C4_nt ::v11(){vfunc_called(this, "_ZN10S1540C4_nt3v11Ev");}
void  S1540C4_nt ::v12(){vfunc_called(this, "_ZN10S1540C4_nt3v12Ev");}
void  S1540C4_nt ::v13(){vfunc_called(this, "_ZN10S1540C4_nt3v13Ev");}
void  S1540C4_nt ::v14(){vfunc_called(this, "_ZN10S1540C4_nt3v14Ev");}
void  S1540C4_nt ::v15(){vfunc_called(this, "_ZN10S1540C4_nt3v15Ev");}
void  S1540C4_nt ::v16(){vfunc_called(this, "_ZN10S1540C4_nt3v16Ev");}
void  S1540C4_nt ::v17(){vfunc_called(this, "_ZN10S1540C4_nt3v17Ev");}
void  S1540C4_nt ::v18(){vfunc_called(this, "_ZN10S1540C4_nt3v18Ev");}
void  S1540C4_nt ::v19(){vfunc_called(this, "_ZN10S1540C4_nt3v19Ev");}
void  S1540C4_nt ::v20(){vfunc_called(this, "_ZN10S1540C4_nt3v20Ev");}
void  S1540C4_nt ::v21(){vfunc_called(this, "_ZN10S1540C4_nt3v21Ev");}
void  S1540C4_nt ::v22(){vfunc_called(this, "_ZN10S1540C4_nt3v22Ev");}
void  S1540C4_nt ::v23(){vfunc_called(this, "_ZN10S1540C4_nt3v23Ev");}
void  S1540C4_nt ::v24(){vfunc_called(this, "_ZN10S1540C4_nt3v24Ev");}
void  S1540C4_nt ::v25(){vfunc_called(this, "_ZN10S1540C4_nt3v25Ev");}
void  S1540C4_nt ::v26(){vfunc_called(this, "_ZN10S1540C4_nt3v26Ev");}
void  S1540C4_nt ::v27(){vfunc_called(this, "_ZN10S1540C4_nt3v27Ev");}
void  S1540C4_nt ::v28(){vfunc_called(this, "_ZN10S1540C4_nt3v28Ev");}
void  S1540C4_nt ::v29(){vfunc_called(this, "_ZN10S1540C4_nt3v29Ev");}
void  S1540C4_nt ::v30(){vfunc_called(this, "_ZN10S1540C4_nt3v30Ev");}
void  S1540C4_nt ::v31(){vfunc_called(this, "_ZN10S1540C4_nt3v31Ev");}
void  S1540C4_nt ::v32(){vfunc_called(this, "_ZN10S1540C4_nt3v32Ev");}
void  S1540C4_nt ::v33(){vfunc_called(this, "_ZN10S1540C4_nt3v33Ev");}
void  S1540C4_nt ::v34(){vfunc_called(this, "_ZN10S1540C4_nt3v34Ev");}
void  S1540C4_nt ::v35(){vfunc_called(this, "_ZN10S1540C4_nt3v35Ev");}
void  S1540C4_nt ::v36(){vfunc_called(this, "_ZN10S1540C4_nt3v36Ev");}
void  S1540C4_nt ::v37(){vfunc_called(this, "_ZN10S1540C4_nt3v37Ev");}
void  S1540C4_nt ::v38(){vfunc_called(this, "_ZN10S1540C4_nt3v38Ev");}
void  S1540C4_nt ::v39(){vfunc_called(this, "_ZN10S1540C4_nt3v39Ev");}
void  S1540C4_nt ::v40(){vfunc_called(this, "_ZN10S1540C4_nt3v40Ev");}
void  S1540C4_nt ::v41(){vfunc_called(this, "_ZN10S1540C4_nt3v41Ev");}
void  S1540C4_nt ::v42(){vfunc_called(this, "_ZN10S1540C4_nt3v42Ev");}
void  S1540C4_nt ::v43(){vfunc_called(this, "_ZN10S1540C4_nt3v43Ev");}
void  S1540C4_nt ::v44(){vfunc_called(this, "_ZN10S1540C4_nt3v44Ev");}
void  S1540C4_nt ::v45(){vfunc_called(this, "_ZN10S1540C4_nt3v45Ev");}
void  S1540C4_nt ::v46(){vfunc_called(this, "_ZN10S1540C4_nt3v46Ev");}
void  S1540C4_nt ::v47(){vfunc_called(this, "_ZN10S1540C4_nt3v47Ev");}
void  S1540C4_nt ::v48(){vfunc_called(this, "_ZN10S1540C4_nt3v48Ev");}
void  S1540C4_nt ::v49(){vfunc_called(this, "_ZN10S1540C4_nt3v49Ev");}
void  S1540C4_nt ::v50(){vfunc_called(this, "_ZN10S1540C4_nt3v50Ev");}
void  S1540C4_nt ::v51(){vfunc_called(this, "_ZN10S1540C4_nt3v51Ev");}
void  S1540C4_nt ::v52(){vfunc_called(this, "_ZN10S1540C4_nt3v52Ev");}
void  S1540C4_nt ::v53(){vfunc_called(this, "_ZN10S1540C4_nt3v53Ev");}
void  S1540C4_nt ::v54(){vfunc_called(this, "_ZN10S1540C4_nt3v54Ev");}
void  S1540C4_nt ::v55(){vfunc_called(this, "_ZN10S1540C4_nt3v55Ev");}
void  S1540C4_nt ::v56(){vfunc_called(this, "_ZN10S1540C4_nt3v56Ev");}
void  S1540C4_nt ::v57(){vfunc_called(this, "_ZN10S1540C4_nt3v57Ev");}
void  S1540C4_nt ::v58(){vfunc_called(this, "_ZN10S1540C4_nt3v58Ev");}
void  S1540C4_nt ::v59(){vfunc_called(this, "_ZN10S1540C4_nt3v59Ev");}
void  S1540C4_nt ::v60(){vfunc_called(this, "_ZN10S1540C4_nt3v60Ev");}
void  S1540C4_nt ::v61(){vfunc_called(this, "_ZN10S1540C4_nt3v61Ev");}
void  S1540C4_nt ::v62(){vfunc_called(this, "_ZN10S1540C4_nt3v62Ev");}
void  S1540C4_nt ::v63(){vfunc_called(this, "_ZN10S1540C4_nt3v63Ev");}
void  S1540C4_nt ::v64(){vfunc_called(this, "_ZN10S1540C4_nt3v64Ev");}
void  S1540C4_nt ::v65(){vfunc_called(this, "_ZN10S1540C4_nt3v65Ev");}
void  S1540C4_nt ::v66(){vfunc_called(this, "_ZN10S1540C4_nt3v66Ev");}
void  S1540C4_nt ::v67(){vfunc_called(this, "_ZN10S1540C4_nt3v67Ev");}
void  S1540C4_nt ::v68(){vfunc_called(this, "_ZN10S1540C4_nt3v68Ev");}
void  S1540C4_nt ::v69(){vfunc_called(this, "_ZN10S1540C4_nt3v69Ev");}
void  S1540C4_nt ::v70(){vfunc_called(this, "_ZN10S1540C4_nt3v70Ev");}
S1540C4_nt ::S1540C4_nt(){ note_ctor("S1540C4_nt", this);} // tgen

//skip512 S1540C4_nt

#else // __cplusplus

extern void _ZN10S1540C4_ntC1Ev();
extern void _ZN10S1540C4_ntD1Ev();
Name_Map name_map_S1540C4_nt[] = {
  NSPAIR(_ZN10S1540C4_ntC1Ev),
  NSPAIR(_ZN10S1540C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S1540C4_nt[];
extern void _ZN10S1540C4_ntD1Ev();
extern void _ZN10S1540C4_ntD0Ev();
extern void _ZN10S1540C4_nt2v7Ev();
extern void _ZN10S1540C4_nt2v8Ev();
extern void _ZN10S1540C4_nt2v9Ev();
extern void _ZN10S1540C4_nt3v10Ev();
extern void _ZN10S1540C4_nt3v11Ev();
extern void _ZN10S1540C4_nt3v12Ev();
extern void _ZN10S1540C4_nt3v13Ev();
extern void _ZN10S1540C4_nt3v14Ev();
extern void _ZN10S1540C4_nt3v15Ev();
extern void _ZN10S1540C4_nt3v16Ev();
extern void _ZN10S1540C4_nt3v17Ev();
extern void _ZN10S1540C4_nt3v18Ev();
extern void _ZN10S1540C4_nt3v19Ev();
extern void _ZN10S1540C4_nt3v20Ev();
extern void _ZN10S1540C4_nt3v21Ev();
extern void _ZN10S1540C4_nt3v22Ev();
extern void _ZN10S1540C4_nt3v23Ev();
extern void _ZN10S1540C4_nt3v24Ev();
extern void _ZN10S1540C4_nt3v25Ev();
extern void _ZN10S1540C4_nt3v26Ev();
extern void _ZN10S1540C4_nt3v27Ev();
extern void _ZN10S1540C4_nt3v28Ev();
extern void _ZN10S1540C4_nt3v29Ev();
extern void _ZN10S1540C4_nt3v30Ev();
extern void _ZN10S1540C4_nt3v31Ev();
extern void _ZN10S1540C4_nt3v32Ev();
extern void _ZN10S1540C4_nt3v33Ev();
extern void _ZN10S1540C4_nt3v34Ev();
extern void _ZN10S1540C4_nt3v35Ev();
extern void _ZN10S1540C4_nt3v36Ev();
extern void _ZN10S1540C4_nt3v37Ev();
extern void _ZN10S1540C4_nt3v38Ev();
extern void _ZN10S1540C4_nt3v39Ev();
extern void _ZN10S1540C4_nt3v40Ev();
extern void _ZN10S1540C4_nt3v41Ev();
extern void _ZN10S1540C4_nt3v42Ev();
extern void _ZN10S1540C4_nt3v43Ev();
extern void _ZN10S1540C4_nt3v44Ev();
extern void _ZN10S1540C4_nt3v45Ev();
extern void _ZN10S1540C4_nt3v46Ev();
extern void _ZN10S1540C4_nt3v47Ev();
extern void _ZN10S1540C4_nt3v48Ev();
extern void _ZN10S1540C4_nt3v49Ev();
extern void _ZN10S1540C4_nt3v50Ev();
extern void _ZN10S1540C4_nt3v51Ev();
extern void _ZN10S1540C4_nt3v52Ev();
extern void _ZN10S1540C4_nt3v53Ev();
extern void _ZN10S1540C4_nt3v54Ev();
extern void _ZN10S1540C4_nt3v55Ev();
extern void _ZN10S1540C4_nt3v56Ev();
extern void _ZN10S1540C4_nt3v57Ev();
extern void _ZN10S1540C4_nt3v58Ev();
extern void _ZN10S1540C4_nt3v59Ev();
extern void _ZN10S1540C4_nt3v60Ev();
extern void _ZN10S1540C4_nt3v61Ev();
extern void _ZN10S1540C4_nt3v62Ev();
extern void _ZN10S1540C4_nt3v63Ev();
extern void _ZN10S1540C4_nt3v64Ev();
extern void _ZN10S1540C4_nt3v65Ev();
extern void _ZN10S1540C4_nt3v66Ev();
extern void _ZN10S1540C4_nt3v67Ev();
extern void _ZN10S1540C4_nt3v68Ev();
extern void _ZN10S1540C4_nt3v69Ev();
extern void _ZN10S1540C4_nt3v70Ev();
static  VTBL_ENTRY vtc_S1540C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1540C4_nt[0]),
  (VTBL_ENTRY)&_ZN10S1540C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v70Ev,
};
extern VTBL_ENTRY _ZTI10S1540C4_nt[];
VTBL_ENTRY *P__ZTI10S1540C4_nt = _ZTI10S1540C4_nt; 
extern  VTBL_ENTRY _ZTV10S1540C4_nt[];
Class_Descriptor cd_S1540C4_nt = {  "S1540C4_nt", // class name
  0,0,//no base classes
  &(vtc_S1540C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI10S1540C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S1540C4_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  S1540C8_nt  {
  void *s1540c8f0;
  int s1540c8f1[2];
  void  mf1540c8(); // _ZN10S1540C8_nt8mf1540c8Ev
};
//SIG(-1 S1540C8_nt) C1{ m Fp Fi[2]}


void  S1540C8_nt ::mf1540c8(){}

//skip512 S1540C8_nt

#else // __cplusplus

Class_Descriptor cd_S1540C8_nt = {  "S1540C8_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  S1540C7_nt  : S1540C8_nt {
};
//SIG(-1 S1540C7_nt) C1{ BC2{ m Fp Fi[2]}}



//skip512 S1540C7_nt

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
static Base_Class bases_S1540C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C7_nt = {  "S1540C7_nt", // class name
  bases_S1540C7_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  S1540C6_nt  : S1540C7_nt {
};
//SIG(-1 S1540C6_nt) C1{ BC2{ BC3{ m Fp Fi[2]}}}



//skip512 S1540C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
extern Class_Descriptor cd_S1540C7_nt;
static Base_Class bases_S1540C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1540C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S1540C9_nt  {
  int s1540c9f0;
  void  mf1540c9(); // _ZN10S1540C9_nt8mf1540c9Ev
};
//SIG(-1 S1540C9_nt) C1{ m Fi}


void  S1540C9_nt ::mf1540c9(){}

//skip512 S1540C9_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S1540C9_nt[];
VTBL_ENTRY *P__ZTI10S1540C9_nt = _ZTI10S1540C9_nt; 
Class_Descriptor cd_S1540C9_nt = {  "S1540C9_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1540C9_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  S1540C13  : S1540C8_nt {
};
//SIG(-1 S1540C13) C1{ BC2{ m Fp Fi[2]}}



static void Test_S1540C13()
{
  extern Class_Descriptor cd_S1540C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C13, buf);
    S1540C13 &lv = *(new (buf) S1540C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C13)");
    check_base_class_offset(lv, (S1540C8_nt*), 0, "S1540C13");
    test_class_info(&lv, &cd_S1540C13);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C13(Test_S1540C13, "S1540C13", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
static Base_Class bases_S1540C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C13 = {  "S1540C13", // class name
  bases_S1540C13, 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  S1540C12  : S1540C13 {
};
//SIG(-1 S1540C12) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1540C12()
{
  extern Class_Descriptor cd_S1540C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C12, buf);
    S1540C12 &lv = *(new (buf) S1540C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C12)");
    check_base_class_offset(lv, (S1540C8_nt*)(S1540C13*), 0, "S1540C12");
    check_base_class_offset(lv, (S1540C13*), 0, "S1540C12");
    test_class_info(&lv, &cd_S1540C12);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C12(Test_S1540C12, "S1540C12", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
extern Class_Descriptor cd_S1540C13;
static Base_Class bases_S1540C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1540C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C12 = {  "S1540C12", // class name
  bases_S1540C12, 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  S1540C14_nt  {
  int s1540c14f0[3];
  void  mf1540c14(); // _ZN11S1540C14_nt9mf1540c14Ev
};
//SIG(-1 S1540C14_nt) C1{ m Fi[3]}


void  S1540C14_nt ::mf1540c14(){}

//skip512 S1540C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S1540C19()
{
  extern Class_Descriptor cd_S1540C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C19, buf);
    S1540C19 &lv = *(new (buf) S1540C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C19)");
    check_base_class_offset(lv, (S1540C8_nt*), 0, "S1540C19");
    test_class_info(&lv, &cd_S1540C19);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C19(Test_S1540C19, "S1540C19", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
static Base_Class bases_S1540C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C19 = {  "S1540C19", // class name
  bases_S1540C19, 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  S1540C18  : S1540C19 {
};
//SIG(-1 S1540C18) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1540C18()
{
  extern Class_Descriptor cd_S1540C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C18, buf);
    S1540C18 &lv = *(new (buf) S1540C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C18)");
    check_base_class_offset(lv, (S1540C8_nt*)(S1540C19*), 0, "S1540C18");
    check_base_class_offset(lv, (S1540C19*), 0, "S1540C18");
    test_class_info(&lv, &cd_S1540C18);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C18(Test_S1540C18, "S1540C18", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
extern Class_Descriptor cd_S1540C19;
static Base_Class bases_S1540C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1540C19,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C18 = {  "S1540C18", // class name
  bases_S1540C18, 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  S1540C3_nt  : S1540C4_nt {
  ::S1540C6_nt s1540c3f0;
  ::S1540C6_nt s1540c3f1;
  ::S1540C9_nt s1540c3f2;
  int s1540c3f3;
  char s1540c3f4[4];
  void *s1540c3f5[2];
  ::S1540C6_nt s1540c3f6;
  unsigned int s1540c3f7:1;
  unsigned int s1540c3f8:1;
  unsigned int s1540c3f9:1;
  unsigned int s1540c3f10:1;
  unsigned int s1540c3f11:1;
  unsigned int s1540c3f12:1;
  unsigned int s1540c3f13:1;
  unsigned int s1540c3f14:1;
  unsigned int s1540c3f15:1;
  unsigned int s1540c3f16:1;
  unsigned int s1540c3f17:1;
  unsigned int s1540c3f18:1;
  unsigned int s1540c3f19:1;
  unsigned int s1540c3f20:1;
  unsigned int s1540c3f21:1;
  unsigned int s1540c3f22:1;
  unsigned int s1540c3f23:1;
  unsigned int s1540c3f24:1;
  unsigned int s1540c3f25:1;
  unsigned int s1540c3f26:1;
  unsigned int s1540c3f27:1;
  unsigned int s1540c3f28:1;
  unsigned int s1540c3f29:1;
  unsigned int s1540c3f30:1;
  unsigned int s1540c3f31:1;
  unsigned int s1540c3f32:1;
  unsigned int s1540c3f33:1;
  unsigned int s1540c3f34:1;
  unsigned int s1540c3f35:1;
  unsigned int s1540c3f36:1;
  unsigned int s1540c3f37:1;
  unsigned int s1540c3f38:1;
  unsigned int s1540c3f39:1;
  unsigned int s1540c3f40:1;
  unsigned int s1540c3f41:1;
  unsigned int s1540c3f42:1;
  unsigned int s1540c3f43:1;
  unsigned int s1540c3f44:1;
  unsigned int s1540c3f45:1;
  unsigned int s1540c3f46:1;
  unsigned int s1540c3f47:1;
  unsigned int s1540c3f48:1;
  unsigned int s1540c3f49:1;
  unsigned int s1540c3f50:1;
  unsigned int s1540c3f51:1;
  unsigned int s1540c3f52:1;
  unsigned int s1540c3f53:1;
  unsigned int s1540c3f54:1;
  unsigned int s1540c3f55:1;
  unsigned int s1540c3f56:1;
  unsigned int s1540c3f57:1;
  unsigned int s1540c3f58:1;
  unsigned int s1540c3f59:1;
  unsigned int s1540c3f60:1;
  unsigned int s1540c3f61:1;
  unsigned int s1540c3f62:1;
  unsigned int s1540c3f63:1;
  unsigned int s1540c3f64:1;
  unsigned int s1540c3f65:1;
  unsigned int s1540c3f66:1;
  unsigned int s1540c3f67:1;
  unsigned int s1540c3f68:1;
  unsigned int s1540c3f69:1;
  unsigned int s1540c3f70:1;
  unsigned int s1540c3f71:1;
  unsigned int s1540c3f72:1;
  unsigned int s1540c3f73:1;
  unsigned int s1540c3f74:1;
  unsigned int s1540c3f75:1;
  unsigned int s1540c3f76:1;
  unsigned int s1540c3f77:1;
  unsigned int s1540c3f78:1;
  unsigned int s1540c3f79:1;
  unsigned int s1540c3f80:1;
  unsigned int s1540c3f81:1;
  unsigned int s1540c3f82:1;
  unsigned int s1540c3f83:1;
  int s1540c3f84[5];
  void *s1540c3f85[2];
  int s1540c3f86[3];
  ::S1540C5_nt s1540c3f87;
  ::S1540C5_nt s1540c3f88;
  ::S1540C5_nt s1540c3f89;
  ::S1540C12 s1540c3f90;
  ::S1540C12 s1540c3f91;
  int s1540c3f92;
  void *s1540c3f93[2];
  ::S1540C14_nt s1540c3f94;
  ::S1540C14_nt s1540c3f95;
  ::S1540C14_nt s1540c3f96;
  ::S1540C14_nt s1540c3f97;
  void *s1540c3f98;
  ::S1540C5_nt s1540c3f99;
  ::S1540C12 s1540c3f100;
  ::S1540C14_nt s1540c3f101;
  ::S1540C14_nt s1540c3f102;
  int s1540c3f103;
  ::S1540C14_nt s1540c3f104;
  ::S1540C14_nt s1540c3f105;
  void *s1540c3f106;
  int s1540c3f107;
  char s1540c3f108;
  ::S1540C14_nt s1540c3f109;
  ::S1540C14_nt s1540c3f110;
  void *s1540c3f111;
  int s1540c3f112;
  void *s1540c3f113;
  ::S1540C12 s1540c3f114;
  ::S1540C18 s1540c3f115;
  ::S1540C18 s1540c3f116;
  virtual  ~S1540C3_nt(); // _ZN10S1540C3_ntD1Ev
  virtual void  v71(); // _ZN10S1540C3_nt3v71Ev
  virtual void  v72(); // _ZN10S1540C3_nt3v72Ev
  virtual void  v73(); // _ZN10S1540C3_nt3v73Ev
  virtual void  v74(); // _ZN10S1540C3_nt3v74Ev
  virtual void  v75(); // _ZN10S1540C3_nt3v75Ev
  virtual void  v76(); // _ZN10S1540C3_nt3v76Ev
  virtual void  v77(); // _ZN10S1540C3_nt3v77Ev
  virtual void  v78(); // _ZN10S1540C3_nt3v78Ev
  virtual void  v79(); // _ZN10S1540C3_nt3v79Ev
  virtual void  v80(); // _ZN10S1540C3_nt3v80Ev
  virtual void  v81(); // _ZN10S1540C3_nt3v81Ev
  virtual void  v82(); // _ZN10S1540C3_nt3v82Ev
  virtual void  v83(); // _ZN10S1540C3_nt3v83Ev
  virtual void  v84(); // _ZN10S1540C3_nt3v84Ev
  virtual void  v85(); // _ZN10S1540C3_nt3v85Ev
  virtual void  v86(); // _ZN10S1540C3_nt3v86Ev
  virtual void  v87(); // _ZN10S1540C3_nt3v87Ev
  virtual void  v88(); // _ZN10S1540C3_nt3v88Ev
  virtual void  v89(); // _ZN10S1540C3_nt3v89Ev
  virtual void  v90(); // _ZN10S1540C3_nt3v90Ev
  virtual void  v91(); // _ZN10S1540C3_nt3v91Ev
  virtual void  v92(); // _ZN10S1540C3_nt3v92Ev
  virtual void  v93(); // _ZN10S1540C3_nt3v93Ev
  virtual void  v94(); // _ZN10S1540C3_nt3v94Ev
  virtual void  v95(); // _ZN10S1540C3_nt3v95Ev
  virtual void  v96(); // _ZN10S1540C3_nt3v96Ev
  virtual void  v97(); // _ZN10S1540C3_nt3v97Ev
  virtual void  v98(); // _ZN10S1540C3_nt3v98Ev
  virtual void  v99(); // _ZN10S1540C3_nt3v99Ev
  virtual void  v100(); // _ZN10S1540C3_nt4v100Ev
  virtual void  v101(); // _ZN10S1540C3_nt4v101Ev
  virtual void  v102(); // _ZN10S1540C3_nt4v102Ev
  virtual void  v103(); // _ZN10S1540C3_nt4v103Ev
  virtual void  v104(); // _ZN10S1540C3_nt4v104Ev
  virtual void  v105(); // _ZN10S1540C3_nt4v105Ev
  virtual void  v106(); // _ZN10S1540C3_nt4v106Ev
  virtual void  v107(); // _ZN10S1540C3_nt4v107Ev
  virtual void  v108(); // _ZN10S1540C3_nt4v108Ev
  virtual void  v109(); // _ZN10S1540C3_nt4v109Ev
  virtual void  v110(); // _ZN10S1540C3_nt4v110Ev
  virtual void  v111(); // _ZN10S1540C3_nt4v111Ev
  virtual void  v112(); // _ZN10S1540C3_nt4v112Ev
  virtual void  v113(); // _ZN10S1540C3_nt4v113Ev
  virtual void  v114(); // _ZN10S1540C3_nt4v114Ev
  virtual void  v115(); // _ZN10S1540C3_nt4v115Ev
  virtual void  v116(); // _ZN10S1540C3_nt4v116Ev
  virtual void  v117(); // _ZN10S1540C3_nt4v117Ev
  virtual void  v118(); // _ZN10S1540C3_nt4v118Ev
  virtual void  v119(); // _ZN10S1540C3_nt4v119Ev
  virtual void  v120(); // _ZN10S1540C3_nt4v120Ev
  virtual void  v121(); // _ZN10S1540C3_nt4v121Ev
  virtual void  v122(); // _ZN10S1540C3_nt4v122Ev
  virtual void  v123(); // _ZN10S1540C3_nt4v123Ev
  virtual void  v124(); // _ZN10S1540C3_nt4v124Ev
  virtual void  v125(); // _ZN10S1540C3_nt4v125Ev
  virtual void  v126(); // _ZN10S1540C3_nt4v126Ev
  virtual void  v127(); // _ZN10S1540C3_nt4v127Ev
  virtual void  v128(); // _ZN10S1540C3_nt4v128Ev
  virtual void  v129(); // _ZN10S1540C3_nt4v129Ev
  virtual void  v130(); // _ZN10S1540C3_nt4v130Ev
  virtual void  v131(); // _ZN10S1540C3_nt4v131Ev
  virtual void  v132(); // _ZN10S1540C3_nt4v132Ev
  virtual void  v133(); // _ZN10S1540C3_nt4v133Ev
  virtual void  v134(); // _ZN10S1540C3_nt4v134Ev
  virtual void  v135(); // _ZN10S1540C3_nt4v135Ev
  virtual void  v136(); // _ZN10S1540C3_nt4v136Ev
  virtual void  v137(); // _ZN10S1540C3_nt4v137Ev
  virtual void  v138(); // _ZN10S1540C3_nt4v138Ev
  virtual void  v139(); // _ZN10S1540C3_nt4v139Ev
  virtual void  v140(); // _ZN10S1540C3_nt4v140Ev
  virtual void  v141(); // _ZN10S1540C3_nt4v141Ev
  virtual void  v142(); // _ZN10S1540C3_nt4v142Ev
  virtual void  v143(); // _ZN10S1540C3_nt4v143Ev
  virtual void  v144(); // _ZN10S1540C3_nt4v144Ev
  virtual void  v145(); // _ZN10S1540C3_nt4v145Ev
  virtual void  v146(); // _ZN10S1540C3_nt4v146Ev
  virtual void  v147(); // _ZN10S1540C3_nt4v147Ev
  virtual void  v148(); // _ZN10S1540C3_nt4v148Ev
  virtual void  v149(); // _ZN10S1540C3_nt4v149Ev
  virtual void  v150(); // _ZN10S1540C3_nt4v150Ev
  virtual void  v151(); // _ZN10S1540C3_nt4v151Ev
  virtual void  v152(); // _ZN10S1540C3_nt4v152Ev
  virtual void  v153(); // _ZN10S1540C3_nt4v153Ev
  virtual void  v154(); // _ZN10S1540C3_nt4v154Ev
  virtual void  v155(); // _ZN10S1540C3_nt4v155Ev
  virtual void  v156(); // _ZN10S1540C3_nt4v156Ev
  virtual void  v157(); // _ZN10S1540C3_nt4v157Ev
  virtual void  v158(); // _ZN10S1540C3_nt4v158Ev
  virtual void  v159(); // _ZN10S1540C3_nt4v159Ev
  virtual void  v160(); // _ZN10S1540C3_nt4v160Ev
  virtual void  v161(); // _ZN10S1540C3_nt4v161Ev
  virtual void  v162(); // _ZN10S1540C3_nt4v162Ev
  virtual void  v163(); // _ZN10S1540C3_nt4v163Ev
  virtual void  v164(); // _ZN10S1540C3_nt4v164Ev
  virtual void  v165(); // _ZN10S1540C3_nt4v165Ev
  virtual void  v166(); // _ZN10S1540C3_nt4v166Ev
  virtual void  v167(); // _ZN10S1540C3_nt4v167Ev
  virtual void  v168(); // _ZN10S1540C3_nt4v168Ev
  virtual void  v169(); // _ZN10S1540C3_nt4v169Ev
  virtual void  v170(); // _ZN10S1540C3_nt4v170Ev
  virtual void  v171(); // _ZN10S1540C3_nt4v171Ev
  virtual void  v172(); // _ZN10S1540C3_nt4v172Ev
  virtual void  v173(); // _ZN10S1540C3_nt4v173Ev
  virtual void  v174(); // _ZN10S1540C3_nt4v174Ev
  virtual void  v175(); // _ZN10S1540C3_nt4v175Ev
  virtual void  v176(); // _ZN10S1540C3_nt4v176Ev
  virtual void  v177(); // _ZN10S1540C3_nt4v177Ev
  virtual void  v178(); // _ZN10S1540C3_nt4v178Ev
  virtual void  v179(); // _ZN10S1540C3_nt4v179Ev
  virtual void  v180(); // _ZN10S1540C3_nt4v180Ev
  virtual void  v181(); // _ZN10S1540C3_nt4v181Ev
  virtual void  v182(); // _ZN10S1540C3_nt4v182Ev
  virtual void  v183(); // _ZN10S1540C3_nt4v183Ev
  virtual void  v184(); // _ZN10S1540C3_nt4v184Ev
  virtual void  v185(); // _ZN10S1540C3_nt4v185Ev
  virtual void  v186(); // _ZN10S1540C3_nt4v186Ev
  virtual void  v187(); // _ZN10S1540C3_nt4v187Ev
  virtual void  v188(); // _ZN10S1540C3_nt4v188Ev
  virtual void  v189(); // _ZN10S1540C3_nt4v189Ev
  virtual void  v190(); // _ZN10S1540C3_nt4v190Ev
  virtual void  v191(); // _ZN10S1540C3_nt4v191Ev
  virtual void  v192(); // _ZN10S1540C3_nt4v192Ev
  virtual void  v193(); // _ZN10S1540C3_nt4v193Ev
  virtual void  v194(); // _ZN10S1540C3_nt4v194Ev
  virtual void  v195(); // _ZN10S1540C3_nt4v195Ev
  virtual void  v196(); // _ZN10S1540C3_nt4v196Ev
  virtual void  v197(); // _ZN10S1540C3_nt4v197Ev
  virtual void  v198(); // _ZN10S1540C3_nt4v198Ev
  virtual void  v199(); // _ZN10S1540C3_nt4v199Ev
  virtual void  v200(); // _ZN10S1540C3_nt4v200Ev
  virtual void  v201(); // _ZN10S1540C3_nt4v201Ev
  virtual void  v202(); // _ZN10S1540C3_nt4v202Ev
  virtual void  v203(); // _ZN10S1540C3_nt4v203Ev
  virtual void  v204(); // _ZN10S1540C3_nt4v204Ev
  virtual void  v205(); // _ZN10S1540C3_nt4v205Ev
  virtual void  v206(); // _ZN10S1540C3_nt4v206Ev
  virtual void  v207(); // _ZN10S1540C3_nt4v207Ev
  virtual void  v208(); // _ZN10S1540C3_nt4v208Ev
  virtual void  v209(); // _ZN10S1540C3_nt4v209Ev
  virtual void  v210(); // _ZN10S1540C3_nt4v210Ev
  virtual void  v211(); // _ZN10S1540C3_nt4v211Ev
  virtual void  v212(); // _ZN10S1540C3_nt4v212Ev
  virtual void  v213(); // _ZN10S1540C3_nt4v213Ev
  S1540C3_nt(); // tgen
};
//SIG(-1 S1540C3_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}


 S1540C3_nt ::~S1540C3_nt(){ note_dtor("S1540C3_nt", this);}
void  S1540C3_nt ::v71(){vfunc_called(this, "_ZN10S1540C3_nt3v71Ev");}
void  S1540C3_nt ::v72(){vfunc_called(this, "_ZN10S1540C3_nt3v72Ev");}
void  S1540C3_nt ::v73(){vfunc_called(this, "_ZN10S1540C3_nt3v73Ev");}
void  S1540C3_nt ::v74(){vfunc_called(this, "_ZN10S1540C3_nt3v74Ev");}
void  S1540C3_nt ::v75(){vfunc_called(this, "_ZN10S1540C3_nt3v75Ev");}
void  S1540C3_nt ::v76(){vfunc_called(this, "_ZN10S1540C3_nt3v76Ev");}
void  S1540C3_nt ::v77(){vfunc_called(this, "_ZN10S1540C3_nt3v77Ev");}
void  S1540C3_nt ::v78(){vfunc_called(this, "_ZN10S1540C3_nt3v78Ev");}
void  S1540C3_nt ::v79(){vfunc_called(this, "_ZN10S1540C3_nt3v79Ev");}
void  S1540C3_nt ::v80(){vfunc_called(this, "_ZN10S1540C3_nt3v80Ev");}
void  S1540C3_nt ::v81(){vfunc_called(this, "_ZN10S1540C3_nt3v81Ev");}
void  S1540C3_nt ::v82(){vfunc_called(this, "_ZN10S1540C3_nt3v82Ev");}
void  S1540C3_nt ::v83(){vfunc_called(this, "_ZN10S1540C3_nt3v83Ev");}
void  S1540C3_nt ::v84(){vfunc_called(this, "_ZN10S1540C3_nt3v84Ev");}
void  S1540C3_nt ::v85(){vfunc_called(this, "_ZN10S1540C3_nt3v85Ev");}
void  S1540C3_nt ::v86(){vfunc_called(this, "_ZN10S1540C3_nt3v86Ev");}
void  S1540C3_nt ::v87(){vfunc_called(this, "_ZN10S1540C3_nt3v87Ev");}
void  S1540C3_nt ::v88(){vfunc_called(this, "_ZN10S1540C3_nt3v88Ev");}
void  S1540C3_nt ::v89(){vfunc_called(this, "_ZN10S1540C3_nt3v89Ev");}
void  S1540C3_nt ::v90(){vfunc_called(this, "_ZN10S1540C3_nt3v90Ev");}
void  S1540C3_nt ::v91(){vfunc_called(this, "_ZN10S1540C3_nt3v91Ev");}
void  S1540C3_nt ::v92(){vfunc_called(this, "_ZN10S1540C3_nt3v92Ev");}
void  S1540C3_nt ::v93(){vfunc_called(this, "_ZN10S1540C3_nt3v93Ev");}
void  S1540C3_nt ::v94(){vfunc_called(this, "_ZN10S1540C3_nt3v94Ev");}
void  S1540C3_nt ::v95(){vfunc_called(this, "_ZN10S1540C3_nt3v95Ev");}
void  S1540C3_nt ::v96(){vfunc_called(this, "_ZN10S1540C3_nt3v96Ev");}
void  S1540C3_nt ::v97(){vfunc_called(this, "_ZN10S1540C3_nt3v97Ev");}
void  S1540C3_nt ::v98(){vfunc_called(this, "_ZN10S1540C3_nt3v98Ev");}
void  S1540C3_nt ::v99(){vfunc_called(this, "_ZN10S1540C3_nt3v99Ev");}
void  S1540C3_nt ::v100(){vfunc_called(this, "_ZN10S1540C3_nt4v100Ev");}
void  S1540C3_nt ::v101(){vfunc_called(this, "_ZN10S1540C3_nt4v101Ev");}
void  S1540C3_nt ::v102(){vfunc_called(this, "_ZN10S1540C3_nt4v102Ev");}
void  S1540C3_nt ::v103(){vfunc_called(this, "_ZN10S1540C3_nt4v103Ev");}
void  S1540C3_nt ::v104(){vfunc_called(this, "_ZN10S1540C3_nt4v104Ev");}
void  S1540C3_nt ::v105(){vfunc_called(this, "_ZN10S1540C3_nt4v105Ev");}
void  S1540C3_nt ::v106(){vfunc_called(this, "_ZN10S1540C3_nt4v106Ev");}
void  S1540C3_nt ::v107(){vfunc_called(this, "_ZN10S1540C3_nt4v107Ev");}
void  S1540C3_nt ::v108(){vfunc_called(this, "_ZN10S1540C3_nt4v108Ev");}
void  S1540C3_nt ::v109(){vfunc_called(this, "_ZN10S1540C3_nt4v109Ev");}
void  S1540C3_nt ::v110(){vfunc_called(this, "_ZN10S1540C3_nt4v110Ev");}
void  S1540C3_nt ::v111(){vfunc_called(this, "_ZN10S1540C3_nt4v111Ev");}
void  S1540C3_nt ::v112(){vfunc_called(this, "_ZN10S1540C3_nt4v112Ev");}
void  S1540C3_nt ::v113(){vfunc_called(this, "_ZN10S1540C3_nt4v113Ev");}
void  S1540C3_nt ::v114(){vfunc_called(this, "_ZN10S1540C3_nt4v114Ev");}
void  S1540C3_nt ::v115(){vfunc_called(this, "_ZN10S1540C3_nt4v115Ev");}
void  S1540C3_nt ::v116(){vfunc_called(this, "_ZN10S1540C3_nt4v116Ev");}
void  S1540C3_nt ::v117(){vfunc_called(this, "_ZN10S1540C3_nt4v117Ev");}
void  S1540C3_nt ::v118(){vfunc_called(this, "_ZN10S1540C3_nt4v118Ev");}
void  S1540C3_nt ::v119(){vfunc_called(this, "_ZN10S1540C3_nt4v119Ev");}
void  S1540C3_nt ::v120(){vfunc_called(this, "_ZN10S1540C3_nt4v120Ev");}
void  S1540C3_nt ::v121(){vfunc_called(this, "_ZN10S1540C3_nt4v121Ev");}
void  S1540C3_nt ::v122(){vfunc_called(this, "_ZN10S1540C3_nt4v122Ev");}
void  S1540C3_nt ::v123(){vfunc_called(this, "_ZN10S1540C3_nt4v123Ev");}
void  S1540C3_nt ::v124(){vfunc_called(this, "_ZN10S1540C3_nt4v124Ev");}
void  S1540C3_nt ::v125(){vfunc_called(this, "_ZN10S1540C3_nt4v125Ev");}
void  S1540C3_nt ::v126(){vfunc_called(this, "_ZN10S1540C3_nt4v126Ev");}
void  S1540C3_nt ::v127(){vfunc_called(this, "_ZN10S1540C3_nt4v127Ev");}
void  S1540C3_nt ::v128(){vfunc_called(this, "_ZN10S1540C3_nt4v128Ev");}
void  S1540C3_nt ::v129(){vfunc_called(this, "_ZN10S1540C3_nt4v129Ev");}
void  S1540C3_nt ::v130(){vfunc_called(this, "_ZN10S1540C3_nt4v130Ev");}
void  S1540C3_nt ::v131(){vfunc_called(this, "_ZN10S1540C3_nt4v131Ev");}
void  S1540C3_nt ::v132(){vfunc_called(this, "_ZN10S1540C3_nt4v132Ev");}
void  S1540C3_nt ::v133(){vfunc_called(this, "_ZN10S1540C3_nt4v133Ev");}
void  S1540C3_nt ::v134(){vfunc_called(this, "_ZN10S1540C3_nt4v134Ev");}
void  S1540C3_nt ::v135(){vfunc_called(this, "_ZN10S1540C3_nt4v135Ev");}
void  S1540C3_nt ::v136(){vfunc_called(this, "_ZN10S1540C3_nt4v136Ev");}
void  S1540C3_nt ::v137(){vfunc_called(this, "_ZN10S1540C3_nt4v137Ev");}
void  S1540C3_nt ::v138(){vfunc_called(this, "_ZN10S1540C3_nt4v138Ev");}
void  S1540C3_nt ::v139(){vfunc_called(this, "_ZN10S1540C3_nt4v139Ev");}
void  S1540C3_nt ::v140(){vfunc_called(this, "_ZN10S1540C3_nt4v140Ev");}
void  S1540C3_nt ::v141(){vfunc_called(this, "_ZN10S1540C3_nt4v141Ev");}
void  S1540C3_nt ::v142(){vfunc_called(this, "_ZN10S1540C3_nt4v142Ev");}
void  S1540C3_nt ::v143(){vfunc_called(this, "_ZN10S1540C3_nt4v143Ev");}
void  S1540C3_nt ::v144(){vfunc_called(this, "_ZN10S1540C3_nt4v144Ev");}
void  S1540C3_nt ::v145(){vfunc_called(this, "_ZN10S1540C3_nt4v145Ev");}
void  S1540C3_nt ::v146(){vfunc_called(this, "_ZN10S1540C3_nt4v146Ev");}
void  S1540C3_nt ::v147(){vfunc_called(this, "_ZN10S1540C3_nt4v147Ev");}
void  S1540C3_nt ::v148(){vfunc_called(this, "_ZN10S1540C3_nt4v148Ev");}
void  S1540C3_nt ::v149(){vfunc_called(this, "_ZN10S1540C3_nt4v149Ev");}
void  S1540C3_nt ::v150(){vfunc_called(this, "_ZN10S1540C3_nt4v150Ev");}
void  S1540C3_nt ::v151(){vfunc_called(this, "_ZN10S1540C3_nt4v151Ev");}
void  S1540C3_nt ::v152(){vfunc_called(this, "_ZN10S1540C3_nt4v152Ev");}
void  S1540C3_nt ::v153(){vfunc_called(this, "_ZN10S1540C3_nt4v153Ev");}
void  S1540C3_nt ::v154(){vfunc_called(this, "_ZN10S1540C3_nt4v154Ev");}
void  S1540C3_nt ::v155(){vfunc_called(this, "_ZN10S1540C3_nt4v155Ev");}
void  S1540C3_nt ::v156(){vfunc_called(this, "_ZN10S1540C3_nt4v156Ev");}
void  S1540C3_nt ::v157(){vfunc_called(this, "_ZN10S1540C3_nt4v157Ev");}
void  S1540C3_nt ::v158(){vfunc_called(this, "_ZN10S1540C3_nt4v158Ev");}
void  S1540C3_nt ::v159(){vfunc_called(this, "_ZN10S1540C3_nt4v159Ev");}
void  S1540C3_nt ::v160(){vfunc_called(this, "_ZN10S1540C3_nt4v160Ev");}
void  S1540C3_nt ::v161(){vfunc_called(this, "_ZN10S1540C3_nt4v161Ev");}
void  S1540C3_nt ::v162(){vfunc_called(this, "_ZN10S1540C3_nt4v162Ev");}
void  S1540C3_nt ::v163(){vfunc_called(this, "_ZN10S1540C3_nt4v163Ev");}
void  S1540C3_nt ::v164(){vfunc_called(this, "_ZN10S1540C3_nt4v164Ev");}
void  S1540C3_nt ::v165(){vfunc_called(this, "_ZN10S1540C3_nt4v165Ev");}
void  S1540C3_nt ::v166(){vfunc_called(this, "_ZN10S1540C3_nt4v166Ev");}
void  S1540C3_nt ::v167(){vfunc_called(this, "_ZN10S1540C3_nt4v167Ev");}
void  S1540C3_nt ::v168(){vfunc_called(this, "_ZN10S1540C3_nt4v168Ev");}
void  S1540C3_nt ::v169(){vfunc_called(this, "_ZN10S1540C3_nt4v169Ev");}
void  S1540C3_nt ::v170(){vfunc_called(this, "_ZN10S1540C3_nt4v170Ev");}
void  S1540C3_nt ::v171(){vfunc_called(this, "_ZN10S1540C3_nt4v171Ev");}
void  S1540C3_nt ::v172(){vfunc_called(this, "_ZN10S1540C3_nt4v172Ev");}
void  S1540C3_nt ::v173(){vfunc_called(this, "_ZN10S1540C3_nt4v173Ev");}
void  S1540C3_nt ::v174(){vfunc_called(this, "_ZN10S1540C3_nt4v174Ev");}
void  S1540C3_nt ::v175(){vfunc_called(this, "_ZN10S1540C3_nt4v175Ev");}
void  S1540C3_nt ::v176(){vfunc_called(this, "_ZN10S1540C3_nt4v176Ev");}
void  S1540C3_nt ::v177(){vfunc_called(this, "_ZN10S1540C3_nt4v177Ev");}
void  S1540C3_nt ::v178(){vfunc_called(this, "_ZN10S1540C3_nt4v178Ev");}
void  S1540C3_nt ::v179(){vfunc_called(this, "_ZN10S1540C3_nt4v179Ev");}
void  S1540C3_nt ::v180(){vfunc_called(this, "_ZN10S1540C3_nt4v180Ev");}
void  S1540C3_nt ::v181(){vfunc_called(this, "_ZN10S1540C3_nt4v181Ev");}
void  S1540C3_nt ::v182(){vfunc_called(this, "_ZN10S1540C3_nt4v182Ev");}
void  S1540C3_nt ::v183(){vfunc_called(this, "_ZN10S1540C3_nt4v183Ev");}
void  S1540C3_nt ::v184(){vfunc_called(this, "_ZN10S1540C3_nt4v184Ev");}
void  S1540C3_nt ::v185(){vfunc_called(this, "_ZN10S1540C3_nt4v185Ev");}
void  S1540C3_nt ::v186(){vfunc_called(this, "_ZN10S1540C3_nt4v186Ev");}
void  S1540C3_nt ::v187(){vfunc_called(this, "_ZN10S1540C3_nt4v187Ev");}
void  S1540C3_nt ::v188(){vfunc_called(this, "_ZN10S1540C3_nt4v188Ev");}
void  S1540C3_nt ::v189(){vfunc_called(this, "_ZN10S1540C3_nt4v189Ev");}
void  S1540C3_nt ::v190(){vfunc_called(this, "_ZN10S1540C3_nt4v190Ev");}
void  S1540C3_nt ::v191(){vfunc_called(this, "_ZN10S1540C3_nt4v191Ev");}
void  S1540C3_nt ::v192(){vfunc_called(this, "_ZN10S1540C3_nt4v192Ev");}
void  S1540C3_nt ::v193(){vfunc_called(this, "_ZN10S1540C3_nt4v193Ev");}
void  S1540C3_nt ::v194(){vfunc_called(this, "_ZN10S1540C3_nt4v194Ev");}
void  S1540C3_nt ::v195(){vfunc_called(this, "_ZN10S1540C3_nt4v195Ev");}
void  S1540C3_nt ::v196(){vfunc_called(this, "_ZN10S1540C3_nt4v196Ev");}
void  S1540C3_nt ::v197(){vfunc_called(this, "_ZN10S1540C3_nt4v197Ev");}
void  S1540C3_nt ::v198(){vfunc_called(this, "_ZN10S1540C3_nt4v198Ev");}
void  S1540C3_nt ::v199(){vfunc_called(this, "_ZN10S1540C3_nt4v199Ev");}
void  S1540C3_nt ::v200(){vfunc_called(this, "_ZN10S1540C3_nt4v200Ev");}
void  S1540C3_nt ::v201(){vfunc_called(this, "_ZN10S1540C3_nt4v201Ev");}
void  S1540C3_nt ::v202(){vfunc_called(this, "_ZN10S1540C3_nt4v202Ev");}
void  S1540C3_nt ::v203(){vfunc_called(this, "_ZN10S1540C3_nt4v203Ev");}
void  S1540C3_nt ::v204(){vfunc_called(this, "_ZN10S1540C3_nt4v204Ev");}
void  S1540C3_nt ::v205(){vfunc_called(this, "_ZN10S1540C3_nt4v205Ev");}
void  S1540C3_nt ::v206(){vfunc_called(this, "_ZN10S1540C3_nt4v206Ev");}
void  S1540C3_nt ::v207(){vfunc_called(this, "_ZN10S1540C3_nt4v207Ev");}
void  S1540C3_nt ::v208(){vfunc_called(this, "_ZN10S1540C3_nt4v208Ev");}
void  S1540C3_nt ::v209(){vfunc_called(this, "_ZN10S1540C3_nt4v209Ev");}
void  S1540C3_nt ::v210(){vfunc_called(this, "_ZN10S1540C3_nt4v210Ev");}
void  S1540C3_nt ::v211(){vfunc_called(this, "_ZN10S1540C3_nt4v211Ev");}
void  S1540C3_nt ::v212(){vfunc_called(this, "_ZN10S1540C3_nt4v212Ev");}
void  S1540C3_nt ::v213(){vfunc_called(this, "_ZN10S1540C3_nt4v213Ev");}
S1540C3_nt ::S1540C3_nt(){ note_ctor("S1540C3_nt", this);} // tgen

//skip512 S1540C3_nt

#else // __cplusplus

extern void _ZN10S1540C3_ntC1Ev();
extern void _ZN10S1540C3_ntD1Ev();
Name_Map name_map_S1540C3_nt[] = {
  NSPAIR(_ZN10S1540C3_ntC1Ev),
  NSPAIR(_ZN10S1540C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1540C4_nt;
extern VTBL_ENTRY _ZTI10S1540C4_nt[];
extern  VTBL_ENTRY _ZTV10S1540C4_nt[];
static Base_Class bases_S1540C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1540C3_nt[];
extern void _ZN10S1540C3_ntD1Ev();
extern void _ZN10S1540C3_ntD0Ev();
extern void _ZN10S1540C4_nt2v7Ev();
extern void _ZN10S1540C4_nt2v8Ev();
extern void _ZN10S1540C4_nt2v9Ev();
extern void _ZN10S1540C4_nt3v10Ev();
extern void _ZN10S1540C4_nt3v11Ev();
extern void _ZN10S1540C4_nt3v12Ev();
extern void _ZN10S1540C4_nt3v13Ev();
extern void _ZN10S1540C4_nt3v14Ev();
extern void _ZN10S1540C4_nt3v15Ev();
extern void _ZN10S1540C4_nt3v16Ev();
extern void _ZN10S1540C4_nt3v17Ev();
extern void _ZN10S1540C4_nt3v18Ev();
extern void _ZN10S1540C4_nt3v19Ev();
extern void _ZN10S1540C4_nt3v20Ev();
extern void _ZN10S1540C4_nt3v21Ev();
extern void _ZN10S1540C4_nt3v22Ev();
extern void _ZN10S1540C4_nt3v23Ev();
extern void _ZN10S1540C4_nt3v24Ev();
extern void _ZN10S1540C4_nt3v25Ev();
extern void _ZN10S1540C4_nt3v26Ev();
extern void _ZN10S1540C4_nt3v27Ev();
extern void _ZN10S1540C4_nt3v28Ev();
extern void _ZN10S1540C4_nt3v29Ev();
extern void _ZN10S1540C4_nt3v30Ev();
extern void _ZN10S1540C4_nt3v31Ev();
extern void _ZN10S1540C4_nt3v32Ev();
extern void _ZN10S1540C4_nt3v33Ev();
extern void _ZN10S1540C4_nt3v34Ev();
extern void _ZN10S1540C4_nt3v35Ev();
extern void _ZN10S1540C4_nt3v36Ev();
extern void _ZN10S1540C4_nt3v37Ev();
extern void _ZN10S1540C4_nt3v38Ev();
extern void _ZN10S1540C4_nt3v39Ev();
extern void _ZN10S1540C4_nt3v40Ev();
extern void _ZN10S1540C4_nt3v41Ev();
extern void _ZN10S1540C4_nt3v42Ev();
extern void _ZN10S1540C4_nt3v43Ev();
extern void _ZN10S1540C4_nt3v44Ev();
extern void _ZN10S1540C4_nt3v45Ev();
extern void _ZN10S1540C4_nt3v46Ev();
extern void _ZN10S1540C4_nt3v47Ev();
extern void _ZN10S1540C4_nt3v48Ev();
extern void _ZN10S1540C4_nt3v49Ev();
extern void _ZN10S1540C4_nt3v50Ev();
extern void _ZN10S1540C4_nt3v51Ev();
extern void _ZN10S1540C4_nt3v52Ev();
extern void _ZN10S1540C4_nt3v53Ev();
extern void _ZN10S1540C4_nt3v54Ev();
extern void _ZN10S1540C4_nt3v55Ev();
extern void _ZN10S1540C4_nt3v56Ev();
extern void _ZN10S1540C4_nt3v57Ev();
extern void _ZN10S1540C4_nt3v58Ev();
extern void _ZN10S1540C4_nt3v59Ev();
extern void _ZN10S1540C4_nt3v60Ev();
extern void _ZN10S1540C4_nt3v61Ev();
extern void _ZN10S1540C4_nt3v62Ev();
extern void _ZN10S1540C4_nt3v63Ev();
extern void _ZN10S1540C4_nt3v64Ev();
extern void _ZN10S1540C4_nt3v65Ev();
extern void _ZN10S1540C4_nt3v66Ev();
extern void _ZN10S1540C4_nt3v67Ev();
extern void _ZN10S1540C4_nt3v68Ev();
extern void _ZN10S1540C4_nt3v69Ev();
extern void _ZN10S1540C4_nt3v70Ev();
extern void _ZN10S1540C3_nt3v71Ev();
extern void _ZN10S1540C3_nt3v72Ev();
extern void _ZN10S1540C3_nt3v73Ev();
extern void _ZN10S1540C3_nt3v74Ev();
extern void _ZN10S1540C3_nt3v75Ev();
extern void _ZN10S1540C3_nt3v76Ev();
extern void _ZN10S1540C3_nt3v77Ev();
extern void _ZN10S1540C3_nt3v78Ev();
extern void _ZN10S1540C3_nt3v79Ev();
extern void _ZN10S1540C3_nt3v80Ev();
extern void _ZN10S1540C3_nt3v81Ev();
extern void _ZN10S1540C3_nt3v82Ev();
extern void _ZN10S1540C3_nt3v83Ev();
extern void _ZN10S1540C3_nt3v84Ev();
extern void _ZN10S1540C3_nt3v85Ev();
extern void _ZN10S1540C3_nt3v86Ev();
extern void _ZN10S1540C3_nt3v87Ev();
extern void _ZN10S1540C3_nt3v88Ev();
extern void _ZN10S1540C3_nt3v89Ev();
extern void _ZN10S1540C3_nt3v90Ev();
extern void _ZN10S1540C3_nt3v91Ev();
extern void _ZN10S1540C3_nt3v92Ev();
extern void _ZN10S1540C3_nt3v93Ev();
extern void _ZN10S1540C3_nt3v94Ev();
extern void _ZN10S1540C3_nt3v95Ev();
extern void _ZN10S1540C3_nt3v96Ev();
extern void _ZN10S1540C3_nt3v97Ev();
extern void _ZN10S1540C3_nt3v98Ev();
extern void _ZN10S1540C3_nt3v99Ev();
extern void _ZN10S1540C3_nt4v100Ev();
extern void _ZN10S1540C3_nt4v101Ev();
extern void _ZN10S1540C3_nt4v102Ev();
extern void _ZN10S1540C3_nt4v103Ev();
extern void _ZN10S1540C3_nt4v104Ev();
extern void _ZN10S1540C3_nt4v105Ev();
extern void _ZN10S1540C3_nt4v106Ev();
extern void _ZN10S1540C3_nt4v107Ev();
extern void _ZN10S1540C3_nt4v108Ev();
extern void _ZN10S1540C3_nt4v109Ev();
extern void _ZN10S1540C3_nt4v110Ev();
extern void _ZN10S1540C3_nt4v111Ev();
extern void _ZN10S1540C3_nt4v112Ev();
extern void _ZN10S1540C3_nt4v113Ev();
extern void _ZN10S1540C3_nt4v114Ev();
extern void _ZN10S1540C3_nt4v115Ev();
extern void _ZN10S1540C3_nt4v116Ev();
extern void _ZN10S1540C3_nt4v117Ev();
extern void _ZN10S1540C3_nt4v118Ev();
extern void _ZN10S1540C3_nt4v119Ev();
extern void _ZN10S1540C3_nt4v120Ev();
extern void _ZN10S1540C3_nt4v121Ev();
extern void _ZN10S1540C3_nt4v122Ev();
extern void _ZN10S1540C3_nt4v123Ev();
extern void _ZN10S1540C3_nt4v124Ev();
extern void _ZN10S1540C3_nt4v125Ev();
extern void _ZN10S1540C3_nt4v126Ev();
extern void _ZN10S1540C3_nt4v127Ev();
extern void _ZN10S1540C3_nt4v128Ev();
extern void _ZN10S1540C3_nt4v129Ev();
extern void _ZN10S1540C3_nt4v130Ev();
extern void _ZN10S1540C3_nt4v131Ev();
extern void _ZN10S1540C3_nt4v132Ev();
extern void _ZN10S1540C3_nt4v133Ev();
extern void _ZN10S1540C3_nt4v134Ev();
extern void _ZN10S1540C3_nt4v135Ev();
extern void _ZN10S1540C3_nt4v136Ev();
extern void _ZN10S1540C3_nt4v137Ev();
extern void _ZN10S1540C3_nt4v138Ev();
extern void _ZN10S1540C3_nt4v139Ev();
extern void _ZN10S1540C3_nt4v140Ev();
extern void _ZN10S1540C3_nt4v141Ev();
extern void _ZN10S1540C3_nt4v142Ev();
extern void _ZN10S1540C3_nt4v143Ev();
extern void _ZN10S1540C3_nt4v144Ev();
extern void _ZN10S1540C3_nt4v145Ev();
extern void _ZN10S1540C3_nt4v146Ev();
extern void _ZN10S1540C3_nt4v147Ev();
extern void _ZN10S1540C3_nt4v148Ev();
extern void _ZN10S1540C3_nt4v149Ev();
extern void _ZN10S1540C3_nt4v150Ev();
extern void _ZN10S1540C3_nt4v151Ev();
extern void _ZN10S1540C3_nt4v152Ev();
extern void _ZN10S1540C3_nt4v153Ev();
extern void _ZN10S1540C3_nt4v154Ev();
extern void _ZN10S1540C3_nt4v155Ev();
extern void _ZN10S1540C3_nt4v156Ev();
extern void _ZN10S1540C3_nt4v157Ev();
extern void _ZN10S1540C3_nt4v158Ev();
extern void _ZN10S1540C3_nt4v159Ev();
extern void _ZN10S1540C3_nt4v160Ev();
extern void _ZN10S1540C3_nt4v161Ev();
extern void _ZN10S1540C3_nt4v162Ev();
extern void _ZN10S1540C3_nt4v163Ev();
extern void _ZN10S1540C3_nt4v164Ev();
extern void _ZN10S1540C3_nt4v165Ev();
extern void _ZN10S1540C3_nt4v166Ev();
extern void _ZN10S1540C3_nt4v167Ev();
extern void _ZN10S1540C3_nt4v168Ev();
extern void _ZN10S1540C3_nt4v169Ev();
extern void _ZN10S1540C3_nt4v170Ev();
extern void _ZN10S1540C3_nt4v171Ev();
extern void _ZN10S1540C3_nt4v172Ev();
extern void _ZN10S1540C3_nt4v173Ev();
extern void _ZN10S1540C3_nt4v174Ev();
extern void _ZN10S1540C3_nt4v175Ev();
extern void _ZN10S1540C3_nt4v176Ev();
extern void _ZN10S1540C3_nt4v177Ev();
extern void _ZN10S1540C3_nt4v178Ev();
extern void _ZN10S1540C3_nt4v179Ev();
extern void _ZN10S1540C3_nt4v180Ev();
extern void _ZN10S1540C3_nt4v181Ev();
extern void _ZN10S1540C3_nt4v182Ev();
extern void _ZN10S1540C3_nt4v183Ev();
extern void _ZN10S1540C3_nt4v184Ev();
extern void _ZN10S1540C3_nt4v185Ev();
extern void _ZN10S1540C3_nt4v186Ev();
extern void _ZN10S1540C3_nt4v187Ev();
extern void _ZN10S1540C3_nt4v188Ev();
extern void _ZN10S1540C3_nt4v189Ev();
extern void _ZN10S1540C3_nt4v190Ev();
extern void _ZN10S1540C3_nt4v191Ev();
extern void _ZN10S1540C3_nt4v192Ev();
extern void _ZN10S1540C3_nt4v193Ev();
extern void _ZN10S1540C3_nt4v194Ev();
extern void _ZN10S1540C3_nt4v195Ev();
extern void _ZN10S1540C3_nt4v196Ev();
extern void _ZN10S1540C3_nt4v197Ev();
extern void _ZN10S1540C3_nt4v198Ev();
extern void _ZN10S1540C3_nt4v199Ev();
extern void _ZN10S1540C3_nt4v200Ev();
extern void _ZN10S1540C3_nt4v201Ev();
extern void _ZN10S1540C3_nt4v202Ev();
extern void _ZN10S1540C3_nt4v203Ev();
extern void _ZN10S1540C3_nt4v204Ev();
extern void _ZN10S1540C3_nt4v205Ev();
extern void _ZN10S1540C3_nt4v206Ev();
extern void _ZN10S1540C3_nt4v207Ev();
extern void _ZN10S1540C3_nt4v208Ev();
extern void _ZN10S1540C3_nt4v209Ev();
extern void _ZN10S1540C3_nt4v210Ev();
extern void _ZN10S1540C3_nt4v211Ev();
extern void _ZN10S1540C3_nt4v212Ev();
extern void _ZN10S1540C3_nt4v213Ev();
static  VTBL_ENTRY vtc_S1540C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1540C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1540C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v213Ev,
};
extern VTBL_ENTRY _ZTI10S1540C3_nt[];
VTBL_ENTRY *P__ZTI10S1540C3_nt = _ZTI10S1540C3_nt; 
extern  VTBL_ENTRY _ZTV10S1540C3_nt[];
Class_Descriptor cd_S1540C3_nt = {  "S1540C3_nt", // class name
  bases_S1540C3_nt, 1,
  &(vtc_S1540C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(568,436), // object size
  NSPAIRA(_ZTI10S1540C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1540C3_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  S1540C23_nt  {
  ::S1540C14_nt s1540c23f0;
  ::S1540C14_nt s1540c23f1;
  char s1540c23f2;
  void  mf1540c23(); // _ZN11S1540C23_nt9mf1540c23Ev
};
//SIG(-1 S1540C23_nt) C1{ m FC2{ m Fi[3]} FC2 Fc}


void  S1540C23_nt ::mf1540c23(){}

//skip512 S1540C23_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1540C22_nt  {
  ::S1540C23_nt s1540c22f0;
  ::S1540C14_nt s1540c22f1;
  void *s1540c22f2[2];
  char s1540c22f3;
  void  mf1540c22(); // _ZN11S1540C22_nt9mf1540c22Ev
};
//SIG(-1 S1540C22_nt) C1{ m FC2{ m FC3{ m Fi[3]} FC3 Fc} FC3 Fp[2] Fc}


void  S1540C22_nt ::mf1540c22(){}

//skip512 S1540C22_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



static void Test_S1540C25()
{
  extern Class_Descriptor cd_S1540C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C25, buf);
    S1540C25 &lv = *(new (buf) S1540C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C25)");
    check_base_class_offset(lv, (S1540C8_nt*), 0, "S1540C25");
    test_class_info(&lv, &cd_S1540C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C25(Test_S1540C25, "S1540C25", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
static Base_Class bases_S1540C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C25 = {  "S1540C25", // class name
  bases_S1540C25, 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  S1540C24  : S1540C25 {
};
//SIG(-1 S1540C24) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1540C24()
{
  extern Class_Descriptor cd_S1540C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C24, buf);
    S1540C24 &lv = *(new (buf) S1540C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C24)");
    check_base_class_offset(lv, (S1540C8_nt*)(S1540C25*), 0, "S1540C24");
    check_base_class_offset(lv, (S1540C25*), 0, "S1540C24");
    test_class_info(&lv, &cd_S1540C24);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C24(Test_S1540C24, "S1540C24", ABISELECT(16,12));

#else // __cplusplus

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



static void Test_S1540C29()
{
  extern Class_Descriptor cd_S1540C29;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C29, buf);
    S1540C29 &lv = *(new (buf) S1540C29());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C29)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C29)");
    check_base_class_offset(lv, (S1540C8_nt*), 0, "S1540C29");
    test_class_info(&lv, &cd_S1540C29);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C29(Test_S1540C29, "S1540C29", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
static Base_Class bases_S1540C29[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C29 = {  "S1540C29", // class name
  bases_S1540C29, 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  S1540C28  : S1540C29 {
};
//SIG(-1 S1540C28) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S1540C28()
{
  extern Class_Descriptor cd_S1540C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S1540C28, buf);
    S1540C28 &lv = *(new (buf) S1540C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S1540C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C28)");
    check_base_class_offset(lv, (S1540C8_nt*)(S1540C29*), 0, "S1540C28");
    check_base_class_offset(lv, (S1540C29*), 0, "S1540C28");
    test_class_info(&lv, &cd_S1540C28);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C28(Test_S1540C28, "S1540C28", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
extern Class_Descriptor cd_S1540C29;
static Base_Class bases_S1540C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1540C29,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1540C28 = {  "S1540C28", // class name
  bases_S1540C28, 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  S1540C31_nt  {
  int s1540c31f0[4];
  void  mf1540c31(); // _ZN11S1540C31_nt9mf1540c31Ev
};
//SIG(-1 S1540C31_nt) C1{ m Fi[4]}


void  S1540C31_nt ::mf1540c31(){}

//skip512 S1540C31_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S1540C2_nt  : S1540C3_nt {
  unsigned int s1540c2f0:1;
  unsigned int s1540c2f1:1;
  unsigned int s1540c2f2:1;
  unsigned int s1540c2f3:1;
  unsigned int s1540c2f4:1;
  ::S1540C22_nt s1540c2f5;
  unsigned int s1540c2f6:1;
  unsigned int s1540c2f7:1;
  unsigned int s1540c2f8:1;
  unsigned int s1540c2f9:1;
  unsigned int s1540c2f10:1;
  unsigned int s1540c2f11:1;
  unsigned int s1540c2f12:1;
  unsigned int s1540c2f13:1;
  unsigned int s1540c2f14:1;
  unsigned int s1540c2f15:1;
  unsigned int s1540c2f16:1;
  unsigned int s1540c2f17:1;
  unsigned int s1540c2f18:1;
  unsigned int s1540c2f19:1;
  unsigned int s1540c2f20:1;
  unsigned int s1540c2f21:1;
  unsigned int s1540c2f22:1;
  unsigned int s1540c2f23:1;
  unsigned int s1540c2f24:1;
  unsigned int s1540c2f25:1;
  unsigned int s1540c2f26:1;
  unsigned int s1540c2f27:1;
  unsigned int s1540c2f28:1;
  unsigned int s1540c2f29:1;
  unsigned int s1540c2f30:1;
  ::S1540C24 s1540c2f31;
  ::S1540C24 s1540c2f32;
  ::S1540C24 s1540c2f33;
  ::S1540C28 s1540c2f34;
  int s1540c2f35[2];
  void *s1540c2f36[4];
  int s1540c2f37[5];
  void *s1540c2f38;
  int s1540c2f39[2];
  void *s1540c2f40[2];
  int s1540c2f41;
  ::S1540C5_nt s1540c2f42;
  ::S1540C31_nt s1540c2f43;
  void *s1540c2f44[2];
  int s1540c2f45;
  void *s1540c2f46;
  int s1540c2f47;
  virtual  ~S1540C2_nt(); // _ZN10S1540C2_ntD1Ev
  virtual void  v214(); // _ZN10S1540C2_nt4v214Ev
  virtual void  v215(); // _ZN10S1540C2_nt4v215Ev
  virtual void  v216(); // _ZN10S1540C2_nt4v216Ev
  virtual void  v217(); // _ZN10S1540C2_nt4v217Ev
  virtual void  v218(); // _ZN10S1540C2_nt4v218Ev
  virtual void  v219(); // _ZN10S1540C2_nt4v219Ev
  virtual void  v220(); // _ZN10S1540C2_nt4v220Ev
  virtual void  v221(); // _ZN10S1540C2_nt4v221Ev
  virtual void  v222(); // _ZN10S1540C2_nt4v222Ev
  virtual void  v223(); // _ZN10S1540C2_nt4v223Ev
  virtual void  v224(); // _ZN10S1540C2_nt4v224Ev
  virtual void  v225(); // _ZN10S1540C2_nt4v225Ev
  virtual void  v226(); // _ZN10S1540C2_nt4v226Ev
  virtual void  v227(); // _ZN10S1540C2_nt4v227Ev
  virtual void  v228(); // _ZN10S1540C2_nt4v228Ev
  virtual void  v229(); // _ZN10S1540C2_nt4v229Ev
  virtual void  v230(); // _ZN10S1540C2_nt4v230Ev
  virtual void  v231(); // _ZN10S1540C2_nt4v231Ev
  virtual void  v232(); // _ZN10S1540C2_nt4v232Ev
  virtual void  v233(); // _ZN10S1540C2_nt4v233Ev
  virtual void  v234(); // _ZN10S1540C2_nt4v234Ev
  virtual void  v235(); // _ZN10S1540C2_nt4v235Ev
  virtual void  v236(); // _ZN10S1540C2_nt4v236Ev
  virtual void  v237(); // _ZN10S1540C2_nt4v237Ev
  virtual void  v238(); // _ZN10S1540C2_nt4v238Ev
  virtual void  v239(); // _ZN10S1540C2_nt4v239Ev
  virtual void  v240(); // _ZN10S1540C2_nt4v240Ev
  virtual void  v241(); // _ZN10S1540C2_nt4v241Ev
  virtual void  v242(); // _ZN10S1540C2_nt4v242Ev
  virtual void  v243(); // _ZN10S1540C2_nt4v243Ev
  virtual void  v244(); // _ZN10S1540C2_nt4v244Ev
  virtual void  v245(); // _ZN10S1540C2_nt4v245Ev
  virtual void  v246(); // _ZN10S1540C2_nt4v246Ev
  virtual void  v247(); // _ZN10S1540C2_nt4v247Ev
  virtual void  v248(); // _ZN10S1540C2_nt4v248Ev
  virtual void  v249(); // _ZN10S1540C2_nt4v249Ev
  virtual void  v250(); // _ZN10S1540C2_nt4v250Ev
  S1540C2_nt(); // tgen
};
//SIG(-1 S1540C2_nt) C1{ BC2{ BC3{ vd 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 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v102 v103 v104 v105 v106 v107 v108 v109 v110 v111 v112 v113 v114 v115 v116 v117 v118 v119 v120 v121 v122 v123 v124 v125 v126 v127 v128 v129 v130 v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 v153 v154 v155 v156 v157 v158 v159 v160 v161 v162 v163 v164 v165 v166 v167 v168 v169 v170 v171 v172 v173 v174 v175 v176 v177 v178 v179 v180 v181 v182 v183 v184 v185 v186 v187 v188 v189 v190 v191 v192 v193 v194 v195 v196 v197 v198 v199 v200 v201 v202 v203 v204 v205 v206 v207 v208 v209 v210 v211 v212 v213 v214 v215 v216 v217 v218 v219 v220 v221 v222 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 FC5{ BC6{ BC7{ m Fp Fi[2]}}} FC5 FC8{ m Fi} Fi Fc[4] Fp[2] FC5 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi[5] Fp[2] Fi[3] FC4 FC4 FC4 FC9{ BC10{ BC7}} FC9 Fi Fp[2] FC11{ m Fi[3]} FC11 FC11 FC11 Fp FC4 FC9 FC11 FC11 Fi FC11 FC11 Fp Fi Fc FC11 FC11 Fp Fi Fp FC9 FC12{ BC13{ BC7}} FC12} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC14{ m FC15{ m FC11 FC11 Fc} FC11 Fp[2] Fc} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC16{ BC17{ BC7}} FC16 FC16 FC18{ BC19{ BC7}} Fi[2] Fp[4] Fi[5] Fp Fi[2] Fp[2] Fi FC4 FC20{ m Fi[4]} Fp[2] Fi Fp Fi}


 S1540C2_nt ::~S1540C2_nt(){ note_dtor("S1540C2_nt", this);}
void  S1540C2_nt ::v214(){vfunc_called(this, "_ZN10S1540C2_nt4v214Ev");}
void  S1540C2_nt ::v215(){vfunc_called(this, "_ZN10S1540C2_nt4v215Ev");}
void  S1540C2_nt ::v216(){vfunc_called(this, "_ZN10S1540C2_nt4v216Ev");}
void  S1540C2_nt ::v217(){vfunc_called(this, "_ZN10S1540C2_nt4v217Ev");}
void  S1540C2_nt ::v218(){vfunc_called(this, "_ZN10S1540C2_nt4v218Ev");}
void  S1540C2_nt ::v219(){vfunc_called(this, "_ZN10S1540C2_nt4v219Ev");}
void  S1540C2_nt ::v220(){vfunc_called(this, "_ZN10S1540C2_nt4v220Ev");}
void  S1540C2_nt ::v221(){vfunc_called(this, "_ZN10S1540C2_nt4v221Ev");}
void  S1540C2_nt ::v222(){vfunc_called(this, "_ZN10S1540C2_nt4v222Ev");}
void  S1540C2_nt ::v223(){vfunc_called(this, "_ZN10S1540C2_nt4v223Ev");}
void  S1540C2_nt ::v224(){vfunc_called(this, "_ZN10S1540C2_nt4v224Ev");}
void  S1540C2_nt ::v225(){vfunc_called(this, "_ZN10S1540C2_nt4v225Ev");}
void  S1540C2_nt ::v226(){vfunc_called(this, "_ZN10S1540C2_nt4v226Ev");}
void  S1540C2_nt ::v227(){vfunc_called(this, "_ZN10S1540C2_nt4v227Ev");}
void  S1540C2_nt ::v228(){vfunc_called(this, "_ZN10S1540C2_nt4v228Ev");}
void  S1540C2_nt ::v229(){vfunc_called(this, "_ZN10S1540C2_nt4v229Ev");}
void  S1540C2_nt ::v230(){vfunc_called(this, "_ZN10S1540C2_nt4v230Ev");}
void  S1540C2_nt ::v231(){vfunc_called(this, "_ZN10S1540C2_nt4v231Ev");}
void  S1540C2_nt ::v232(){vfunc_called(this, "_ZN10S1540C2_nt4v232Ev");}
void  S1540C2_nt ::v233(){vfunc_called(this, "_ZN10S1540C2_nt4v233Ev");}
void  S1540C2_nt ::v234(){vfunc_called(this, "_ZN10S1540C2_nt4v234Ev");}
void  S1540C2_nt ::v235(){vfunc_called(this, "_ZN10S1540C2_nt4v235Ev");}
void  S1540C2_nt ::v236(){vfunc_called(this, "_ZN10S1540C2_nt4v236Ev");}
void  S1540C2_nt ::v237(){vfunc_called(this, "_ZN10S1540C2_nt4v237Ev");}
void  S1540C2_nt ::v238(){vfunc_called(this, "_ZN10S1540C2_nt4v238Ev");}
void  S1540C2_nt ::v239(){vfunc_called(this, "_ZN10S1540C2_nt4v239Ev");}
void  S1540C2_nt ::v240(){vfunc_called(this, "_ZN10S1540C2_nt4v240Ev");}
void  S1540C2_nt ::v241(){vfunc_called(this, "_ZN10S1540C2_nt4v241Ev");}
void  S1540C2_nt ::v242(){vfunc_called(this, "_ZN10S1540C2_nt4v242Ev");}
void  S1540C2_nt ::v243(){vfunc_called(this, "_ZN10S1540C2_nt4v243Ev");}
void  S1540C2_nt ::v244(){vfunc_called(this, "_ZN10S1540C2_nt4v244Ev");}
void  S1540C2_nt ::v245(){vfunc_called(this, "_ZN10S1540C2_nt4v245Ev");}
void  S1540C2_nt ::v246(){vfunc_called(this, "_ZN10S1540C2_nt4v246Ev");}
void  S1540C2_nt ::v247(){vfunc_called(this, "_ZN10S1540C2_nt4v247Ev");}
void  S1540C2_nt ::v248(){vfunc_called(this, "_ZN10S1540C2_nt4v248Ev");}
void  S1540C2_nt ::v249(){vfunc_called(this, "_ZN10S1540C2_nt4v249Ev");}
void  S1540C2_nt ::v250(){vfunc_called(this, "_ZN10S1540C2_nt4v250Ev");}
S1540C2_nt ::S1540C2_nt(){ note_ctor("S1540C2_nt", this);} // tgen

//skip512 S1540C2_nt

#else // __cplusplus

extern void _ZN10S1540C2_ntC1Ev();
extern void _ZN10S1540C2_ntD1Ev();
Name_Map name_map_S1540C2_nt[] = {
  NSPAIR(_ZN10S1540C2_ntC1Ev),
  NSPAIR(_ZN10S1540C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1540C4_nt;
extern VTBL_ENTRY _ZTI10S1540C4_nt[];
extern  VTBL_ENTRY _ZTV10S1540C4_nt[];
extern Class_Descriptor cd_S1540C3_nt;
extern VTBL_ENTRY _ZTI10S1540C3_nt[];
extern  VTBL_ENTRY _ZTV10S1540C3_nt[];
static Base_Class bases_S1540C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1540C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI10S1540C2_nt[];
extern void _ZN10S1540C2_ntD1Ev();
extern void _ZN10S1540C2_ntD0Ev();
extern void _ZN10S1540C4_nt2v7Ev();
extern void _ZN10S1540C4_nt2v8Ev();
extern void _ZN10S1540C4_nt2v9Ev();
extern void _ZN10S1540C4_nt3v10Ev();
extern void _ZN10S1540C4_nt3v11Ev();
extern void _ZN10S1540C4_nt3v12Ev();
extern void _ZN10S1540C4_nt3v13Ev();
extern void _ZN10S1540C4_nt3v14Ev();
extern void _ZN10S1540C4_nt3v15Ev();
extern void _ZN10S1540C4_nt3v16Ev();
extern void _ZN10S1540C4_nt3v17Ev();
extern void _ZN10S1540C4_nt3v18Ev();
extern void _ZN10S1540C4_nt3v19Ev();
extern void _ZN10S1540C4_nt3v20Ev();
extern void _ZN10S1540C4_nt3v21Ev();
extern void _ZN10S1540C4_nt3v22Ev();
extern void _ZN10S1540C4_nt3v23Ev();
extern void _ZN10S1540C4_nt3v24Ev();
extern void _ZN10S1540C4_nt3v25Ev();
extern void _ZN10S1540C4_nt3v26Ev();
extern void _ZN10S1540C4_nt3v27Ev();
extern void _ZN10S1540C4_nt3v28Ev();
extern void _ZN10S1540C4_nt3v29Ev();
extern void _ZN10S1540C4_nt3v30Ev();
extern void _ZN10S1540C4_nt3v31Ev();
extern void _ZN10S1540C4_nt3v32Ev();
extern void _ZN10S1540C4_nt3v33Ev();
extern void _ZN10S1540C4_nt3v34Ev();
extern void _ZN10S1540C4_nt3v35Ev();
extern void _ZN10S1540C4_nt3v36Ev();
extern void _ZN10S1540C4_nt3v37Ev();
extern void _ZN10S1540C4_nt3v38Ev();
extern void _ZN10S1540C4_nt3v39Ev();
extern void _ZN10S1540C4_nt3v40Ev();
extern void _ZN10S1540C4_nt3v41Ev();
extern void _ZN10S1540C4_nt3v42Ev();
extern void _ZN10S1540C4_nt3v43Ev();
extern void _ZN10S1540C4_nt3v44Ev();
extern void _ZN10S1540C4_nt3v45Ev();
extern void _ZN10S1540C4_nt3v46Ev();
extern void _ZN10S1540C4_nt3v47Ev();
extern void _ZN10S1540C4_nt3v48Ev();
extern void _ZN10S1540C4_nt3v49Ev();
extern void _ZN10S1540C4_nt3v50Ev();
extern void _ZN10S1540C4_nt3v51Ev();
extern void _ZN10S1540C4_nt3v52Ev();
extern void _ZN10S1540C4_nt3v53Ev();
extern void _ZN10S1540C4_nt3v54Ev();
extern void _ZN10S1540C4_nt3v55Ev();
extern void _ZN10S1540C4_nt3v56Ev();
extern void _ZN10S1540C4_nt3v57Ev();
extern void _ZN10S1540C4_nt3v58Ev();
extern void _ZN10S1540C4_nt3v59Ev();
extern void _ZN10S1540C4_nt3v60Ev();
extern void _ZN10S1540C4_nt3v61Ev();
extern void _ZN10S1540C4_nt3v62Ev();
extern void _ZN10S1540C4_nt3v63Ev();
extern void _ZN10S1540C4_nt3v64Ev();
extern void _ZN10S1540C4_nt3v65Ev();
extern void _ZN10S1540C4_nt3v66Ev();
extern void _ZN10S1540C4_nt3v67Ev();
extern void _ZN10S1540C4_nt3v68Ev();
extern void _ZN10S1540C4_nt3v69Ev();
extern void _ZN10S1540C4_nt3v70Ev();
extern void _ZN10S1540C3_nt3v71Ev();
extern void _ZN10S1540C3_nt3v72Ev();
extern void _ZN10S1540C3_nt3v73Ev();
extern void _ZN10S1540C3_nt3v74Ev();
extern void _ZN10S1540C3_nt3v75Ev();
extern void _ZN10S1540C3_nt3v76Ev();
extern void _ZN10S1540C3_nt3v77Ev();
extern void _ZN10S1540C3_nt3v78Ev();
extern void _ZN10S1540C3_nt3v79Ev();
extern void _ZN10S1540C3_nt3v80Ev();
extern void _ZN10S1540C3_nt3v81Ev();
extern void _ZN10S1540C3_nt3v82Ev();
extern void _ZN10S1540C3_nt3v83Ev();
extern void _ZN10S1540C3_nt3v84Ev();
extern void _ZN10S1540C3_nt3v85Ev();
extern void _ZN10S1540C3_nt3v86Ev();
extern void _ZN10S1540C3_nt3v87Ev();
extern void _ZN10S1540C3_nt3v88Ev();
extern void _ZN10S1540C3_nt3v89Ev();
extern void _ZN10S1540C3_nt3v90Ev();
extern void _ZN10S1540C3_nt3v91Ev();
extern void _ZN10S1540C3_nt3v92Ev();
extern void _ZN10S1540C3_nt3v93Ev();
extern void _ZN10S1540C3_nt3v94Ev();
extern void _ZN10S1540C3_nt3v95Ev();
extern void _ZN10S1540C3_nt3v96Ev();
extern void _ZN10S1540C3_nt3v97Ev();
extern void _ZN10S1540C3_nt3v98Ev();
extern void _ZN10S1540C3_nt3v99Ev();
extern void _ZN10S1540C3_nt4v100Ev();
extern void _ZN10S1540C3_nt4v101Ev();
extern void _ZN10S1540C3_nt4v102Ev();
extern void _ZN10S1540C3_nt4v103Ev();
extern void _ZN10S1540C3_nt4v104Ev();
extern void _ZN10S1540C3_nt4v105Ev();
extern void _ZN10S1540C3_nt4v106Ev();
extern void _ZN10S1540C3_nt4v107Ev();
extern void _ZN10S1540C3_nt4v108Ev();
extern void _ZN10S1540C3_nt4v109Ev();
extern void _ZN10S1540C3_nt4v110Ev();
extern void _ZN10S1540C3_nt4v111Ev();
extern void _ZN10S1540C3_nt4v112Ev();
extern void _ZN10S1540C3_nt4v113Ev();
extern void _ZN10S1540C3_nt4v114Ev();
extern void _ZN10S1540C3_nt4v115Ev();
extern void _ZN10S1540C3_nt4v116Ev();
extern void _ZN10S1540C3_nt4v117Ev();
extern void _ZN10S1540C3_nt4v118Ev();
extern void _ZN10S1540C3_nt4v119Ev();
extern void _ZN10S1540C3_nt4v120Ev();
extern void _ZN10S1540C3_nt4v121Ev();
extern void _ZN10S1540C3_nt4v122Ev();
extern void _ZN10S1540C3_nt4v123Ev();
extern void _ZN10S1540C3_nt4v124Ev();
extern void _ZN10S1540C3_nt4v125Ev();
extern void _ZN10S1540C3_nt4v126Ev();
extern void _ZN10S1540C3_nt4v127Ev();
extern void _ZN10S1540C3_nt4v128Ev();
extern void _ZN10S1540C3_nt4v129Ev();
extern void _ZN10S1540C3_nt4v130Ev();
extern void _ZN10S1540C3_nt4v131Ev();
extern void _ZN10S1540C3_nt4v132Ev();
extern void _ZN10S1540C3_nt4v133Ev();
extern void _ZN10S1540C3_nt4v134Ev();
extern void _ZN10S1540C3_nt4v135Ev();
extern void _ZN10S1540C3_nt4v136Ev();
extern void _ZN10S1540C3_nt4v137Ev();
extern void _ZN10S1540C3_nt4v138Ev();
extern void _ZN10S1540C3_nt4v139Ev();
extern void _ZN10S1540C3_nt4v140Ev();
extern void _ZN10S1540C3_nt4v141Ev();
extern void _ZN10S1540C3_nt4v142Ev();
extern void _ZN10S1540C3_nt4v143Ev();
extern void _ZN10S1540C3_nt4v144Ev();
extern void _ZN10S1540C3_nt4v145Ev();
extern void _ZN10S1540C3_nt4v146Ev();
extern void _ZN10S1540C3_nt4v147Ev();
extern void _ZN10S1540C3_nt4v148Ev();
extern void _ZN10S1540C3_nt4v149Ev();
extern void _ZN10S1540C3_nt4v150Ev();
extern void _ZN10S1540C3_nt4v151Ev();
extern void _ZN10S1540C3_nt4v152Ev();
extern void _ZN10S1540C3_nt4v153Ev();
extern void _ZN10S1540C3_nt4v154Ev();
extern void _ZN10S1540C3_nt4v155Ev();
extern void _ZN10S1540C3_nt4v156Ev();
extern void _ZN10S1540C3_nt4v157Ev();
extern void _ZN10S1540C3_nt4v158Ev();
extern void _ZN10S1540C3_nt4v159Ev();
extern void _ZN10S1540C3_nt4v160Ev();
extern void _ZN10S1540C3_nt4v161Ev();
extern void _ZN10S1540C3_nt4v162Ev();
extern void _ZN10S1540C3_nt4v163Ev();
extern void _ZN10S1540C3_nt4v164Ev();
extern void _ZN10S1540C3_nt4v165Ev();
extern void _ZN10S1540C3_nt4v166Ev();
extern void _ZN10S1540C3_nt4v167Ev();
extern void _ZN10S1540C3_nt4v168Ev();
extern void _ZN10S1540C3_nt4v169Ev();
extern void _ZN10S1540C3_nt4v170Ev();
extern void _ZN10S1540C3_nt4v171Ev();
extern void _ZN10S1540C3_nt4v172Ev();
extern void _ZN10S1540C3_nt4v173Ev();
extern void _ZN10S1540C3_nt4v174Ev();
extern void _ZN10S1540C3_nt4v175Ev();
extern void _ZN10S1540C3_nt4v176Ev();
extern void _ZN10S1540C3_nt4v177Ev();
extern void _ZN10S1540C3_nt4v178Ev();
extern void _ZN10S1540C3_nt4v179Ev();
extern void _ZN10S1540C3_nt4v180Ev();
extern void _ZN10S1540C3_nt4v181Ev();
extern void _ZN10S1540C3_nt4v182Ev();
extern void _ZN10S1540C3_nt4v183Ev();
extern void _ZN10S1540C3_nt4v184Ev();
extern void _ZN10S1540C3_nt4v185Ev();
extern void _ZN10S1540C3_nt4v186Ev();
extern void _ZN10S1540C3_nt4v187Ev();
extern void _ZN10S1540C3_nt4v188Ev();
extern void _ZN10S1540C3_nt4v189Ev();
extern void _ZN10S1540C3_nt4v190Ev();
extern void _ZN10S1540C3_nt4v191Ev();
extern void _ZN10S1540C3_nt4v192Ev();
extern void _ZN10S1540C3_nt4v193Ev();
extern void _ZN10S1540C3_nt4v194Ev();
extern void _ZN10S1540C3_nt4v195Ev();
extern void _ZN10S1540C3_nt4v196Ev();
extern void _ZN10S1540C3_nt4v197Ev();
extern void _ZN10S1540C3_nt4v198Ev();
extern void _ZN10S1540C3_nt4v199Ev();
extern void _ZN10S1540C3_nt4v200Ev();
extern void _ZN10S1540C3_nt4v201Ev();
extern void _ZN10S1540C3_nt4v202Ev();
extern void _ZN10S1540C3_nt4v203Ev();
extern void _ZN10S1540C3_nt4v204Ev();
extern void _ZN10S1540C3_nt4v205Ev();
extern void _ZN10S1540C3_nt4v206Ev();
extern void _ZN10S1540C3_nt4v207Ev();
extern void _ZN10S1540C3_nt4v208Ev();
extern void _ZN10S1540C3_nt4v209Ev();
extern void _ZN10S1540C3_nt4v210Ev();
extern void _ZN10S1540C3_nt4v211Ev();
extern void _ZN10S1540C3_nt4v212Ev();
extern void _ZN10S1540C3_nt4v213Ev();
extern void _ZN10S1540C2_nt4v214Ev();
extern void _ZN10S1540C2_nt4v215Ev();
extern void _ZN10S1540C2_nt4v216Ev();
extern void _ZN10S1540C2_nt4v217Ev();
extern void _ZN10S1540C2_nt4v218Ev();
extern void _ZN10S1540C2_nt4v219Ev();
extern void _ZN10S1540C2_nt4v220Ev();
extern void _ZN10S1540C2_nt4v221Ev();
extern void _ZN10S1540C2_nt4v222Ev();
extern void _ZN10S1540C2_nt4v223Ev();
extern void _ZN10S1540C2_nt4v224Ev();
extern void _ZN10S1540C2_nt4v225Ev();
extern void _ZN10S1540C2_nt4v226Ev();
extern void _ZN10S1540C2_nt4v227Ev();
extern void _ZN10S1540C2_nt4v228Ev();
extern void _ZN10S1540C2_nt4v229Ev();
extern void _ZN10S1540C2_nt4v230Ev();
extern void _ZN10S1540C2_nt4v231Ev();
extern void _ZN10S1540C2_nt4v232Ev();
extern void _ZN10S1540C2_nt4v233Ev();
extern void _ZN10S1540C2_nt4v234Ev();
extern void _ZN10S1540C2_nt4v235Ev();
extern void _ZN10S1540C2_nt4v236Ev();
extern void _ZN10S1540C2_nt4v237Ev();
extern void _ZN10S1540C2_nt4v238Ev();
extern void _ZN10S1540C2_nt4v239Ev();
extern void _ZN10S1540C2_nt4v240Ev();
extern void _ZN10S1540C2_nt4v241Ev();
extern void _ZN10S1540C2_nt4v242Ev();
extern void _ZN10S1540C2_nt4v243Ev();
extern void _ZN10S1540C2_nt4v244Ev();
extern void _ZN10S1540C2_nt4v245Ev();
extern void _ZN10S1540C2_nt4v246Ev();
extern void _ZN10S1540C2_nt4v247Ev();
extern void _ZN10S1540C2_nt4v248Ev();
extern void _ZN10S1540C2_nt4v249Ev();
extern void _ZN10S1540C2_nt4v250Ev();
static  VTBL_ENTRY vtc_S1540C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1540C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1540C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v213Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v214Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v215Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v216Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v217Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v218Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v219Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v220Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v221Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v222Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v223Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v224Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v225Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v226Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v227Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v228Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v229Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v230Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v231Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v232Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v233Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v234Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v235Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v236Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v237Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v238Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v239Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v240Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v241Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v242Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v243Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v244Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v245Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v246Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v247Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v248Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v249Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v250Ev,
};
extern VTBL_ENTRY _ZTI10S1540C2_nt[];
VTBL_ENTRY *P__ZTI10S1540C2_nt = _ZTI10S1540C2_nt; 
extern  VTBL_ENTRY _ZTV10S1540C2_nt[];
Class_Descriptor cd_S1540C2_nt = {  "S1540C2_nt", // class name
  bases_S1540C2_nt, 2,
  &(vtc_S1540C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(880,656), // object size
  NSPAIRA(_ZTI10S1540C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1540C2_nt),248, //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  S1540C1  : S1540C2_nt {
  void *s1540c1f0;
  int s1540c1f1;
  ::S1540C14_nt s1540c1f2;
  unsigned int s1540c1f3:1;
  int s1540c1f4;
  void *s1540c1f5;
  virtual  ~S1540C1(); // _ZN7S1540C1D1Ev
  virtual void  v1(); // _ZN7S1540C12v1Ev
  virtual void  v2(); // _ZN7S1540C12v2Ev
  virtual void  v3(); // _ZN7S1540C12v3Ev
  virtual void  v4(); // _ZN7S1540C12v4Ev
  virtual void  v5(); // _ZN7S1540C12v5Ev
  virtual void  v6(); // _ZN7S1540C12v6Ev
  S1540C1(); // tgen
};
//SIG(1 S1540C1) 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 v223 v224 v225 v226 v227 v228 v229 v230 v231 v232 v233 v234 v235 v236 v237 v238 v239 v240 v241 v242 v243 v244 v245 v246 v247 v248 v249 v250 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC15{ m FC16{ m FC12 FC12 Fc} FC12 Fp[2] Fc} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC17{ BC18{ BC8}} FC17 FC17 FC19{ BC20{ BC8}} Fi[2] Fp[4] Fi[5] Fp Fi[2] Fp[2] Fi FC5 FC21{ m Fi[4]} Fp[2] Fi Fp Fi} vd v1 v2 v3 v4 v5 v6 Fp Fi FC12 Fi:1 Fi Fp}


 S1540C1 ::~S1540C1(){ note_dtor("S1540C1", this);}
void  S1540C1 ::v1(){vfunc_called(this, "_ZN7S1540C12v1Ev");}
void  S1540C1 ::v2(){vfunc_called(this, "_ZN7S1540C12v2Ev");}
void  S1540C1 ::v3(){vfunc_called(this, "_ZN7S1540C12v3Ev");}
void  S1540C1 ::v4(){vfunc_called(this, "_ZN7S1540C12v4Ev");}
void  S1540C1 ::v5(){vfunc_called(this, "_ZN7S1540C12v5Ev");}
void  S1540C1 ::v6(){vfunc_called(this, "_ZN7S1540C12v6Ev");}
S1540C1 ::S1540C1(){ note_ctor("S1540C1", this);} // tgen

static void Test_S1540C1()
{
  extern Class_Descriptor cd_S1540C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(116,173)];
    init_test(&cd_S1540C1, buf);
    S1540C1 *dp, &lv = *(dp=new (buf) S1540C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(920,688), "sizeof(S1540C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1540C1)");
    check_base_class_offset(lv, (S1540C4_nt*)(S1540C3_nt*)(S1540C2_nt*), 0, "S1540C1");
    check_base_class_offset(lv, (S1540C3_nt*)(S1540C2_nt*), 0, "S1540C1");
    check_base_class_offset(lv, (S1540C2_nt*), 0, "S1540C1");
    check_field_offset(lv, s1540c1f0, ABISELECT(880,656), "S1540C1.s1540c1f0");
    check_field_offset(lv, s1540c1f1, ABISELECT(888,660), "S1540C1.s1540c1f1");
    check_field_offset(lv, s1540c1f2, ABISELECT(892,664), "S1540C1.s1540c1f2");
    set_bf_and_test(lv, s1540c1f3, ABISELECT(904,676), 0, 1, 1, "S1540C1");
    check_field_offset(lv, s1540c1f4, ABISELECT(908,680), "S1540C1.s1540c1f4");
    check_field_offset(lv, s1540c1f5, ABISELECT(912,684), "S1540C1.s1540c1f5");
    test_class_info(&lv, &cd_S1540C1);
    dp->~S1540C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1540C1(Test_S1540C1, "S1540C1", ABISELECT(920,688));

#else // __cplusplus

extern void _ZN7S1540C1C1Ev();
extern void _ZN7S1540C1D1Ev();
Name_Map name_map_S1540C1[] = {
  NSPAIR(_ZN7S1540C1C1Ev),
  NSPAIR(_ZN7S1540C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1540C4_nt;
extern VTBL_ENTRY _ZTI10S1540C4_nt[];
extern  VTBL_ENTRY _ZTV10S1540C4_nt[];
extern Class_Descriptor cd_S1540C3_nt;
extern VTBL_ENTRY _ZTI10S1540C3_nt[];
extern  VTBL_ENTRY _ZTV10S1540C3_nt[];
extern Class_Descriptor cd_S1540C2_nt;
extern VTBL_ENTRY _ZTI10S1540C2_nt[];
extern  VTBL_ENTRY _ZTV10S1540C2_nt[];
static Base_Class bases_S1540C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1540C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S1540C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S1540C1[];
extern void _ZN7S1540C1D1Ev();
extern void _ZN7S1540C1D0Ev();
extern void _ZN10S1540C4_nt2v7Ev();
extern void _ZN10S1540C4_nt2v8Ev();
extern void _ZN10S1540C4_nt2v9Ev();
extern void _ZN10S1540C4_nt3v10Ev();
extern void _ZN10S1540C4_nt3v11Ev();
extern void _ZN10S1540C4_nt3v12Ev();
extern void _ZN10S1540C4_nt3v13Ev();
extern void _ZN10S1540C4_nt3v14Ev();
extern void _ZN10S1540C4_nt3v15Ev();
extern void _ZN10S1540C4_nt3v16Ev();
extern void _ZN10S1540C4_nt3v17Ev();
extern void _ZN10S1540C4_nt3v18Ev();
extern void _ZN10S1540C4_nt3v19Ev();
extern void _ZN10S1540C4_nt3v20Ev();
extern void _ZN10S1540C4_nt3v21Ev();
extern void _ZN10S1540C4_nt3v22Ev();
extern void _ZN10S1540C4_nt3v23Ev();
extern void _ZN10S1540C4_nt3v24Ev();
extern void _ZN10S1540C4_nt3v25Ev();
extern void _ZN10S1540C4_nt3v26Ev();
extern void _ZN10S1540C4_nt3v27Ev();
extern void _ZN10S1540C4_nt3v28Ev();
extern void _ZN10S1540C4_nt3v29Ev();
extern void _ZN10S1540C4_nt3v30Ev();
extern void _ZN10S1540C4_nt3v31Ev();
extern void _ZN10S1540C4_nt3v32Ev();
extern void _ZN10S1540C4_nt3v33Ev();
extern void _ZN10S1540C4_nt3v34Ev();
extern void _ZN10S1540C4_nt3v35Ev();
extern void _ZN10S1540C4_nt3v36Ev();
extern void _ZN10S1540C4_nt3v37Ev();
extern void _ZN10S1540C4_nt3v38Ev();
extern void _ZN10S1540C4_nt3v39Ev();
extern void _ZN10S1540C4_nt3v40Ev();
extern void _ZN10S1540C4_nt3v41Ev();
extern void _ZN10S1540C4_nt3v42Ev();
extern void _ZN10S1540C4_nt3v43Ev();
extern void _ZN10S1540C4_nt3v44Ev();
extern void _ZN10S1540C4_nt3v45Ev();
extern void _ZN10S1540C4_nt3v46Ev();
extern void _ZN10S1540C4_nt3v47Ev();
extern void _ZN10S1540C4_nt3v48Ev();
extern void _ZN10S1540C4_nt3v49Ev();
extern void _ZN10S1540C4_nt3v50Ev();
extern void _ZN10S1540C4_nt3v51Ev();
extern void _ZN10S1540C4_nt3v52Ev();
extern void _ZN10S1540C4_nt3v53Ev();
extern void _ZN10S1540C4_nt3v54Ev();
extern void _ZN10S1540C4_nt3v55Ev();
extern void _ZN10S1540C4_nt3v56Ev();
extern void _ZN10S1540C4_nt3v57Ev();
extern void _ZN10S1540C4_nt3v58Ev();
extern void _ZN10S1540C4_nt3v59Ev();
extern void _ZN10S1540C4_nt3v60Ev();
extern void _ZN10S1540C4_nt3v61Ev();
extern void _ZN10S1540C4_nt3v62Ev();
extern void _ZN10S1540C4_nt3v63Ev();
extern void _ZN10S1540C4_nt3v64Ev();
extern void _ZN10S1540C4_nt3v65Ev();
extern void _ZN10S1540C4_nt3v66Ev();
extern void _ZN10S1540C4_nt3v67Ev();
extern void _ZN10S1540C4_nt3v68Ev();
extern void _ZN10S1540C4_nt3v69Ev();
extern void _ZN10S1540C4_nt3v70Ev();
extern void _ZN10S1540C3_nt3v71Ev();
extern void _ZN10S1540C3_nt3v72Ev();
extern void _ZN10S1540C3_nt3v73Ev();
extern void _ZN10S1540C3_nt3v74Ev();
extern void _ZN10S1540C3_nt3v75Ev();
extern void _ZN10S1540C3_nt3v76Ev();
extern void _ZN10S1540C3_nt3v77Ev();
extern void _ZN10S1540C3_nt3v78Ev();
extern void _ZN10S1540C3_nt3v79Ev();
extern void _ZN10S1540C3_nt3v80Ev();
extern void _ZN10S1540C3_nt3v81Ev();
extern void _ZN10S1540C3_nt3v82Ev();
extern void _ZN10S1540C3_nt3v83Ev();
extern void _ZN10S1540C3_nt3v84Ev();
extern void _ZN10S1540C3_nt3v85Ev();
extern void _ZN10S1540C3_nt3v86Ev();
extern void _ZN10S1540C3_nt3v87Ev();
extern void _ZN10S1540C3_nt3v88Ev();
extern void _ZN10S1540C3_nt3v89Ev();
extern void _ZN10S1540C3_nt3v90Ev();
extern void _ZN10S1540C3_nt3v91Ev();
extern void _ZN10S1540C3_nt3v92Ev();
extern void _ZN10S1540C3_nt3v93Ev();
extern void _ZN10S1540C3_nt3v94Ev();
extern void _ZN10S1540C3_nt3v95Ev();
extern void _ZN10S1540C3_nt3v96Ev();
extern void _ZN10S1540C3_nt3v97Ev();
extern void _ZN10S1540C3_nt3v98Ev();
extern void _ZN10S1540C3_nt3v99Ev();
extern void _ZN10S1540C3_nt4v100Ev();
extern void _ZN10S1540C3_nt4v101Ev();
extern void _ZN10S1540C3_nt4v102Ev();
extern void _ZN10S1540C3_nt4v103Ev();
extern void _ZN10S1540C3_nt4v104Ev();
extern void _ZN10S1540C3_nt4v105Ev();
extern void _ZN10S1540C3_nt4v106Ev();
extern void _ZN10S1540C3_nt4v107Ev();
extern void _ZN10S1540C3_nt4v108Ev();
extern void _ZN10S1540C3_nt4v109Ev();
extern void _ZN10S1540C3_nt4v110Ev();
extern void _ZN10S1540C3_nt4v111Ev();
extern void _ZN10S1540C3_nt4v112Ev();
extern void _ZN10S1540C3_nt4v113Ev();
extern void _ZN10S1540C3_nt4v114Ev();
extern void _ZN10S1540C3_nt4v115Ev();
extern void _ZN10S1540C3_nt4v116Ev();
extern void _ZN10S1540C3_nt4v117Ev();
extern void _ZN10S1540C3_nt4v118Ev();
extern void _ZN10S1540C3_nt4v119Ev();
extern void _ZN10S1540C3_nt4v120Ev();
extern void _ZN10S1540C3_nt4v121Ev();
extern void _ZN10S1540C3_nt4v122Ev();
extern void _ZN10S1540C3_nt4v123Ev();
extern void _ZN10S1540C3_nt4v124Ev();
extern void _ZN10S1540C3_nt4v125Ev();
extern void _ZN10S1540C3_nt4v126Ev();
extern void _ZN10S1540C3_nt4v127Ev();
extern void _ZN10S1540C3_nt4v128Ev();
extern void _ZN10S1540C3_nt4v129Ev();
extern void _ZN10S1540C3_nt4v130Ev();
extern void _ZN10S1540C3_nt4v131Ev();
extern void _ZN10S1540C3_nt4v132Ev();
extern void _ZN10S1540C3_nt4v133Ev();
extern void _ZN10S1540C3_nt4v134Ev();
extern void _ZN10S1540C3_nt4v135Ev();
extern void _ZN10S1540C3_nt4v136Ev();
extern void _ZN10S1540C3_nt4v137Ev();
extern void _ZN10S1540C3_nt4v138Ev();
extern void _ZN10S1540C3_nt4v139Ev();
extern void _ZN10S1540C3_nt4v140Ev();
extern void _ZN10S1540C3_nt4v141Ev();
extern void _ZN10S1540C3_nt4v142Ev();
extern void _ZN10S1540C3_nt4v143Ev();
extern void _ZN10S1540C3_nt4v144Ev();
extern void _ZN10S1540C3_nt4v145Ev();
extern void _ZN10S1540C3_nt4v146Ev();
extern void _ZN10S1540C3_nt4v147Ev();
extern void _ZN10S1540C3_nt4v148Ev();
extern void _ZN10S1540C3_nt4v149Ev();
extern void _ZN10S1540C3_nt4v150Ev();
extern void _ZN10S1540C3_nt4v151Ev();
extern void _ZN10S1540C3_nt4v152Ev();
extern void _ZN10S1540C3_nt4v153Ev();
extern void _ZN10S1540C3_nt4v154Ev();
extern void _ZN10S1540C3_nt4v155Ev();
extern void _ZN10S1540C3_nt4v156Ev();
extern void _ZN10S1540C3_nt4v157Ev();
extern void _ZN10S1540C3_nt4v158Ev();
extern void _ZN10S1540C3_nt4v159Ev();
extern void _ZN10S1540C3_nt4v160Ev();
extern void _ZN10S1540C3_nt4v161Ev();
extern void _ZN10S1540C3_nt4v162Ev();
extern void _ZN10S1540C3_nt4v163Ev();
extern void _ZN10S1540C3_nt4v164Ev();
extern void _ZN10S1540C3_nt4v165Ev();
extern void _ZN10S1540C3_nt4v166Ev();
extern void _ZN10S1540C3_nt4v167Ev();
extern void _ZN10S1540C3_nt4v168Ev();
extern void _ZN10S1540C3_nt4v169Ev();
extern void _ZN10S1540C3_nt4v170Ev();
extern void _ZN10S1540C3_nt4v171Ev();
extern void _ZN10S1540C3_nt4v172Ev();
extern void _ZN10S1540C3_nt4v173Ev();
extern void _ZN10S1540C3_nt4v174Ev();
extern void _ZN10S1540C3_nt4v175Ev();
extern void _ZN10S1540C3_nt4v176Ev();
extern void _ZN10S1540C3_nt4v177Ev();
extern void _ZN10S1540C3_nt4v178Ev();
extern void _ZN10S1540C3_nt4v179Ev();
extern void _ZN10S1540C3_nt4v180Ev();
extern void _ZN10S1540C3_nt4v181Ev();
extern void _ZN10S1540C3_nt4v182Ev();
extern void _ZN10S1540C3_nt4v183Ev();
extern void _ZN10S1540C3_nt4v184Ev();
extern void _ZN10S1540C3_nt4v185Ev();
extern void _ZN10S1540C3_nt4v186Ev();
extern void _ZN10S1540C3_nt4v187Ev();
extern void _ZN10S1540C3_nt4v188Ev();
extern void _ZN10S1540C3_nt4v189Ev();
extern void _ZN10S1540C3_nt4v190Ev();
extern void _ZN10S1540C3_nt4v191Ev();
extern void _ZN10S1540C3_nt4v192Ev();
extern void _ZN10S1540C3_nt4v193Ev();
extern void _ZN10S1540C3_nt4v194Ev();
extern void _ZN10S1540C3_nt4v195Ev();
extern void _ZN10S1540C3_nt4v196Ev();
extern void _ZN10S1540C3_nt4v197Ev();
extern void _ZN10S1540C3_nt4v198Ev();
extern void _ZN10S1540C3_nt4v199Ev();
extern void _ZN10S1540C3_nt4v200Ev();
extern void _ZN10S1540C3_nt4v201Ev();
extern void _ZN10S1540C3_nt4v202Ev();
extern void _ZN10S1540C3_nt4v203Ev();
extern void _ZN10S1540C3_nt4v204Ev();
extern void _ZN10S1540C3_nt4v205Ev();
extern void _ZN10S1540C3_nt4v206Ev();
extern void _ZN10S1540C3_nt4v207Ev();
extern void _ZN10S1540C3_nt4v208Ev();
extern void _ZN10S1540C3_nt4v209Ev();
extern void _ZN10S1540C3_nt4v210Ev();
extern void _ZN10S1540C3_nt4v211Ev();
extern void _ZN10S1540C3_nt4v212Ev();
extern void _ZN10S1540C3_nt4v213Ev();
extern void _ZN10S1540C2_nt4v214Ev();
extern void _ZN10S1540C2_nt4v215Ev();
extern void _ZN10S1540C2_nt4v216Ev();
extern void _ZN10S1540C2_nt4v217Ev();
extern void _ZN10S1540C2_nt4v218Ev();
extern void _ZN10S1540C2_nt4v219Ev();
extern void _ZN10S1540C2_nt4v220Ev();
extern void _ZN10S1540C2_nt4v221Ev();
extern void _ZN10S1540C2_nt4v222Ev();
extern void _ZN10S1540C2_nt4v223Ev();
extern void _ZN10S1540C2_nt4v224Ev();
extern void _ZN10S1540C2_nt4v225Ev();
extern void _ZN10S1540C2_nt4v226Ev();
extern void _ZN10S1540C2_nt4v227Ev();
extern void _ZN10S1540C2_nt4v228Ev();
extern void _ZN10S1540C2_nt4v229Ev();
extern void _ZN10S1540C2_nt4v230Ev();
extern void _ZN10S1540C2_nt4v231Ev();
extern void _ZN10S1540C2_nt4v232Ev();
extern void _ZN10S1540C2_nt4v233Ev();
extern void _ZN10S1540C2_nt4v234Ev();
extern void _ZN10S1540C2_nt4v235Ev();
extern void _ZN10S1540C2_nt4v236Ev();
extern void _ZN10S1540C2_nt4v237Ev();
extern void _ZN10S1540C2_nt4v238Ev();
extern void _ZN10S1540C2_nt4v239Ev();
extern void _ZN10S1540C2_nt4v240Ev();
extern void _ZN10S1540C2_nt4v241Ev();
extern void _ZN10S1540C2_nt4v242Ev();
extern void _ZN10S1540C2_nt4v243Ev();
extern void _ZN10S1540C2_nt4v244Ev();
extern void _ZN10S1540C2_nt4v245Ev();
extern void _ZN10S1540C2_nt4v246Ev();
extern void _ZN10S1540C2_nt4v247Ev();
extern void _ZN10S1540C2_nt4v248Ev();
extern void _ZN10S1540C2_nt4v249Ev();
extern void _ZN10S1540C2_nt4v250Ev();
extern void _ZN7S1540C12v1Ev();
extern void _ZN7S1540C12v2Ev();
extern void _ZN7S1540C12v3Ev();
extern void _ZN7S1540C12v4Ev();
extern void _ZN7S1540C12v5Ev();
extern void _ZN7S1540C12v6Ev();
static  VTBL_ENTRY vtc_S1540C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1540C1[0]),
  (VTBL_ENTRY)&_ZN7S1540C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1540C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v47Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v48Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v49Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v50Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v51Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v52Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v53Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v54Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v55Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v56Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v57Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v58Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v59Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v60Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v61Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v62Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v63Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v64Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v65Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v66Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v67Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v68Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v69Ev,
  (VTBL_ENTRY)&_ZN10S1540C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v71Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v72Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v73Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v74Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v97Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v98Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt3v99Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v100Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v101Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v102Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v103Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v104Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v105Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v106Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v107Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v108Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v109Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v110Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v111Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v112Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v113Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v114Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v115Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v116Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v117Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v118Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v119Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v120Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v121Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v122Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v123Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v124Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v125Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v126Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v127Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v128Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v129Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v130Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v131Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v132Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v133Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v134Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v135Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v136Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v137Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v138Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v139Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v140Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v141Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v142Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v143Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v144Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v145Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v146Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v147Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v148Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v149Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v150Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v151Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v152Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v153Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v154Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v155Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v156Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v157Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v158Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v159Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v160Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v161Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v162Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v163Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v164Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v165Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v166Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v167Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v168Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v169Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v170Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v171Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v172Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v173Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v174Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v175Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v176Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v177Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v178Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v179Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v180Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v181Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v182Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v183Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v184Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v185Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v186Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v187Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v188Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v189Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v190Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v191Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v192Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v193Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v194Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v195Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v196Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v197Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v198Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v199Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v200Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v201Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v202Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v203Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v204Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v205Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v206Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v207Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v208Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v209Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v210Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v211Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v212Ev,
  (VTBL_ENTRY)&_ZN10S1540C3_nt4v213Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v214Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v215Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v216Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v217Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v218Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v219Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v220Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v221Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v222Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v223Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v224Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v225Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v226Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v227Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v228Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v229Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v230Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v231Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v232Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v233Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v234Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v235Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v236Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v237Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v238Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v239Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v240Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v241Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v242Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v243Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v244Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v245Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v246Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v247Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v248Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v249Ev,
  (VTBL_ENTRY)&_ZN10S1540C2_nt4v250Ev,
  (VTBL_ENTRY)&_ZN7S1540C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1540C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1540C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1540C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1540C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1540C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S1540C1[];
extern  VTBL_ENTRY _ZTV7S1540C1[];
Class_Descriptor cd_S1540C1 = {  "S1540C1", // class name
  bases_S1540C1, 3,
  &(vtc_S1540C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(920,688), // object size
  NSPAIRA(_ZTI7S1540C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1540C1),254, //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  S662C5  {
  int s662c5f0;
  __tsi64 s662c5f1;
  void *s662c5f2[4];
  int s662c5f3[2];
  void *s662c5f4;
  ::S1540C5_nt s662c5f5;
  void *s662c5f6[2];
  virtual  ~S662C5(); // _ZN6S662C5D1Ev
  virtual void  v6(); // _ZN6S662C52v6Ev
  virtual void  v7(); // _ZN6S662C52v7Ev
  virtual void  v8(); // _ZN6S662C52v8Ev
  virtual void  v9(); // _ZN6S662C52v9Ev
  virtual void  v10(); // _ZN6S662C53v10Ev
  virtual void  v11(); // _ZN6S662C53v11Ev
  virtual void  v12(); // _ZN6S662C53v12Ev
  virtual void  v13(); // _ZN6S662C53v13Ev
  virtual void  v14(); // _ZN6S662C53v14Ev
  virtual void  v15(); // _ZN6S662C53v15Ev
  virtual void  v16(); // _ZN6S662C53v16Ev
  virtual void  v17(); // _ZN6S662C53v17Ev
  virtual void  v18(); // _ZN6S662C53v18Ev
  virtual void  v19(); // _ZN6S662C53v19Ev
  virtual void  v20(); // _ZN6S662C53v20Ev
  virtual void  v21(); // _ZN6S662C53v21Ev
  virtual void  v22(); // _ZN6S662C53v22Ev
  virtual void  v23(); // _ZN6S662C53v23Ev
  virtual void  v24(); // _ZN6S662C53v24Ev
  virtual void  v25(); // _ZN6S662C53v25Ev
  virtual void  v26(); // _ZN6S662C53v26Ev
  virtual void  v27(); // _ZN6S662C53v27Ev
  virtual void  v28(); // _ZN6S662C53v28Ev
  virtual void  v29(); // _ZN6S662C53v29Ev
  virtual void  v30(); // _ZN6S662C53v30Ev
  virtual void  v31(); // _ZN6S662C53v31Ev
  virtual void  v32(); // _ZN6S662C53v32Ev
  virtual void  v33(); // _ZN6S662C53v33Ev
  virtual void  v34(); // _ZN6S662C53v34Ev
  virtual void  v35(); // _ZN6S662C53v35Ev
  virtual void  v36(); // _ZN6S662C53v36Ev
  virtual void  v37(); // _ZN6S662C53v37Ev
  virtual void  v38(); // _ZN6S662C53v38Ev
  virtual void  v39(); // _ZN6S662C53v39Ev
  virtual void  v40(); // _ZN6S662C53v40Ev
  virtual void  v41(); // _ZN6S662C53v41Ev
  virtual void  v42(); // _ZN6S662C53v42Ev
  virtual void  v43(); // _ZN6S662C53v43Ev
  virtual void  v44(); // _ZN6S662C53v44Ev
  virtual void  v45(); // _ZN6S662C53v45Ev
  virtual void  v46(); // _ZN6S662C53v46Ev
  virtual void  v47(); // _ZN6S662C53v47Ev
  virtual void  v48(); // _ZN6S662C53v48Ev
  virtual void  v49(); // _ZN6S662C53v49Ev
  virtual void  v50(); // _ZN6S662C53v50Ev
  virtual void  v51(); // _ZN6S662C53v51Ev
  virtual void  v52(); // _ZN6S662C53v52Ev
  virtual void  v53(); // _ZN6S662C53v53Ev
  virtual void  v54(); // _ZN6S662C53v54Ev
  virtual void  v55(); // _ZN6S662C53v55Ev
  virtual void  v56(); // _ZN6S662C53v56Ev
  virtual void  v57(); // _ZN6S662C53v57Ev
  virtual void  v58(); // _ZN6S662C53v58Ev
  virtual void  v59(); // _ZN6S662C53v59Ev
  virtual void  v60(); // _ZN6S662C53v60Ev
  virtual void  v61(); // _ZN6S662C53v61Ev
  virtual void  v62(); // _ZN6S662C53v62Ev
  virtual void  v63(); // _ZN6S662C53v63Ev
  virtual void  v64(); // _ZN6S662C53v64Ev
  virtual void  v65(); // _ZN6S662C53v65Ev
  virtual void  v66(); // _ZN6S662C53v66Ev
  virtual void  v67(); // _ZN6S662C53v67Ev
  virtual void  v68(); // _ZN6S662C53v68Ev
  virtual void  v69(); // _ZN6S662C53v69Ev
  S662C5(); // tgen
};
//SIG(-1 S662C5) 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]}


 S662C5 ::~S662C5(){ note_dtor("S662C5", this);}
void  S662C5 ::v6(){vfunc_called(this, "_ZN6S662C52v6Ev");}
void  S662C5 ::v7(){vfunc_called(this, "_ZN6S662C52v7Ev");}
void  S662C5 ::v8(){vfunc_called(this, "_ZN6S662C52v8Ev");}
void  S662C5 ::v9(){vfunc_called(this, "_ZN6S662C52v9Ev");}
void  S662C5 ::v10(){vfunc_called(this, "_ZN6S662C53v10Ev");}
void  S662C5 ::v11(){vfunc_called(this, "_ZN6S662C53v11Ev");}
void  S662C5 ::v12(){vfunc_called(this, "_ZN6S662C53v12Ev");}
void  S662C5 ::v13(){vfunc_called(this, "_ZN6S662C53v13Ev");}
void  S662C5 ::v14(){vfunc_called(this, "_ZN6S662C53v14Ev");}
void  S662C5 ::v15(){vfunc_called(this, "_ZN6S662C53v15Ev");}
void  S662C5 ::v16(){vfunc_called(this, "_ZN6S662C53v16Ev");}
void  S662C5 ::v17(){vfunc_called(this, "_ZN6S662C53v17Ev");}
void  S662C5 ::v18(){vfunc_called(this, "_ZN6S662C53v18Ev");}
void  S662C5 ::v19(){vfunc_called(this, "_ZN6S662C53v19Ev");}
void  S662C5 ::v20(){vfunc_called(this, "_ZN6S662C53v20Ev");}
void  S662C5 ::v21(){vfunc_called(this, "_ZN6S662C53v21Ev");}
void  S662C5 ::v22(){vfunc_called(this, "_ZN6S662C53v22Ev");}
void  S662C5 ::v23(){vfunc_called(this, "_ZN6S662C53v23Ev");}
void  S662C5 ::v24(){vfunc_called(this, "_ZN6S662C53v24Ev");}
void  S662C5 ::v25(){vfunc_called(this, "_ZN6S662C53v25Ev");}
void  S662C5 ::v26(){vfunc_called(this, "_ZN6S662C53v26Ev");}
void  S662C5 ::v27(){vfunc_called(this, "_ZN6S662C53v27Ev");}
void  S662C5 ::v28(){vfunc_called(this, "_ZN6S662C53v28Ev");}
void  S662C5 ::v29(){vfunc_called(this, "_ZN6S662C53v29Ev");}
void  S662C5 ::v30(){vfunc_called(this, "_ZN6S662C53v30Ev");}
void  S662C5 ::v31(){vfunc_called(this, "_ZN6S662C53v31Ev");}
void  S662C5 ::v32(){vfunc_called(this, "_ZN6S662C53v32Ev");}
void  S662C5 ::v33(){vfunc_called(this, "_ZN6S662C53v33Ev");}
void  S662C5 ::v34(){vfunc_called(this, "_ZN6S662C53v34Ev");}
void  S662C5 ::v35(){vfunc_called(this, "_ZN6S662C53v35Ev");}
void  S662C5 ::v36(){vfunc_called(this, "_ZN6S662C53v36Ev");}
void  S662C5 ::v37(){vfunc_called(this, "_ZN6S662C53v37Ev");}
void  S662C5 ::v38(){vfunc_called(this, "_ZN6S662C53v38Ev");}
void  S662C5 ::v39(){vfunc_called(this, "_ZN6S662C53v39Ev");}
void  S662C5 ::v40(){vfunc_called(this, "_ZN6S662C53v40Ev");}
void  S662C5 ::v41(){vfunc_called(this, "_ZN6S662C53v41Ev");}
void  S662C5 ::v42(){vfunc_called(this, "_ZN6S662C53v42Ev");}
void  S662C5 ::v43(){vfunc_called(this, "_ZN6S662C53v43Ev");}
void  S662C5 ::v44(){vfunc_called(this, "_ZN6S662C53v44Ev");}
void  S662C5 ::v45(){vfunc_called(this, "_ZN6S662C53v45Ev");}
void  S662C5 ::v46(){vfunc_called(this, "_ZN6S662C53v46Ev");}
void  S662C5 ::v47(){vfunc_called(this, "_ZN6S662C53v47Ev");}
void  S662C5 ::v48(){vfunc_called(this, "_ZN6S662C53v48Ev");}
void  S662C5 ::v49(){vfunc_called(this, "_ZN6S662C53v49Ev");}
void  S662C5 ::v50(){vfunc_called(this, "_ZN6S662C53v50Ev");}
void  S662C5 ::v51(){vfunc_called(this, "_ZN6S662C53v51Ev");}
void  S662C5 ::v52(){vfunc_called(this, "_ZN6S662C53v52Ev");}
void  S662C5 ::v53(){vfunc_called(this, "_ZN6S662C53v53Ev");}
void  S662C5 ::v54(){vfunc_called(this, "_ZN6S662C53v54Ev");}
void  S662C5 ::v55(){vfunc_called(this, "_ZN6S662C53v55Ev");}
void  S662C5 ::v56(){vfunc_called(this, "_ZN6S662C53v56Ev");}
void  S662C5 ::v57(){vfunc_called(this, "_ZN6S662C53v57Ev");}
void  S662C5 ::v58(){vfunc_called(this, "_ZN6S662C53v58Ev");}
void  S662C5 ::v59(){vfunc_called(this, "_ZN6S662C53v59Ev");}
void  S662C5 ::v60(){vfunc_called(this, "_ZN6S662C53v60Ev");}
void  S662C5 ::v61(){vfunc_called(this, "_ZN6S662C53v61Ev");}
void  S662C5 ::v62(){vfunc_called(this, "_ZN6S662C53v62Ev");}
void  S662C5 ::v63(){vfunc_called(this, "_ZN6S662C53v63Ev");}
void  S662C5 ::v64(){vfunc_called(this, "_ZN6S662C53v64Ev");}
void  S662C5 ::v65(){vfunc_called(this, "_ZN6S662C53v65Ev");}
void  S662C5 ::v66(){vfunc_called(this, "_ZN6S662C53v66Ev");}
void  S662C5 ::v67(){vfunc_called(this, "_ZN6S662C53v67Ev");}
void  S662C5 ::v68(){vfunc_called(this, "_ZN6S662C53v68Ev");}
void  S662C5 ::v69(){vfunc_called(this, "_ZN6S662C53v69Ev");}
S662C5 ::S662C5(){ note_ctor("S662C5", this);} // tgen

static void Test_S662C5()
{
  extern Class_Descriptor cd_S662C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S662C5, buf);
    S662C5 *dp, &lv = *(dp=new (buf) S662C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S662C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S662C5)");
    check_field_offset(lv, s662c5f0, ABISELECT(8,4), "S662C5.s662c5f0");
    check_field_offset(lv, s662c5f1, ABISELECT(16,8), "S662C5.s662c5f1");
    check_field_offset(lv, s662c5f2, ABISELECT(24,16), "S662C5.s662c5f2");
    check_field_offset(lv, s662c5f3, ABISELECT(56,32), "S662C5.s662c5f3");
    check_field_offset(lv, s662c5f4, ABISELECT(64,40), "S662C5.s662c5f4");
    check_field_offset(lv, s662c5f5, ABISELECT(72,44), "S662C5.s662c5f5");
    check_field_offset(lv, s662c5f6, ABISELECT(80,52), "S662C5.s662c5f6");
    test_class_info(&lv, &cd_S662C5);
    dp->~S662C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS662C5(Test_S662C5, "S662C5", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN6S662C5C1Ev();
extern void _ZN6S662C5D1Ev();
Name_Map name_map_S662C5[] = {
  NSPAIR(_ZN6S662C5C1Ev),
  NSPAIR(_ZN6S662C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI6S662C5[];
extern void _ZN6S662C5D1Ev();
extern void _ZN6S662C5D0Ev();
extern void _ZN6S662C52v6Ev();
extern void _ZN6S662C52v7Ev();
extern void _ZN6S662C52v8Ev();
extern void _ZN6S662C52v9Ev();
extern void _ZN6S662C53v10Ev();
extern void _ZN6S662C53v11Ev();
extern void _ZN6S662C53v12Ev();
extern void _ZN6S662C53v13Ev();
extern void _ZN6S662C53v14Ev();
extern void _ZN6S662C53v15Ev();
extern void _ZN6S662C53v16Ev();
extern void _ZN6S662C53v17Ev();
extern void _ZN6S662C53v18Ev();
extern void _ZN6S662C53v19Ev();
extern void _ZN6S662C53v20Ev();
extern void _ZN6S662C53v21Ev();
extern void _ZN6S662C53v22Ev();
extern void _ZN6S662C53v23Ev();
extern void _ZN6S662C53v24Ev();
extern void _ZN6S662C53v25Ev();
extern void _ZN6S662C53v26Ev();
extern void _ZN6S662C53v27Ev();
extern void _ZN6S662C53v28Ev();
extern void _ZN6S662C53v29Ev();
extern void _ZN6S662C53v30Ev();
extern void _ZN6S662C53v31Ev();
extern void _ZN6S662C53v32Ev();
extern void _ZN6S662C53v33Ev();
extern void _ZN6S662C53v34Ev();
extern void _ZN6S662C53v35Ev();
extern void _ZN6S662C53v36Ev();
extern void _ZN6S662C53v37Ev();
extern void _ZN6S662C53v38Ev();
extern void _ZN6S662C53v39Ev();
extern void _ZN6S662C53v40Ev();
extern void _ZN6S662C53v41Ev();
extern void _ZN6S662C53v42Ev();
extern void _ZN6S662C53v43Ev();
extern void _ZN6S662C53v44Ev();
extern void _ZN6S662C53v45Ev();
extern void _ZN6S662C53v46Ev();
extern void _ZN6S662C53v47Ev();
extern void _ZN6S662C53v48Ev();
extern void _ZN6S662C53v49Ev();
extern void _ZN6S662C53v50Ev();
extern void _ZN6S662C53v51Ev();
extern void _ZN6S662C53v52Ev();
extern void _ZN6S662C53v53Ev();
extern void _ZN6S662C53v54Ev();
extern void _ZN6S662C53v55Ev();
extern void _ZN6S662C53v56Ev();
extern void _ZN6S662C53v57Ev();
extern void _ZN6S662C53v58Ev();
extern void _ZN6S662C53v59Ev();
extern void _ZN6S662C53v60Ev();
extern void _ZN6S662C53v61Ev();
extern void _ZN6S662C53v62Ev();
extern void _ZN6S662C53v63Ev();
extern void _ZN6S662C53v64Ev();
extern void _ZN6S662C53v65Ev();
extern void _ZN6S662C53v66Ev();
extern void _ZN6S662C53v67Ev();
extern void _ZN6S662C53v68Ev();
extern void _ZN6S662C53v69Ev();
static  VTBL_ENTRY vtc_S662C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S662C5[0]),
  (VTBL_ENTRY)&_ZN6S662C5D1Ev,
  (VTBL_ENTRY)&_ZN6S662C5D0Ev,
  (VTBL_ENTRY)&_ZN6S662C52v6Ev,
  (VTBL_ENTRY)&_ZN6S662C52v7Ev,
  (VTBL_ENTRY)&_ZN6S662C52v8Ev,
  (VTBL_ENTRY)&_ZN6S662C52v9Ev,
  (VTBL_ENTRY)&_ZN6S662C53v10Ev,
  (VTBL_ENTRY)&_ZN6S662C53v11Ev,
  (VTBL_ENTRY)&_ZN6S662C53v12Ev,
  (VTBL_ENTRY)&_ZN6S662C53v13Ev,
  (VTBL_ENTRY)&_ZN6S662C53v14Ev,
  (VTBL_ENTRY)&_ZN6S662C53v15Ev,
  (VTBL_ENTRY)&_ZN6S662C53v16Ev,
  (VTBL_ENTRY)&_ZN6S662C53v17Ev,
  (VTBL_ENTRY)&_ZN6S662C53v18Ev,
  (VTBL_ENTRY)&_ZN6S662C53v19Ev,
  (VTBL_ENTRY)&_ZN6S662C53v20Ev,
  (VTBL_ENTRY)&_ZN6S662C53v21Ev,
  (VTBL_ENTRY)&_ZN6S662C53v22Ev,
  (VTBL_ENTRY)&_ZN6S662C53v23Ev,
  (VTBL_ENTRY)&_ZN6S662C53v24Ev,
  (VTBL_ENTRY)&_ZN6S662C53v25Ev,
  (VTBL_ENTRY)&_ZN6S662C53v26Ev,
  (VTBL_ENTRY)&_ZN6S662C53v27Ev,
  (VTBL_ENTRY)&_ZN6S662C53v28Ev,
  (VTBL_ENTRY)&_ZN6S662C53v29Ev,
  (VTBL_ENTRY)&_ZN6S662C53v30Ev,
  (VTBL_ENTRY)&_ZN6S662C53v31Ev,
  (VTBL_ENTRY)&_ZN6S662C53v32Ev,
  (VTBL_ENTRY)&_ZN6S662C53v33Ev,
  (VTBL_ENTRY)&_ZN6S662C53v34Ev,
  (VTBL_ENTRY)&_ZN6S662C53v35Ev,
  (VTBL_ENTRY)&_ZN6S662C53v36Ev,
  (VTBL_ENTRY)&_ZN6S662C53v37Ev,
  (VTBL_ENTRY)&_ZN6S662C53v38Ev,
  (VTBL_ENTRY)&_ZN6S662C53v39Ev,
  (VTBL_ENTRY)&_ZN6S662C53v40Ev,
  (VTBL_ENTRY)&_ZN6S662C53v41Ev,
  (VTBL_ENTRY)&_ZN6S662C53v42Ev,
  (VTBL_ENTRY)&_ZN6S662C53v43Ev,
  (VTBL_ENTRY)&_ZN6S662C53v44Ev,
  (VTBL_ENTRY)&_ZN6S662C53v45Ev,
  (VTBL_ENTRY)&_ZN6S662C53v46Ev,
  (VTBL_ENTRY)&_ZN6S662C53v47Ev,
  (VTBL_ENTRY)&_ZN6S662C53v48Ev,
  (VTBL_ENTRY)&_ZN6S662C53v49Ev,
  (VTBL_ENTRY)&_ZN6S662C53v50Ev,
  (VTBL_ENTRY)&_ZN6S662C53v51Ev,
  (VTBL_ENTRY)&_ZN6S662C53v52Ev,
  (VTBL_ENTRY)&_ZN6S662C53v53Ev,
  (VTBL_ENTRY)&_ZN6S662C53v54Ev,
  (VTBL_ENTRY)&_ZN6S662C53v55Ev,
  (VTBL_ENTRY)&_ZN6S662C53v56Ev,
  (VTBL_ENTRY)&_ZN6S662C53v57Ev,
  (VTBL_ENTRY)&_ZN6S662C53v58Ev,
  (VTBL_ENTRY)&_ZN6S662C53v59Ev,
  (VTBL_ENTRY)&_ZN6S662C53v60Ev,
  (VTBL_ENTRY)&_ZN6S662C53v61Ev,
  (VTBL_ENTRY)&_ZN6S662C53v62Ev,
  (VTBL_ENTRY)&_ZN6S662C53v63Ev,
  (VTBL_ENTRY)&_ZN6S662C53v64Ev,
  (VTBL_ENTRY)&_ZN6S662C53v65Ev,
  (VTBL_ENTRY)&_ZN6S662C53v66Ev,
  (VTBL_ENTRY)&_ZN6S662C53v67Ev,
  (VTBL_ENTRY)&_ZN6S662C53v68Ev,
  (VTBL_ENTRY)&_ZN6S662C53v69Ev,
};
extern VTBL_ENTRY _ZTI6S662C5[];
extern  VTBL_ENTRY _ZTV6S662C5[];
Class_Descriptor cd_S662C5 = {  "S662C5", // class name
  0,0,//no base classes
  &(vtc_S662C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI6S662C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV6S662C5),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  S662C4_nt  : S662C5 {
  void *s662c4f0;
  ::S1540C5_nt s662c4f1;
  virtual  ~S662C4_nt(); // _ZN9S662C4_ntD1Ev
  virtual void  v70(); // _ZN9S662C4_nt3v70Ev
  virtual void  v71(); // _ZN9S662C4_nt3v71Ev
  virtual void  v72(); // _ZN9S662C4_nt3v72Ev
  virtual void  v73(); // _ZN9S662C4_nt3v73Ev
  virtual void  v74(); // _ZN9S662C4_nt3v74Ev
  S662C4_nt(); // tgen
};
//SIG(-1 S662C4_nt) 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 Fp FC3}


 S662C4_nt ::~S662C4_nt(){ note_dtor("S662C4_nt", this);}
void  S662C4_nt ::v70(){vfunc_called(this, "_ZN9S662C4_nt3v70Ev");}
void  S662C4_nt ::v71(){vfunc_called(this, "_ZN9S662C4_nt3v71Ev");}
void  S662C4_nt ::v72(){vfunc_called(this, "_ZN9S662C4_nt3v72Ev");}
void  S662C4_nt ::v73(){vfunc_called(this, "_ZN9S662C4_nt3v73Ev");}
void  S662C4_nt ::v74(){vfunc_called(this, "_ZN9S662C4_nt3v74Ev");}
S662C4_nt ::S662C4_nt(){ note_ctor("S662C4_nt", this);} // tgen

//skip512 S662C4_nt

#else // __cplusplus

extern void _ZN9S662C4_ntC1Ev();
extern void _ZN9S662C4_ntD1Ev();
Name_Map name_map_S662C4_nt[] = {
  NSPAIR(_ZN9S662C4_ntC1Ev),
  NSPAIR(_ZN9S662C4_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C5;
extern VTBL_ENTRY _ZTI6S662C5[];
extern  VTBL_ENTRY _ZTV6S662C5[];
static Base_Class bases_S662C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S662C4_nt[];
extern void _ZN9S662C4_ntD1Ev();
extern void _ZN9S662C4_ntD0Ev();
extern void _ZN6S662C52v6Ev();
extern void _ZN6S662C52v7Ev();
extern void _ZN6S662C52v8Ev();
extern void _ZN6S662C52v9Ev();
extern void _ZN6S662C53v10Ev();
extern void _ZN6S662C53v11Ev();
extern void _ZN6S662C53v12Ev();
extern void _ZN6S662C53v13Ev();
extern void _ZN6S662C53v14Ev();
extern void _ZN6S662C53v15Ev();
extern void _ZN6S662C53v16Ev();
extern void _ZN6S662C53v17Ev();
extern void _ZN6S662C53v18Ev();
extern void _ZN6S662C53v19Ev();
extern void _ZN6S662C53v20Ev();
extern void _ZN6S662C53v21Ev();
extern void _ZN6S662C53v22Ev();
extern void _ZN6S662C53v23Ev();
extern void _ZN6S662C53v24Ev();
extern void _ZN6S662C53v25Ev();
extern void _ZN6S662C53v26Ev();
extern void _ZN6S662C53v27Ev();
extern void _ZN6S662C53v28Ev();
extern void _ZN6S662C53v29Ev();
extern void _ZN6S662C53v30Ev();
extern void _ZN6S662C53v31Ev();
extern void _ZN6S662C53v32Ev();
extern void _ZN6S662C53v33Ev();
extern void _ZN6S662C53v34Ev();
extern void _ZN6S662C53v35Ev();
extern void _ZN6S662C53v36Ev();
extern void _ZN6S662C53v37Ev();
extern void _ZN6S662C53v38Ev();
extern void _ZN6S662C53v39Ev();
extern void _ZN6S662C53v40Ev();
extern void _ZN6S662C53v41Ev();
extern void _ZN6S662C53v42Ev();
extern void _ZN6S662C53v43Ev();
extern void _ZN6S662C53v44Ev();
extern void _ZN6S662C53v45Ev();
extern void _ZN6S662C53v46Ev();
extern void _ZN6S662C53v47Ev();
extern void _ZN6S662C53v48Ev();
extern void _ZN6S662C53v49Ev();
extern void _ZN6S662C53v50Ev();
extern void _ZN6S662C53v51Ev();
extern void _ZN6S662C53v52Ev();
extern void _ZN6S662C53v53Ev();
extern void _ZN6S662C53v54Ev();
extern void _ZN6S662C53v55Ev();
extern void _ZN6S662C53v56Ev();
extern void _ZN6S662C53v57Ev();
extern void _ZN6S662C53v58Ev();
extern void _ZN6S662C53v59Ev();
extern void _ZN6S662C53v60Ev();
extern void _ZN6S662C53v61Ev();
extern void _ZN6S662C53v62Ev();
extern void _ZN6S662C53v63Ev();
extern void _ZN6S662C53v64Ev();
extern void _ZN6S662C53v65Ev();
extern void _ZN6S662C53v66Ev();
extern void _ZN6S662C53v67Ev();
extern void _ZN6S662C53v68Ev();
extern void _ZN6S662C53v69Ev();
extern void _ZN9S662C4_nt3v70Ev();
extern void _ZN9S662C4_nt3v71Ev();
extern void _ZN9S662C4_nt3v72Ev();
extern void _ZN9S662C4_nt3v73Ev();
extern void _ZN9S662C4_nt3v74Ev();
static  VTBL_ENTRY vtc_S662C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S662C4_nt[0]),
  (VTBL_ENTRY)&_ZN9S662C4_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S662C4_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S662C52v6Ev,
  (VTBL_ENTRY)&_ZN6S662C52v7Ev,
  (VTBL_ENTRY)&_ZN6S662C52v8Ev,
  (VTBL_ENTRY)&_ZN6S662C52v9Ev,
  (VTBL_ENTRY)&_ZN6S662C53v10Ev,
  (VTBL_ENTRY)&_ZN6S662C53v11Ev,
  (VTBL_ENTRY)&_ZN6S662C53v12Ev,
  (VTBL_ENTRY)&_ZN6S662C53v13Ev,
  (VTBL_ENTRY)&_ZN6S662C53v14Ev,
  (VTBL_ENTRY)&_ZN6S662C53v15Ev,
  (VTBL_ENTRY)&_ZN6S662C53v16Ev,
  (VTBL_ENTRY)&_ZN6S662C53v17Ev,
  (VTBL_ENTRY)&_ZN6S662C53v18Ev,
  (VTBL_ENTRY)&_ZN6S662C53v19Ev,
  (VTBL_ENTRY)&_ZN6S662C53v20Ev,
  (VTBL_ENTRY)&_ZN6S662C53v21Ev,
  (VTBL_ENTRY)&_ZN6S662C53v22Ev,
  (VTBL_ENTRY)&_ZN6S662C53v23Ev,
  (VTBL_ENTRY)&_ZN6S662C53v24Ev,
  (VTBL_ENTRY)&_ZN6S662C53v25Ev,
  (VTBL_ENTRY)&_ZN6S662C53v26Ev,
  (VTBL_ENTRY)&_ZN6S662C53v27Ev,
  (VTBL_ENTRY)&_ZN6S662C53v28Ev,
  (VTBL_ENTRY)&_ZN6S662C53v29Ev,
  (VTBL_ENTRY)&_ZN6S662C53v30Ev,
  (VTBL_ENTRY)&_ZN6S662C53v31Ev,
  (VTBL_ENTRY)&_ZN6S662C53v32Ev,
  (VTBL_ENTRY)&_ZN6S662C53v33Ev,
  (VTBL_ENTRY)&_ZN6S662C53v34Ev,
  (VTBL_ENTRY)&_ZN6S662C53v35Ev,
  (VTBL_ENTRY)&_ZN6S662C53v36Ev,
  (VTBL_ENTRY)&_ZN6S662C53v37Ev,
  (VTBL_ENTRY)&_ZN6S662C53v38Ev,
  (VTBL_ENTRY)&_ZN6S662C53v39Ev,
  (VTBL_ENTRY)&_ZN6S662C53v40Ev,
  (VTBL_ENTRY)&_ZN6S662C53v41Ev,
  (VTBL_ENTRY)&_ZN6S662C53v42Ev,
  (VTBL_ENTRY)&_ZN6S662C53v43Ev,
  (VTBL_ENTRY)&_ZN6S662C53v44Ev,
  (VTBL_ENTRY)&_ZN6S662C53v45Ev,
  (VTBL_ENTRY)&_ZN6S662C53v46Ev,
  (VTBL_ENTRY)&_ZN6S662C53v47Ev,
  (VTBL_ENTRY)&_ZN6S662C53v48Ev,
  (VTBL_ENTRY)&_ZN6S662C53v49Ev,
  (VTBL_ENTRY)&_ZN6S662C53v50Ev,
  (VTBL_ENTRY)&_ZN6S662C53v51Ev,
  (VTBL_ENTRY)&_ZN6S662C53v52Ev,
  (VTBL_ENTRY)&_ZN6S662C53v53Ev,
  (VTBL_ENTRY)&_ZN6S662C53v54Ev,
  (VTBL_ENTRY)&_ZN6S662C53v55Ev,
  (VTBL_ENTRY)&_ZN6S662C53v56Ev,
  (VTBL_ENTRY)&_ZN6S662C53v57Ev,
  (VTBL_ENTRY)&_ZN6S662C53v58Ev,
  (VTBL_ENTRY)&_ZN6S662C53v59Ev,
  (VTBL_ENTRY)&_ZN6S662C53v60Ev,
  (VTBL_ENTRY)&_ZN6S662C53v61Ev,
  (VTBL_ENTRY)&_ZN6S662C53v62Ev,
  (VTBL_ENTRY)&_ZN6S662C53v63Ev,
  (VTBL_ENTRY)&_ZN6S662C53v64Ev,
  (VTBL_ENTRY)&_ZN6S662C53v65Ev,
  (VTBL_ENTRY)&_ZN6S662C53v66Ev,
  (VTBL_ENTRY)&_ZN6S662C53v67Ev,
  (VTBL_ENTRY)&_ZN6S662C53v68Ev,
  (VTBL_ENTRY)&_ZN6S662C53v69Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v74Ev,
};
extern VTBL_ENTRY _ZTI9S662C4_nt[];
VTBL_ENTRY *P__ZTI9S662C4_nt = _ZTI9S662C4_nt; 
extern  VTBL_ENTRY _ZTV9S662C4_nt[];
Class_Descriptor cd_S662C4_nt = {  "S662C4_nt", // class name
  bases_S662C4_nt, 1,
  &(vtc_S662C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI9S662C4_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S662C4_nt),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  S662C3_nt  : S662C4_nt {
  void *s662c3f0[2];
  unsigned int s662c3f1:1;
  unsigned int s662c3f2:1;
  unsigned int s662c3f3:1;
  unsigned int s662c3f4:1;
  char s662c3f5;
  virtual  ~S662C3_nt(); // _ZN9S662C3_ntD1Ev
  virtual void  v75(); // _ZN9S662C3_nt3v75Ev
  virtual void  v76(); // _ZN9S662C3_nt3v76Ev
  virtual void  v77(); // _ZN9S662C3_nt3v77Ev
  virtual void  v78(); // _ZN9S662C3_nt3v78Ev
  virtual void  v79(); // _ZN9S662C3_nt3v79Ev
  virtual void  v80(); // _ZN9S662C3_nt3v80Ev
  virtual void  v81(); // _ZN9S662C3_nt3v81Ev
  virtual void  v82(); // _ZN9S662C3_nt3v82Ev
  virtual void  v83(); // _ZN9S662C3_nt3v83Ev
  virtual void  v84(); // _ZN9S662C3_nt3v84Ev
  virtual void  v85(); // _ZN9S662C3_nt3v85Ev
  virtual void  v86(); // _ZN9S662C3_nt3v86Ev
  virtual void  v87(); // _ZN9S662C3_nt3v87Ev
  virtual void  v88(); // _ZN9S662C3_nt3v88Ev
  virtual void  v89(); // _ZN9S662C3_nt3v89Ev
  virtual void  v90(); // _ZN9S662C3_nt3v90Ev
  virtual void  v91(); // _ZN9S662C3_nt3v91Ev
  virtual void  v92(); // _ZN9S662C3_nt3v92Ev
  virtual void  v93(); // _ZN9S662C3_nt3v93Ev
  virtual void  v94(); // _ZN9S662C3_nt3v94Ev
  virtual void  v95(); // _ZN9S662C3_nt3v95Ev
  virtual void  v96(); // _ZN9S662C3_nt3v96Ev
  S662C3_nt(); // tgen
};
//SIG(-1 S662C3_nt) C1{ BC2{ BC3{ 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 FC4{ m Fi[2]} Fp[2]} vd v87 v88 v89 v90 v91 Fp FC4} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fc}


 S662C3_nt ::~S662C3_nt(){ note_dtor("S662C3_nt", this);}
void  S662C3_nt ::v75(){vfunc_called(this, "_ZN9S662C3_nt3v75Ev");}
void  S662C3_nt ::v76(){vfunc_called(this, "_ZN9S662C3_nt3v76Ev");}
void  S662C3_nt ::v77(){vfunc_called(this, "_ZN9S662C3_nt3v77Ev");}
void  S662C3_nt ::v78(){vfunc_called(this, "_ZN9S662C3_nt3v78Ev");}
void  S662C3_nt ::v79(){vfunc_called(this, "_ZN9S662C3_nt3v79Ev");}
void  S662C3_nt ::v80(){vfunc_called(this, "_ZN9S662C3_nt3v80Ev");}
void  S662C3_nt ::v81(){vfunc_called(this, "_ZN9S662C3_nt3v81Ev");}
void  S662C3_nt ::v82(){vfunc_called(this, "_ZN9S662C3_nt3v82Ev");}
void  S662C3_nt ::v83(){vfunc_called(this, "_ZN9S662C3_nt3v83Ev");}
void  S662C3_nt ::v84(){vfunc_called(this, "_ZN9S662C3_nt3v84Ev");}
void  S662C3_nt ::v85(){vfunc_called(this, "_ZN9S662C3_nt3v85Ev");}
void  S662C3_nt ::v86(){vfunc_called(this, "_ZN9S662C3_nt3v86Ev");}
void  S662C3_nt ::v87(){vfunc_called(this, "_ZN9S662C3_nt3v87Ev");}
void  S662C3_nt ::v88(){vfunc_called(this, "_ZN9S662C3_nt3v88Ev");}
void  S662C3_nt ::v89(){vfunc_called(this, "_ZN9S662C3_nt3v89Ev");}
void  S662C3_nt ::v90(){vfunc_called(this, "_ZN9S662C3_nt3v90Ev");}
void  S662C3_nt ::v91(){vfunc_called(this, "_ZN9S662C3_nt3v91Ev");}
void  S662C3_nt ::v92(){vfunc_called(this, "_ZN9S662C3_nt3v92Ev");}
void  S662C3_nt ::v93(){vfunc_called(this, "_ZN9S662C3_nt3v93Ev");}
void  S662C3_nt ::v94(){vfunc_called(this, "_ZN9S662C3_nt3v94Ev");}
void  S662C3_nt ::v95(){vfunc_called(this, "_ZN9S662C3_nt3v95Ev");}
void  S662C3_nt ::v96(){vfunc_called(this, "_ZN9S662C3_nt3v96Ev");}
S662C3_nt ::S662C3_nt(){ note_ctor("S662C3_nt", this);} // tgen

//skip512 S662C3_nt

#else // __cplusplus

extern void _ZN9S662C3_ntC1Ev();
extern void _ZN9S662C3_ntD1Ev();
Name_Map name_map_S662C3_nt[] = {
  NSPAIR(_ZN9S662C3_ntC1Ev),
  NSPAIR(_ZN9S662C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C5;
extern VTBL_ENTRY _ZTI6S662C5[];
extern  VTBL_ENTRY _ZTV6S662C5[];
extern Class_Descriptor cd_S662C4_nt;
extern VTBL_ENTRY _ZTI9S662C4_nt[];
extern  VTBL_ENTRY _ZTV9S662C4_nt[];
static Base_Class bases_S662C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S662C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI9S662C3_nt[];
extern void _ZN9S662C3_ntD1Ev();
extern void _ZN9S662C3_ntD0Ev();
extern void _ZN6S662C52v6Ev();
extern void _ZN6S662C52v7Ev();
extern void _ZN6S662C52v8Ev();
extern void _ZN6S662C52v9Ev();
extern void _ZN6S662C53v10Ev();
extern void _ZN6S662C53v11Ev();
extern void _ZN6S662C53v12Ev();
extern void _ZN6S662C53v13Ev();
extern void _ZN6S662C53v14Ev();
extern void _ZN6S662C53v15Ev();
extern void _ZN6S662C53v16Ev();
extern void _ZN6S662C53v17Ev();
extern void _ZN6S662C53v18Ev();
extern void _ZN6S662C53v19Ev();
extern void _ZN6S662C53v20Ev();
extern void _ZN6S662C53v21Ev();
extern void _ZN6S662C53v22Ev();
extern void _ZN6S662C53v23Ev();
extern void _ZN6S662C53v24Ev();
extern void _ZN6S662C53v25Ev();
extern void _ZN6S662C53v26Ev();
extern void _ZN6S662C53v27Ev();
extern void _ZN6S662C53v28Ev();
extern void _ZN6S662C53v29Ev();
extern void _ZN6S662C53v30Ev();
extern void _ZN6S662C53v31Ev();
extern void _ZN6S662C53v32Ev();
extern void _ZN6S662C53v33Ev();
extern void _ZN6S662C53v34Ev();
extern void _ZN6S662C53v35Ev();
extern void _ZN6S662C53v36Ev();
extern void _ZN6S662C53v37Ev();
extern void _ZN6S662C53v38Ev();
extern void _ZN6S662C53v39Ev();
extern void _ZN6S662C53v40Ev();
extern void _ZN6S662C53v41Ev();
extern void _ZN6S662C53v42Ev();
extern void _ZN6S662C53v43Ev();
extern void _ZN6S662C53v44Ev();
extern void _ZN6S662C53v45Ev();
extern void _ZN6S662C53v46Ev();
extern void _ZN6S662C53v47Ev();
extern void _ZN6S662C53v48Ev();
extern void _ZN6S662C53v49Ev();
extern void _ZN6S662C53v50Ev();
extern void _ZN6S662C53v51Ev();
extern void _ZN6S662C53v52Ev();
extern void _ZN6S662C53v53Ev();
extern void _ZN6S662C53v54Ev();
extern void _ZN6S662C53v55Ev();
extern void _ZN6S662C53v56Ev();
extern void _ZN6S662C53v57Ev();
extern void _ZN6S662C53v58Ev();
extern void _ZN6S662C53v59Ev();
extern void _ZN6S662C53v60Ev();
extern void _ZN6S662C53v61Ev();
extern void _ZN6S662C53v62Ev();
extern void _ZN6S662C53v63Ev();
extern void _ZN6S662C53v64Ev();
extern void _ZN6S662C53v65Ev();
extern void _ZN6S662C53v66Ev();
extern void _ZN6S662C53v67Ev();
extern void _ZN6S662C53v68Ev();
extern void _ZN6S662C53v69Ev();
extern void _ZN9S662C4_nt3v70Ev();
extern void _ZN9S662C4_nt3v71Ev();
extern void _ZN9S662C4_nt3v72Ev();
extern void _ZN9S662C4_nt3v73Ev();
extern void _ZN9S662C4_nt3v74Ev();
extern void _ZN9S662C3_nt3v75Ev();
extern void _ZN9S662C3_nt3v76Ev();
extern void _ZN9S662C3_nt3v77Ev();
extern void _ZN9S662C3_nt3v78Ev();
extern void _ZN9S662C3_nt3v79Ev();
extern void _ZN9S662C3_nt3v80Ev();
extern void _ZN9S662C3_nt3v81Ev();
extern void _ZN9S662C3_nt3v82Ev();
extern void _ZN9S662C3_nt3v83Ev();
extern void _ZN9S662C3_nt3v84Ev();
extern void _ZN9S662C3_nt3v85Ev();
extern void _ZN9S662C3_nt3v86Ev();
extern void _ZN9S662C3_nt3v87Ev();
extern void _ZN9S662C3_nt3v88Ev();
extern void _ZN9S662C3_nt3v89Ev();
extern void _ZN9S662C3_nt3v90Ev();
extern void _ZN9S662C3_nt3v91Ev();
extern void _ZN9S662C3_nt3v92Ev();
extern void _ZN9S662C3_nt3v93Ev();
extern void _ZN9S662C3_nt3v94Ev();
extern void _ZN9S662C3_nt3v95Ev();
extern void _ZN9S662C3_nt3v96Ev();
static  VTBL_ENTRY vtc_S662C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S662C3_nt[0]),
  (VTBL_ENTRY)&_ZN9S662C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S662C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S662C52v6Ev,
  (VTBL_ENTRY)&_ZN6S662C52v7Ev,
  (VTBL_ENTRY)&_ZN6S662C52v8Ev,
  (VTBL_ENTRY)&_ZN6S662C52v9Ev,
  (VTBL_ENTRY)&_ZN6S662C53v10Ev,
  (VTBL_ENTRY)&_ZN6S662C53v11Ev,
  (VTBL_ENTRY)&_ZN6S662C53v12Ev,
  (VTBL_ENTRY)&_ZN6S662C53v13Ev,
  (VTBL_ENTRY)&_ZN6S662C53v14Ev,
  (VTBL_ENTRY)&_ZN6S662C53v15Ev,
  (VTBL_ENTRY)&_ZN6S662C53v16Ev,
  (VTBL_ENTRY)&_ZN6S662C53v17Ev,
  (VTBL_ENTRY)&_ZN6S662C53v18Ev,
  (VTBL_ENTRY)&_ZN6S662C53v19Ev,
  (VTBL_ENTRY)&_ZN6S662C53v20Ev,
  (VTBL_ENTRY)&_ZN6S662C53v21Ev,
  (VTBL_ENTRY)&_ZN6S662C53v22Ev,
  (VTBL_ENTRY)&_ZN6S662C53v23Ev,
  (VTBL_ENTRY)&_ZN6S662C53v24Ev,
  (VTBL_ENTRY)&_ZN6S662C53v25Ev,
  (VTBL_ENTRY)&_ZN6S662C53v26Ev,
  (VTBL_ENTRY)&_ZN6S662C53v27Ev,
  (VTBL_ENTRY)&_ZN6S662C53v28Ev,
  (VTBL_ENTRY)&_ZN6S662C53v29Ev,
  (VTBL_ENTRY)&_ZN6S662C53v30Ev,
  (VTBL_ENTRY)&_ZN6S662C53v31Ev,
  (VTBL_ENTRY)&_ZN6S662C53v32Ev,
  (VTBL_ENTRY)&_ZN6S662C53v33Ev,
  (VTBL_ENTRY)&_ZN6S662C53v34Ev,
  (VTBL_ENTRY)&_ZN6S662C53v35Ev,
  (VTBL_ENTRY)&_ZN6S662C53v36Ev,
  (VTBL_ENTRY)&_ZN6S662C53v37Ev,
  (VTBL_ENTRY)&_ZN6S662C53v38Ev,
  (VTBL_ENTRY)&_ZN6S662C53v39Ev,
  (VTBL_ENTRY)&_ZN6S662C53v40Ev,
  (VTBL_ENTRY)&_ZN6S662C53v41Ev,
  (VTBL_ENTRY)&_ZN6S662C53v42Ev,
  (VTBL_ENTRY)&_ZN6S662C53v43Ev,
  (VTBL_ENTRY)&_ZN6S662C53v44Ev,
  (VTBL_ENTRY)&_ZN6S662C53v45Ev,
  (VTBL_ENTRY)&_ZN6S662C53v46Ev,
  (VTBL_ENTRY)&_ZN6S662C53v47Ev,
  (VTBL_ENTRY)&_ZN6S662C53v48Ev,
  (VTBL_ENTRY)&_ZN6S662C53v49Ev,
  (VTBL_ENTRY)&_ZN6S662C53v50Ev,
  (VTBL_ENTRY)&_ZN6S662C53v51Ev,
  (VTBL_ENTRY)&_ZN6S662C53v52Ev,
  (VTBL_ENTRY)&_ZN6S662C53v53Ev,
  (VTBL_ENTRY)&_ZN6S662C53v54Ev,
  (VTBL_ENTRY)&_ZN6S662C53v55Ev,
  (VTBL_ENTRY)&_ZN6S662C53v56Ev,
  (VTBL_ENTRY)&_ZN6S662C53v57Ev,
  (VTBL_ENTRY)&_ZN6S662C53v58Ev,
  (VTBL_ENTRY)&_ZN6S662C53v59Ev,
  (VTBL_ENTRY)&_ZN6S662C53v60Ev,
  (VTBL_ENTRY)&_ZN6S662C53v61Ev,
  (VTBL_ENTRY)&_ZN6S662C53v62Ev,
  (VTBL_ENTRY)&_ZN6S662C53v63Ev,
  (VTBL_ENTRY)&_ZN6S662C53v64Ev,
  (VTBL_ENTRY)&_ZN6S662C53v65Ev,
  (VTBL_ENTRY)&_ZN6S662C53v66Ev,
  (VTBL_ENTRY)&_ZN6S662C53v67Ev,
  (VTBL_ENTRY)&_ZN6S662C53v68Ev,
  (VTBL_ENTRY)&_ZN6S662C53v69Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v96Ev,
};
extern VTBL_ENTRY _ZTI9S662C3_nt[];
VTBL_ENTRY *P__ZTI9S662C3_nt = _ZTI9S662C3_nt; 
extern  VTBL_ENTRY _ZTV9S662C3_nt[];
Class_Descriptor cd_S662C3_nt = {  "S662C3_nt", // class name
  bases_S662C3_nt, 2,
  &(vtc_S662C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(136,84), // object size
  NSPAIRA(_ZTI9S662C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S662C3_nt),95, //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  S662C8_nt  {
  void  mf662c8(); // _ZN9S662C8_nt7mf662c8Ev
};
//SIG(-1 S662C8_nt) C1{ m}


void  S662C8_nt ::mf662c8(){}

//skip512 S662C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S662C11_nt  {
  ::S1540C14_nt s662c11f0;
  ::S1540C14_nt s662c11f1;
  int s662c11f2;
  void  mf662c11(); // _ZN10S662C11_nt8mf662c11Ev
};
//SIG(-1 S662C11_nt) C1{ m FC2{ m Fi[3]} FC2 Fi}


void  S662C11_nt ::mf662c11(){}

//skip512 S662C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S662C14  {
  void  mf662c14(); // _ZN7S662C148mf662c14Ev
};
//SIG(-1 S662C14) C1{ m}


void  S662C14 ::mf662c14(){}

static void Test_S662C14()
{
  {
    init_simple_test("S662C14");
    S662C14 lv;
    check2(sizeof(lv), 1, "sizeof(S662C14)");
    check2(__alignof__(lv), 1, "__alignof__(S662C14)");
  }
}
static Arrange_To_Call_Me vS662C14(Test_S662C14, "S662C14", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI7S662C14[];
VTBL_ENTRY *P__ZTI7S662C14 = _ZTI7S662C14; 
Class_Descriptor cd_S662C14 = {  "S662C14", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI7S662C14),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  S662C17_nt  {
  int s662c17f0[3];
  void  mf662c17(); // _ZN10S662C17_nt8mf662c17Ev
};
//SIG(-1 S662C17_nt) C1{ m Fi[3]}


void  S662C17_nt ::mf662c17(){}

//skip512 S662C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S662C2_nt  : S662C3_nt {
  void *s662c2f0;
  ::S1540C9_nt s662c2f1;
  int s662c2f2;
  ::S662C8_nt s662c2f3;
  int s662c2f4;
  ::S1540C29 s662c2f5;
  int s662c2f6;
  void *s662c2f7[2];
  ::S662C11_nt s662c2f8;
  void *s662c2f9;
  int s662c2f10[2];
  char s662c2f11[3];
  int s662c2f12;
  unsigned int s662c2f13:1;
  unsigned int s662c2f14:1;
  unsigned int s662c2f15:1;
  unsigned int s662c2f16:1;
  unsigned int s662c2f17:1;
  unsigned int s662c2f18:1;
  unsigned int s662c2f19:1;
  unsigned int s662c2f20:1;
  unsigned int s662c2f21:1;
  unsigned int s662c2f22:1;
  unsigned int s662c2f23:1;
  unsigned int s662c2f24:1;
  unsigned int s662c2f25:1;
  unsigned int s662c2f26:1;
  int s662c2f27;
  unsigned int s662c2f28:1;
  unsigned int s662c2f29:1;
  unsigned int s662c2f30:1;
  unsigned int s662c2f31:1;
  unsigned int s662c2f32:1;
  unsigned int s662c2f33:1;
  ::S662C8_nt s662c2f34;
  unsigned int s662c2f35:1;
  unsigned int s662c2f36:1;
  unsigned int s662c2f37:1;
  unsigned int s662c2f38:1;
  unsigned int s662c2f39:1;
  unsigned int s662c2f40:1;
  unsigned int s662c2f41:1;
  char s662c2f42;
  ::S662C14 s662c2f43;
  unsigned int s662c2f44:1;
  unsigned int s662c2f45:1;
  unsigned int s662c2f46:1;
  unsigned int s662c2f47:1;
  unsigned int s662c2f48:1;
  unsigned int s662c2f49:1;
  unsigned int s662c2f50:1;
  unsigned int s662c2f51:1;
  unsigned int s662c2f52:1;
  unsigned int s662c2f53:1;
  unsigned int s662c2f54:1;
  unsigned int s662c2f55:1;
  ::S1540C28 s662c2f56;
  void *s662c2f57[2];
  char s662c2f58;
  ::S662C8_nt s662c2f59;
  ::S1540C14_nt s662c2f60;
  ::S662C17_nt s662c2f61;
  int s662c2f62;
  ::S1540C14_nt s662c2f63;
  unsigned int s662c2f64:1;
  unsigned int s662c2f65:1;
  unsigned int s662c2f66:1;
  int s662c2f67[3];
  virtual  ~S662C2_nt(); // _ZN9S662C2_ntD1Ev
  virtual void  v97(); // _ZN9S662C2_nt3v97Ev
  virtual void  v98(); // _ZN9S662C2_nt3v98Ev
  virtual void  v99(); // _ZN9S662C2_nt3v99Ev
  virtual void  v100(); // _ZN9S662C2_nt4v100Ev
  virtual void  v101(); // _ZN9S662C2_nt4v101Ev
  virtual void  v102(); // _ZN9S662C2_nt4v102Ev
  virtual void  v103(); // _ZN9S662C2_nt4v103Ev
  virtual void  v104(); // _ZN9S662C2_nt4v104Ev
  virtual void  v105(); // _ZN9S662C2_nt4v105Ev
  virtual void  v106(); // _ZN9S662C2_nt4v106Ev
  virtual void  v107(); // _ZN9S662C2_nt4v107Ev
  virtual void  v108(); // _ZN9S662C2_nt4v108Ev
  virtual void  v109(); // _ZN9S662C2_nt4v109Ev
  virtual void  v110(); // _ZN9S662C2_nt4v110Ev
  virtual void  v111(); // _ZN9S662C2_nt4v111Ev
  virtual void  v112(); // _ZN9S662C2_nt4v112Ev
  virtual void  v113(); // _ZN9S662C2_nt4v113Ev
  virtual void  v114(); // _ZN9S662C2_nt4v114Ev
  virtual void  v115(); // _ZN9S662C2_nt4v115Ev
  virtual void  v116(); // _ZN9S662C2_nt4v116Ev
  virtual void  v117(); // _ZN9S662C2_nt4v117Ev
  virtual void  v118(); // _ZN9S662C2_nt4v118Ev
  virtual void  v119(); // _ZN9S662C2_nt4v119Ev
  virtual void  v120(); // _ZN9S662C2_nt4v120Ev
  virtual void  v121(); // _ZN9S662C2_nt4v121Ev
  virtual void  v122(); // _ZN9S662C2_nt4v122Ev
  virtual void  v123(); // _ZN9S662C2_nt4v123Ev
  virtual void  v124(); // _ZN9S662C2_nt4v124Ev
  virtual void  v125(); // _ZN9S662C2_nt4v125Ev
  virtual void  v126(); // _ZN9S662C2_nt4v126Ev
  virtual void  v127(); // _ZN9S662C2_nt4v127Ev
  virtual void  v128(); // _ZN9S662C2_nt4v128Ev
  virtual void  v129(); // _ZN9S662C2_nt4v129Ev
  virtual void  v130(); // _ZN9S662C2_nt4v130Ev
  virtual void  v131(); // _ZN9S662C2_nt4v131Ev
  virtual void  v132(); // _ZN9S662C2_nt4v132Ev
  virtual void  v133(); // _ZN9S662C2_nt4v133Ev
  virtual void  v134(); // _ZN9S662C2_nt4v134Ev
  virtual void  v135(); // _ZN9S662C2_nt4v135Ev
  virtual void  v136(); // _ZN9S662C2_nt4v136Ev
  virtual void  v137(); // _ZN9S662C2_nt4v137Ev
  virtual void  v138(); // _ZN9S662C2_nt4v138Ev
  virtual void  v139(); // _ZN9S662C2_nt4v139Ev
  virtual void  v140(); // _ZN9S662C2_nt4v140Ev
  virtual void  v141(); // _ZN9S662C2_nt4v141Ev
  virtual void  v142(); // _ZN9S662C2_nt4v142Ev
  virtual void  v143(); // _ZN9S662C2_nt4v143Ev
  virtual void  v144(); // _ZN9S662C2_nt4v144Ev
  virtual void  v145(); // _ZN9S662C2_nt4v145Ev
  virtual void  v146(); // _ZN9S662C2_nt4v146Ev
  virtual void  v147(); // _ZN9S662C2_nt4v147Ev
  virtual void  v148(); // _ZN9S662C2_nt4v148Ev
  virtual void  v149(); // _ZN9S662C2_nt4v149Ev
  virtual void  v150(); // _ZN9S662C2_nt4v150Ev
  virtual void  v151(); // _ZN9S662C2_nt4v151Ev
  virtual void  v152(); // _ZN9S662C2_nt4v152Ev
  virtual void  v153(); // _ZN9S662C2_nt4v153Ev
  virtual void  v154(); // _ZN9S662C2_nt4v154Ev
  virtual void  v155(); // _ZN9S662C2_nt4v155Ev
  virtual void  v156(); // _ZN9S662C2_nt4v156Ev
  virtual void  v157(); // _ZN9S662C2_nt4v157Ev
  S662C2_nt(); // tgen
};
//SIG(-1 S662C2_nt) C1{ BC2{ BC3{ BC4{ vd 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 Fi FL Fp[4] Fi[2] Fp FC5{ m Fi[2]} Fp[2]} vd v126 v127 v128 v129 v130 Fp FC5} vd v131 v132 v133 v134 v135 v136 v137 v138 v139 v140 v141 v142 v143 v144 v145 v146 v147 v148 v149 v150 v151 v152 Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 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 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 Fp FC6{ m Fi} Fi FC7{ m} Fi FC8{ BC9{ m Fp Fi[2]}} Fi Fp[2] FC10{ m FC11{ m Fi[3]} FC11 Fi} Fp Fi[2] Fc[3] Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC7 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc FC12{ m} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC13{ BC8} Fp[2] Fc FC7 FC11 FC14{ m Fi[3]} Fi FC11 Fi:1 Fi:1 Fi:1 Fi[3]}


 S662C2_nt ::~S662C2_nt(){ note_dtor("S662C2_nt", this);}
void  S662C2_nt ::v97(){vfunc_called(this, "_ZN9S662C2_nt3v97Ev");}
void  S662C2_nt ::v98(){vfunc_called(this, "_ZN9S662C2_nt3v98Ev");}
void  S662C2_nt ::v99(){vfunc_called(this, "_ZN9S662C2_nt3v99Ev");}
void  S662C2_nt ::v100(){vfunc_called(this, "_ZN9S662C2_nt4v100Ev");}
void  S662C2_nt ::v101(){vfunc_called(this, "_ZN9S662C2_nt4v101Ev");}
void  S662C2_nt ::v102(){vfunc_called(this, "_ZN9S662C2_nt4v102Ev");}
void  S662C2_nt ::v103(){vfunc_called(this, "_ZN9S662C2_nt4v103Ev");}
void  S662C2_nt ::v104(){vfunc_called(this, "_ZN9S662C2_nt4v104Ev");}
void  S662C2_nt ::v105(){vfunc_called(this, "_ZN9S662C2_nt4v105Ev");}
void  S662C2_nt ::v106(){vfunc_called(this, "_ZN9S662C2_nt4v106Ev");}
void  S662C2_nt ::v107(){vfunc_called(this, "_ZN9S662C2_nt4v107Ev");}
void  S662C2_nt ::v108(){vfunc_called(this, "_ZN9S662C2_nt4v108Ev");}
void  S662C2_nt ::v109(){vfunc_called(this, "_ZN9S662C2_nt4v109Ev");}
void  S662C2_nt ::v110(){vfunc_called(this, "_ZN9S662C2_nt4v110Ev");}
void  S662C2_nt ::v111(){vfunc_called(this, "_ZN9S662C2_nt4v111Ev");}
void  S662C2_nt ::v112(){vfunc_called(this, "_ZN9S662C2_nt4v112Ev");}
void  S662C2_nt ::v113(){vfunc_called(this, "_ZN9S662C2_nt4v113Ev");}
void  S662C2_nt ::v114(){vfunc_called(this, "_ZN9S662C2_nt4v114Ev");}
void  S662C2_nt ::v115(){vfunc_called(this, "_ZN9S662C2_nt4v115Ev");}
void  S662C2_nt ::v116(){vfunc_called(this, "_ZN9S662C2_nt4v116Ev");}
void  S662C2_nt ::v117(){vfunc_called(this, "_ZN9S662C2_nt4v117Ev");}
void  S662C2_nt ::v118(){vfunc_called(this, "_ZN9S662C2_nt4v118Ev");}
void  S662C2_nt ::v119(){vfunc_called(this, "_ZN9S662C2_nt4v119Ev");}
void  S662C2_nt ::v120(){vfunc_called(this, "_ZN9S662C2_nt4v120Ev");}
void  S662C2_nt ::v121(){vfunc_called(this, "_ZN9S662C2_nt4v121Ev");}
void  S662C2_nt ::v122(){vfunc_called(this, "_ZN9S662C2_nt4v122Ev");}
void  S662C2_nt ::v123(){vfunc_called(this, "_ZN9S662C2_nt4v123Ev");}
void  S662C2_nt ::v124(){vfunc_called(this, "_ZN9S662C2_nt4v124Ev");}
void  S662C2_nt ::v125(){vfunc_called(this, "_ZN9S662C2_nt4v125Ev");}
void  S662C2_nt ::v126(){vfunc_called(this, "_ZN9S662C2_nt4v126Ev");}
void  S662C2_nt ::v127(){vfunc_called(this, "_ZN9S662C2_nt4v127Ev");}
void  S662C2_nt ::v128(){vfunc_called(this, "_ZN9S662C2_nt4v128Ev");}
void  S662C2_nt ::v129(){vfunc_called(this, "_ZN9S662C2_nt4v129Ev");}
void  S662C2_nt ::v130(){vfunc_called(this, "_ZN9S662C2_nt4v130Ev");}
void  S662C2_nt ::v131(){vfunc_called(this, "_ZN9S662C2_nt4v131Ev");}
void  S662C2_nt ::v132(){vfunc_called(this, "_ZN9S662C2_nt4v132Ev");}
void  S662C2_nt ::v133(){vfunc_called(this, "_ZN9S662C2_nt4v133Ev");}
void  S662C2_nt ::v134(){vfunc_called(this, "_ZN9S662C2_nt4v134Ev");}
void  S662C2_nt ::v135(){vfunc_called(this, "_ZN9S662C2_nt4v135Ev");}
void  S662C2_nt ::v136(){vfunc_called(this, "_ZN9S662C2_nt4v136Ev");}
void  S662C2_nt ::v137(){vfunc_called(this, "_ZN9S662C2_nt4v137Ev");}
void  S662C2_nt ::v138(){vfunc_called(this, "_ZN9S662C2_nt4v138Ev");}
void  S662C2_nt ::v139(){vfunc_called(this, "_ZN9S662C2_nt4v139Ev");}
void  S662C2_nt ::v140(){vfunc_called(this, "_ZN9S662C2_nt4v140Ev");}
void  S662C2_nt ::v141(){vfunc_called(this, "_ZN9S662C2_nt4v141Ev");}
void  S662C2_nt ::v142(){vfunc_called(this, "_ZN9S662C2_nt4v142Ev");}
void  S662C2_nt ::v143(){vfunc_called(this, "_ZN9S662C2_nt4v143Ev");}
void  S662C2_nt ::v144(){vfunc_called(this, "_ZN9S662C2_nt4v144Ev");}
void  S662C2_nt ::v145(){vfunc_called(this, "_ZN9S662C2_nt4v145Ev");}
void  S662C2_nt ::v146(){vfunc_called(this, "_ZN9S662C2_nt4v146Ev");}
void  S662C2_nt ::v147(){vfunc_called(this, "_ZN9S662C2_nt4v147Ev");}
void  S662C2_nt ::v148(){vfunc_called(this, "_ZN9S662C2_nt4v148Ev");}
void  S662C2_nt ::v149(){vfunc_called(this, "_ZN9S662C2_nt4v149Ev");}
void  S662C2_nt ::v150(){vfunc_called(this, "_ZN9S662C2_nt4v150Ev");}
void  S662C2_nt ::v151(){vfunc_called(this, "_ZN9S662C2_nt4v151Ev");}
void  S662C2_nt ::v152(){vfunc_called(this, "_ZN9S662C2_nt4v152Ev");}
void  S662C2_nt ::v153(){vfunc_called(this, "_ZN9S662C2_nt4v153Ev");}
void  S662C2_nt ::v154(){vfunc_called(this, "_ZN9S662C2_nt4v154Ev");}
void  S662C2_nt ::v155(){vfunc_called(this, "_ZN9S662C2_nt4v155Ev");}
void  S662C2_nt ::v156(){vfunc_called(this, "_ZN9S662C2_nt4v156Ev");}
void  S662C2_nt ::v157(){vfunc_called(this, "_ZN9S662C2_nt4v157Ev");}
S662C2_nt ::S662C2_nt(){ note_ctor("S662C2_nt", this);} // tgen

//skip512 S662C2_nt

#else // __cplusplus

extern void _ZN9S662C2_ntC1Ev();
extern void _ZN9S662C2_ntD1Ev();
Name_Map name_map_S662C2_nt[] = {
  NSPAIR(_ZN9S662C2_ntC1Ev),
  NSPAIR(_ZN9S662C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C5;
extern VTBL_ENTRY _ZTI6S662C5[];
extern  VTBL_ENTRY _ZTV6S662C5[];
extern Class_Descriptor cd_S662C4_nt;
extern VTBL_ENTRY _ZTI9S662C4_nt[];
extern  VTBL_ENTRY _ZTV9S662C4_nt[];
extern Class_Descriptor cd_S662C3_nt;
extern VTBL_ENTRY _ZTI9S662C3_nt[];
extern  VTBL_ENTRY _ZTV9S662C3_nt[];
static Base_Class bases_S662C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S662C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S662C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S662C2_nt[];
extern void _ZN9S662C2_ntD1Ev();
extern void _ZN9S662C2_ntD0Ev();
extern void _ZN6S662C52v6Ev();
extern void _ZN6S662C52v7Ev();
extern void _ZN6S662C52v8Ev();
extern void _ZN6S662C52v9Ev();
extern void _ZN6S662C53v10Ev();
extern void _ZN6S662C53v11Ev();
extern void _ZN6S662C53v12Ev();
extern void _ZN6S662C53v13Ev();
extern void _ZN6S662C53v14Ev();
extern void _ZN6S662C53v15Ev();
extern void _ZN6S662C53v16Ev();
extern void _ZN6S662C53v17Ev();
extern void _ZN6S662C53v18Ev();
extern void _ZN6S662C53v19Ev();
extern void _ZN6S662C53v20Ev();
extern void _ZN6S662C53v21Ev();
extern void _ZN6S662C53v22Ev();
extern void _ZN6S662C53v23Ev();
extern void _ZN6S662C53v24Ev();
extern void _ZN6S662C53v25Ev();
extern void _ZN6S662C53v26Ev();
extern void _ZN6S662C53v27Ev();
extern void _ZN6S662C53v28Ev();
extern void _ZN6S662C53v29Ev();
extern void _ZN6S662C53v30Ev();
extern void _ZN6S662C53v31Ev();
extern void _ZN6S662C53v32Ev();
extern void _ZN6S662C53v33Ev();
extern void _ZN6S662C53v34Ev();
extern void _ZN6S662C53v35Ev();
extern void _ZN6S662C53v36Ev();
extern void _ZN6S662C53v37Ev();
extern void _ZN6S662C53v38Ev();
extern void _ZN6S662C53v39Ev();
extern void _ZN6S662C53v40Ev();
extern void _ZN6S662C53v41Ev();
extern void _ZN6S662C53v42Ev();
extern void _ZN6S662C53v43Ev();
extern void _ZN6S662C53v44Ev();
extern void _ZN6S662C53v45Ev();
extern void _ZN6S662C53v46Ev();
extern void _ZN6S662C53v47Ev();
extern void _ZN6S662C53v48Ev();
extern void _ZN6S662C53v49Ev();
extern void _ZN6S662C53v50Ev();
extern void _ZN6S662C53v51Ev();
extern void _ZN6S662C53v52Ev();
extern void _ZN6S662C53v53Ev();
extern void _ZN6S662C53v54Ev();
extern void _ZN6S662C53v55Ev();
extern void _ZN6S662C53v56Ev();
extern void _ZN6S662C53v57Ev();
extern void _ZN6S662C53v58Ev();
extern void _ZN6S662C53v59Ev();
extern void _ZN6S662C53v60Ev();
extern void _ZN6S662C53v61Ev();
extern void _ZN6S662C53v62Ev();
extern void _ZN6S662C53v63Ev();
extern void _ZN6S662C53v64Ev();
extern void _ZN6S662C53v65Ev();
extern void _ZN6S662C53v66Ev();
extern void _ZN6S662C53v67Ev();
extern void _ZN6S662C53v68Ev();
extern void _ZN6S662C53v69Ev();
extern void _ZN9S662C4_nt3v70Ev();
extern void _ZN9S662C4_nt3v71Ev();
extern void _ZN9S662C4_nt3v72Ev();
extern void _ZN9S662C4_nt3v73Ev();
extern void _ZN9S662C4_nt3v74Ev();
extern void _ZN9S662C3_nt3v75Ev();
extern void _ZN9S662C3_nt3v76Ev();
extern void _ZN9S662C3_nt3v77Ev();
extern void _ZN9S662C3_nt3v78Ev();
extern void _ZN9S662C3_nt3v79Ev();
extern void _ZN9S662C3_nt3v80Ev();
extern void _ZN9S662C3_nt3v81Ev();
extern void _ZN9S662C3_nt3v82Ev();
extern void _ZN9S662C3_nt3v83Ev();
extern void _ZN9S662C3_nt3v84Ev();
extern void _ZN9S662C3_nt3v85Ev();
extern void _ZN9S662C3_nt3v86Ev();
extern void _ZN9S662C3_nt3v87Ev();
extern void _ZN9S662C3_nt3v88Ev();
extern void _ZN9S662C3_nt3v89Ev();
extern void _ZN9S662C3_nt3v90Ev();
extern void _ZN9S662C3_nt3v91Ev();
extern void _ZN9S662C3_nt3v92Ev();
extern void _ZN9S662C3_nt3v93Ev();
extern void _ZN9S662C3_nt3v94Ev();
extern void _ZN9S662C3_nt3v95Ev();
extern void _ZN9S662C3_nt3v96Ev();
extern void _ZN9S662C2_nt3v97Ev();
extern void _ZN9S662C2_nt3v98Ev();
extern void _ZN9S662C2_nt3v99Ev();
extern void _ZN9S662C2_nt4v100Ev();
extern void _ZN9S662C2_nt4v101Ev();
extern void _ZN9S662C2_nt4v102Ev();
extern void _ZN9S662C2_nt4v103Ev();
extern void _ZN9S662C2_nt4v104Ev();
extern void _ZN9S662C2_nt4v105Ev();
extern void _ZN9S662C2_nt4v106Ev();
extern void _ZN9S662C2_nt4v107Ev();
extern void _ZN9S662C2_nt4v108Ev();
extern void _ZN9S662C2_nt4v109Ev();
extern void _ZN9S662C2_nt4v110Ev();
extern void _ZN9S662C2_nt4v111Ev();
extern void _ZN9S662C2_nt4v112Ev();
extern void _ZN9S662C2_nt4v113Ev();
extern void _ZN9S662C2_nt4v114Ev();
extern void _ZN9S662C2_nt4v115Ev();
extern void _ZN9S662C2_nt4v116Ev();
extern void _ZN9S662C2_nt4v117Ev();
extern void _ZN9S662C2_nt4v118Ev();
extern void _ZN9S662C2_nt4v119Ev();
extern void _ZN9S662C2_nt4v120Ev();
extern void _ZN9S662C2_nt4v121Ev();
extern void _ZN9S662C2_nt4v122Ev();
extern void _ZN9S662C2_nt4v123Ev();
extern void _ZN9S662C2_nt4v124Ev();
extern void _ZN9S662C2_nt4v125Ev();
extern void _ZN9S662C2_nt4v126Ev();
extern void _ZN9S662C2_nt4v127Ev();
extern void _ZN9S662C2_nt4v128Ev();
extern void _ZN9S662C2_nt4v129Ev();
extern void _ZN9S662C2_nt4v130Ev();
extern void _ZN9S662C2_nt4v131Ev();
extern void _ZN9S662C2_nt4v132Ev();
extern void _ZN9S662C2_nt4v133Ev();
extern void _ZN9S662C2_nt4v134Ev();
extern void _ZN9S662C2_nt4v135Ev();
extern void _ZN9S662C2_nt4v136Ev();
extern void _ZN9S662C2_nt4v137Ev();
extern void _ZN9S662C2_nt4v138Ev();
extern void _ZN9S662C2_nt4v139Ev();
extern void _ZN9S662C2_nt4v140Ev();
extern void _ZN9S662C2_nt4v141Ev();
extern void _ZN9S662C2_nt4v142Ev();
extern void _ZN9S662C2_nt4v143Ev();
extern void _ZN9S662C2_nt4v144Ev();
extern void _ZN9S662C2_nt4v145Ev();
extern void _ZN9S662C2_nt4v146Ev();
extern void _ZN9S662C2_nt4v147Ev();
extern void _ZN9S662C2_nt4v148Ev();
extern void _ZN9S662C2_nt4v149Ev();
extern void _ZN9S662C2_nt4v150Ev();
extern void _ZN9S662C2_nt4v151Ev();
extern void _ZN9S662C2_nt4v152Ev();
extern void _ZN9S662C2_nt4v153Ev();
extern void _ZN9S662C2_nt4v154Ev();
extern void _ZN9S662C2_nt4v155Ev();
extern void _ZN9S662C2_nt4v156Ev();
extern void _ZN9S662C2_nt4v157Ev();
static  VTBL_ENTRY vtc_S662C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S662C2_nt[0]),
  (VTBL_ENTRY)&_ZN9S662C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN9S662C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN6S662C52v6Ev,
  (VTBL_ENTRY)&_ZN6S662C52v7Ev,
  (VTBL_ENTRY)&_ZN6S662C52v8Ev,
  (VTBL_ENTRY)&_ZN6S662C52v9Ev,
  (VTBL_ENTRY)&_ZN6S662C53v10Ev,
  (VTBL_ENTRY)&_ZN6S662C53v11Ev,
  (VTBL_ENTRY)&_ZN6S662C53v12Ev,
  (VTBL_ENTRY)&_ZN6S662C53v13Ev,
  (VTBL_ENTRY)&_ZN6S662C53v14Ev,
  (VTBL_ENTRY)&_ZN6S662C53v15Ev,
  (VTBL_ENTRY)&_ZN6S662C53v16Ev,
  (VTBL_ENTRY)&_ZN6S662C53v17Ev,
  (VTBL_ENTRY)&_ZN6S662C53v18Ev,
  (VTBL_ENTRY)&_ZN6S662C53v19Ev,
  (VTBL_ENTRY)&_ZN6S662C53v20Ev,
  (VTBL_ENTRY)&_ZN6S662C53v21Ev,
  (VTBL_ENTRY)&_ZN6S662C53v22Ev,
  (VTBL_ENTRY)&_ZN6S662C53v23Ev,
  (VTBL_ENTRY)&_ZN6S662C53v24Ev,
  (VTBL_ENTRY)&_ZN6S662C53v25Ev,
  (VTBL_ENTRY)&_ZN6S662C53v26Ev,
  (VTBL_ENTRY)&_ZN6S662C53v27Ev,
  (VTBL_ENTRY)&_ZN6S662C53v28Ev,
  (VTBL_ENTRY)&_ZN6S662C53v29Ev,
  (VTBL_ENTRY)&_ZN6S662C53v30Ev,
  (VTBL_ENTRY)&_ZN6S662C53v31Ev,
  (VTBL_ENTRY)&_ZN6S662C53v32Ev,
  (VTBL_ENTRY)&_ZN6S662C53v33Ev,
  (VTBL_ENTRY)&_ZN6S662C53v34Ev,
  (VTBL_ENTRY)&_ZN6S662C53v35Ev,
  (VTBL_ENTRY)&_ZN6S662C53v36Ev,
  (VTBL_ENTRY)&_ZN6S662C53v37Ev,
  (VTBL_ENTRY)&_ZN6S662C53v38Ev,
  (VTBL_ENTRY)&_ZN6S662C53v39Ev,
  (VTBL_ENTRY)&_ZN6S662C53v40Ev,
  (VTBL_ENTRY)&_ZN6S662C53v41Ev,
  (VTBL_ENTRY)&_ZN6S662C53v42Ev,
  (VTBL_ENTRY)&_ZN6S662C53v43Ev,
  (VTBL_ENTRY)&_ZN6S662C53v44Ev,
  (VTBL_ENTRY)&_ZN6S662C53v45Ev,
  (VTBL_ENTRY)&_ZN6S662C53v46Ev,
  (VTBL_ENTRY)&_ZN6S662C53v47Ev,
  (VTBL_ENTRY)&_ZN6S662C53v48Ev,
  (VTBL_ENTRY)&_ZN6S662C53v49Ev,
  (VTBL_ENTRY)&_ZN6S662C53v50Ev,
  (VTBL_ENTRY)&_ZN6S662C53v51Ev,
  (VTBL_ENTRY)&_ZN6S662C53v52Ev,
  (VTBL_ENTRY)&_ZN6S662C53v53Ev,
  (VTBL_ENTRY)&_ZN6S662C53v54Ev,
  (VTBL_ENTRY)&_ZN6S662C53v55Ev,
  (VTBL_ENTRY)&_ZN6S662C53v56Ev,
  (VTBL_ENTRY)&_ZN6S662C53v57Ev,
  (VTBL_ENTRY)&_ZN6S662C53v58Ev,
  (VTBL_ENTRY)&_ZN6S662C53v59Ev,
  (VTBL_ENTRY)&_ZN6S662C53v60Ev,
  (VTBL_ENTRY)&_ZN6S662C53v61Ev,
  (VTBL_ENTRY)&_ZN6S662C53v62Ev,
  (VTBL_ENTRY)&_ZN6S662C53v63Ev,
  (VTBL_ENTRY)&_ZN6S662C53v64Ev,
  (VTBL_ENTRY)&_ZN6S662C53v65Ev,
  (VTBL_ENTRY)&_ZN6S662C53v66Ev,
  (VTBL_ENTRY)&_ZN6S662C53v67Ev,
  (VTBL_ENTRY)&_ZN6S662C53v68Ev,
  (VTBL_ENTRY)&_ZN6S662C53v69Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v157Ev,
};
extern VTBL_ENTRY _ZTI9S662C2_nt[];
VTBL_ENTRY *P__ZTI9S662C2_nt = _ZTI9S662C2_nt; 
extern  VTBL_ENTRY _ZTV9S662C2_nt[];
Class_Descriptor cd_S662C2_nt = {  "S662C2_nt", // class name
  bases_S662C2_nt, 3,
  &(vtc_S662C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,272), // object size
  NSPAIRA(_ZTI9S662C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S662C2_nt),156, //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  S662C1  : S662C2_nt {
  virtual  ~S662C1(); // _ZN6S662C1D1Ev
  virtual void  v1(); // _ZN6S662C12v1Ev
  virtual void  v2(); // _ZN6S662C12v2Ev
  virtual void  v3(); // _ZN6S662C12v3Ev
  virtual void  v4(); // _ZN6S662C12v4Ev
  virtual void  v5(); // _ZN6S662C12v5Ev
  S662C1(); // tgen
};
//SIG(1 S662C1) C1{ BC2{ BC3{ BC4{ BC5{ vd v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 v69 Fi FL Fp[4] Fi[2] Fp FC6{ m Fi[2]} Fp[2]} vd v70 v71 v72 v73 v74 Fp FC6} vd v75 v76 v77 v78 v79 v80 v81 v82 v83 v84 v85 v86 v87 v88 v89 v90 v91 v92 v93 v94 v95 v96 Fp[2] Fi:1 Fi:1 Fi:1 Fi:1 Fc} vd 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 Fp FC7{ m Fi} Fi FC8{ m} Fi FC9{ BC10{ m Fp Fi[2]}} Fi Fp[2] FC11{ m FC12{ m Fi[3]} FC12 Fi} Fp Fi[2] Fc[3] Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC8 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fc FC13{ m} Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 Fi:1 FC14{ BC9} Fp[2] Fc FC8 FC12 FC15{ m Fi[3]} Fi FC12 Fi:1 Fi:1 Fi:1 Fi[3]} vd v1 v2 v3 v4 v5}


 S662C1 ::~S662C1(){ note_dtor("S662C1", this);}
void  S662C1 ::v1(){vfunc_called(this, "_ZN6S662C12v1Ev");}
void  S662C1 ::v2(){vfunc_called(this, "_ZN6S662C12v2Ev");}
void  S662C1 ::v3(){vfunc_called(this, "_ZN6S662C12v3Ev");}
void  S662C1 ::v4(){vfunc_called(this, "_ZN6S662C12v4Ev");}
void  S662C1 ::v5(){vfunc_called(this, "_ZN6S662C12v5Ev");}
S662C1 ::S662C1(){ note_ctor("S662C1", this);} // tgen

static void Test_S662C1()
{
  extern Class_Descriptor cd_S662C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(47,69)];
    init_test(&cd_S662C1, buf);
    S662C1 *dp, &lv = *(dp=new (buf) S662C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,272), "sizeof(S662C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S662C1)");
    check_base_class_offset(lv, (S662C5*)(S662C4_nt*)(S662C3_nt*)(S662C2_nt*), 0, "S662C1");
    check_base_class_offset(lv, (S662C4_nt*)(S662C3_nt*)(S662C2_nt*), 0, "S662C1");
    check_base_class_offset(lv, (S662C3_nt*)(S662C2_nt*), 0, "S662C1");
    check_base_class_offset(lv, (S662C2_nt*), 0, "S662C1");
    test_class_info(&lv, &cd_S662C1);
    dp->~S662C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS662C1(Test_S662C1, "S662C1", ABISELECT(368,272));

#else // __cplusplus

extern void _ZN6S662C1C1Ev();
extern void _ZN6S662C1D1Ev();
Name_Map name_map_S662C1[] = {
  NSPAIR(_ZN6S662C1C1Ev),
  NSPAIR(_ZN6S662C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C5;
extern VTBL_ENTRY _ZTI6S662C5[];
extern  VTBL_ENTRY _ZTV6S662C5[];
extern Class_Descriptor cd_S662C4_nt;
extern VTBL_ENTRY _ZTI9S662C4_nt[];
extern  VTBL_ENTRY _ZTV9S662C4_nt[];
extern Class_Descriptor cd_S662C3_nt;
extern VTBL_ENTRY _ZTI9S662C3_nt[];
extern  VTBL_ENTRY _ZTV9S662C3_nt[];
extern Class_Descriptor cd_S662C2_nt;
extern VTBL_ENTRY _ZTI9S662C2_nt[];
extern  VTBL_ENTRY _ZTV9S662C2_nt[];
static Base_Class bases_S662C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S662C4_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S662C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S662C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI6S662C1[];
extern void _ZN6S662C1D1Ev();
extern void _ZN6S662C1D0Ev();
extern void _ZN6S662C52v6Ev();
extern void _ZN6S662C52v7Ev();
extern void _ZN6S662C52v8Ev();
extern void _ZN6S662C52v9Ev();
extern void _ZN6S662C53v10Ev();
extern void _ZN6S662C53v11Ev();
extern void _ZN6S662C53v12Ev();
extern void _ZN6S662C53v13Ev();
extern void _ZN6S662C53v14Ev();
extern void _ZN6S662C53v15Ev();
extern void _ZN6S662C53v16Ev();
extern void _ZN6S662C53v17Ev();
extern void _ZN6S662C53v18Ev();
extern void _ZN6S662C53v19Ev();
extern void _ZN6S662C53v20Ev();
extern void _ZN6S662C53v21Ev();
extern void _ZN6S662C53v22Ev();
extern void _ZN6S662C53v23Ev();
extern void _ZN6S662C53v24Ev();
extern void _ZN6S662C53v25Ev();
extern void _ZN6S662C53v26Ev();
extern void _ZN6S662C53v27Ev();
extern void _ZN6S662C53v28Ev();
extern void _ZN6S662C53v29Ev();
extern void _ZN6S662C53v30Ev();
extern void _ZN6S662C53v31Ev();
extern void _ZN6S662C53v32Ev();
extern void _ZN6S662C53v33Ev();
extern void _ZN6S662C53v34Ev();
extern void _ZN6S662C53v35Ev();
extern void _ZN6S662C53v36Ev();
extern void _ZN6S662C53v37Ev();
extern void _ZN6S662C53v38Ev();
extern void _ZN6S662C53v39Ev();
extern void _ZN6S662C53v40Ev();
extern void _ZN6S662C53v41Ev();
extern void _ZN6S662C53v42Ev();
extern void _ZN6S662C53v43Ev();
extern void _ZN6S662C53v44Ev();
extern void _ZN6S662C53v45Ev();
extern void _ZN6S662C53v46Ev();
extern void _ZN6S662C53v47Ev();
extern void _ZN6S662C53v48Ev();
extern void _ZN6S662C53v49Ev();
extern void _ZN6S662C53v50Ev();
extern void _ZN6S662C53v51Ev();
extern void _ZN6S662C53v52Ev();
extern void _ZN6S662C53v53Ev();
extern void _ZN6S662C53v54Ev();
extern void _ZN6S662C53v55Ev();
extern void _ZN6S662C53v56Ev();
extern void _ZN6S662C53v57Ev();
extern void _ZN6S662C53v58Ev();
extern void _ZN6S662C53v59Ev();
extern void _ZN6S662C53v60Ev();
extern void _ZN6S662C53v61Ev();
extern void _ZN6S662C53v62Ev();
extern void _ZN6S662C53v63Ev();
extern void _ZN6S662C53v64Ev();
extern void _ZN6S662C53v65Ev();
extern void _ZN6S662C53v66Ev();
extern void _ZN6S662C53v67Ev();
extern void _ZN6S662C53v68Ev();
extern void _ZN6S662C53v69Ev();
extern void _ZN9S662C4_nt3v70Ev();
extern void _ZN9S662C4_nt3v71Ev();
extern void _ZN9S662C4_nt3v72Ev();
extern void _ZN9S662C4_nt3v73Ev();
extern void _ZN9S662C4_nt3v74Ev();
extern void _ZN9S662C3_nt3v75Ev();
extern void _ZN9S662C3_nt3v76Ev();
extern void _ZN9S662C3_nt3v77Ev();
extern void _ZN9S662C3_nt3v78Ev();
extern void _ZN9S662C3_nt3v79Ev();
extern void _ZN9S662C3_nt3v80Ev();
extern void _ZN9S662C3_nt3v81Ev();
extern void _ZN9S662C3_nt3v82Ev();
extern void _ZN9S662C3_nt3v83Ev();
extern void _ZN9S662C3_nt3v84Ev();
extern void _ZN9S662C3_nt3v85Ev();
extern void _ZN9S662C3_nt3v86Ev();
extern void _ZN9S662C3_nt3v87Ev();
extern void _ZN9S662C3_nt3v88Ev();
extern void _ZN9S662C3_nt3v89Ev();
extern void _ZN9S662C3_nt3v90Ev();
extern void _ZN9S662C3_nt3v91Ev();
extern void _ZN9S662C3_nt3v92Ev();
extern void _ZN9S662C3_nt3v93Ev();
extern void _ZN9S662C3_nt3v94Ev();
extern void _ZN9S662C3_nt3v95Ev();
extern void _ZN9S662C3_nt3v96Ev();
extern void _ZN9S662C2_nt3v97Ev();
extern void _ZN9S662C2_nt3v98Ev();
extern void _ZN9S662C2_nt3v99Ev();
extern void _ZN9S662C2_nt4v100Ev();
extern void _ZN9S662C2_nt4v101Ev();
extern void _ZN9S662C2_nt4v102Ev();
extern void _ZN9S662C2_nt4v103Ev();
extern void _ZN9S662C2_nt4v104Ev();
extern void _ZN9S662C2_nt4v105Ev();
extern void _ZN9S662C2_nt4v106Ev();
extern void _ZN9S662C2_nt4v107Ev();
extern void _ZN9S662C2_nt4v108Ev();
extern void _ZN9S662C2_nt4v109Ev();
extern void _ZN9S662C2_nt4v110Ev();
extern void _ZN9S662C2_nt4v111Ev();
extern void _ZN9S662C2_nt4v112Ev();
extern void _ZN9S662C2_nt4v113Ev();
extern void _ZN9S662C2_nt4v114Ev();
extern void _ZN9S662C2_nt4v115Ev();
extern void _ZN9S662C2_nt4v116Ev();
extern void _ZN9S662C2_nt4v117Ev();
extern void _ZN9S662C2_nt4v118Ev();
extern void _ZN9S662C2_nt4v119Ev();
extern void _ZN9S662C2_nt4v120Ev();
extern void _ZN9S662C2_nt4v121Ev();
extern void _ZN9S662C2_nt4v122Ev();
extern void _ZN9S662C2_nt4v123Ev();
extern void _ZN9S662C2_nt4v124Ev();
extern void _ZN9S662C2_nt4v125Ev();
extern void _ZN9S662C2_nt4v126Ev();
extern void _ZN9S662C2_nt4v127Ev();
extern void _ZN9S662C2_nt4v128Ev();
extern void _ZN9S662C2_nt4v129Ev();
extern void _ZN9S662C2_nt4v130Ev();
extern void _ZN9S662C2_nt4v131Ev();
extern void _ZN9S662C2_nt4v132Ev();
extern void _ZN9S662C2_nt4v133Ev();
extern void _ZN9S662C2_nt4v134Ev();
extern void _ZN9S662C2_nt4v135Ev();
extern void _ZN9S662C2_nt4v136Ev();
extern void _ZN9S662C2_nt4v137Ev();
extern void _ZN9S662C2_nt4v138Ev();
extern void _ZN9S662C2_nt4v139Ev();
extern void _ZN9S662C2_nt4v140Ev();
extern void _ZN9S662C2_nt4v141Ev();
extern void _ZN9S662C2_nt4v142Ev();
extern void _ZN9S662C2_nt4v143Ev();
extern void _ZN9S662C2_nt4v144Ev();
extern void _ZN9S662C2_nt4v145Ev();
extern void _ZN9S662C2_nt4v146Ev();
extern void _ZN9S662C2_nt4v147Ev();
extern void _ZN9S662C2_nt4v148Ev();
extern void _ZN9S662C2_nt4v149Ev();
extern void _ZN9S662C2_nt4v150Ev();
extern void _ZN9S662C2_nt4v151Ev();
extern void _ZN9S662C2_nt4v152Ev();
extern void _ZN9S662C2_nt4v153Ev();
extern void _ZN9S662C2_nt4v154Ev();
extern void _ZN9S662C2_nt4v155Ev();
extern void _ZN9S662C2_nt4v156Ev();
extern void _ZN9S662C2_nt4v157Ev();
extern void _ZN6S662C12v1Ev();
extern void _ZN6S662C12v2Ev();
extern void _ZN6S662C12v3Ev();
extern void _ZN6S662C12v4Ev();
extern void _ZN6S662C12v5Ev();
static  VTBL_ENTRY vtc_S662C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI6S662C1[0]),
  (VTBL_ENTRY)&_ZN6S662C1D1Ev,
  (VTBL_ENTRY)&_ZN6S662C1D0Ev,
  (VTBL_ENTRY)&_ZN6S662C52v6Ev,
  (VTBL_ENTRY)&_ZN6S662C52v7Ev,
  (VTBL_ENTRY)&_ZN6S662C52v8Ev,
  (VTBL_ENTRY)&_ZN6S662C52v9Ev,
  (VTBL_ENTRY)&_ZN6S662C53v10Ev,
  (VTBL_ENTRY)&_ZN6S662C53v11Ev,
  (VTBL_ENTRY)&_ZN6S662C53v12Ev,
  (VTBL_ENTRY)&_ZN6S662C53v13Ev,
  (VTBL_ENTRY)&_ZN6S662C53v14Ev,
  (VTBL_ENTRY)&_ZN6S662C53v15Ev,
  (VTBL_ENTRY)&_ZN6S662C53v16Ev,
  (VTBL_ENTRY)&_ZN6S662C53v17Ev,
  (VTBL_ENTRY)&_ZN6S662C53v18Ev,
  (VTBL_ENTRY)&_ZN6S662C53v19Ev,
  (VTBL_ENTRY)&_ZN6S662C53v20Ev,
  (VTBL_ENTRY)&_ZN6S662C53v21Ev,
  (VTBL_ENTRY)&_ZN6S662C53v22Ev,
  (VTBL_ENTRY)&_ZN6S662C53v23Ev,
  (VTBL_ENTRY)&_ZN6S662C53v24Ev,
  (VTBL_ENTRY)&_ZN6S662C53v25Ev,
  (VTBL_ENTRY)&_ZN6S662C53v26Ev,
  (VTBL_ENTRY)&_ZN6S662C53v27Ev,
  (VTBL_ENTRY)&_ZN6S662C53v28Ev,
  (VTBL_ENTRY)&_ZN6S662C53v29Ev,
  (VTBL_ENTRY)&_ZN6S662C53v30Ev,
  (VTBL_ENTRY)&_ZN6S662C53v31Ev,
  (VTBL_ENTRY)&_ZN6S662C53v32Ev,
  (VTBL_ENTRY)&_ZN6S662C53v33Ev,
  (VTBL_ENTRY)&_ZN6S662C53v34Ev,
  (VTBL_ENTRY)&_ZN6S662C53v35Ev,
  (VTBL_ENTRY)&_ZN6S662C53v36Ev,
  (VTBL_ENTRY)&_ZN6S662C53v37Ev,
  (VTBL_ENTRY)&_ZN6S662C53v38Ev,
  (VTBL_ENTRY)&_ZN6S662C53v39Ev,
  (VTBL_ENTRY)&_ZN6S662C53v40Ev,
  (VTBL_ENTRY)&_ZN6S662C53v41Ev,
  (VTBL_ENTRY)&_ZN6S662C53v42Ev,
  (VTBL_ENTRY)&_ZN6S662C53v43Ev,
  (VTBL_ENTRY)&_ZN6S662C53v44Ev,
  (VTBL_ENTRY)&_ZN6S662C53v45Ev,
  (VTBL_ENTRY)&_ZN6S662C53v46Ev,
  (VTBL_ENTRY)&_ZN6S662C53v47Ev,
  (VTBL_ENTRY)&_ZN6S662C53v48Ev,
  (VTBL_ENTRY)&_ZN6S662C53v49Ev,
  (VTBL_ENTRY)&_ZN6S662C53v50Ev,
  (VTBL_ENTRY)&_ZN6S662C53v51Ev,
  (VTBL_ENTRY)&_ZN6S662C53v52Ev,
  (VTBL_ENTRY)&_ZN6S662C53v53Ev,
  (VTBL_ENTRY)&_ZN6S662C53v54Ev,
  (VTBL_ENTRY)&_ZN6S662C53v55Ev,
  (VTBL_ENTRY)&_ZN6S662C53v56Ev,
  (VTBL_ENTRY)&_ZN6S662C53v57Ev,
  (VTBL_ENTRY)&_ZN6S662C53v58Ev,
  (VTBL_ENTRY)&_ZN6S662C53v59Ev,
  (VTBL_ENTRY)&_ZN6S662C53v60Ev,
  (VTBL_ENTRY)&_ZN6S662C53v61Ev,
  (VTBL_ENTRY)&_ZN6S662C53v62Ev,
  (VTBL_ENTRY)&_ZN6S662C53v63Ev,
  (VTBL_ENTRY)&_ZN6S662C53v64Ev,
  (VTBL_ENTRY)&_ZN6S662C53v65Ev,
  (VTBL_ENTRY)&_ZN6S662C53v66Ev,
  (VTBL_ENTRY)&_ZN6S662C53v67Ev,
  (VTBL_ENTRY)&_ZN6S662C53v68Ev,
  (VTBL_ENTRY)&_ZN6S662C53v69Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v70Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v71Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v72Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v73Ev,
  (VTBL_ENTRY)&_ZN9S662C4_nt3v74Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v75Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v76Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v77Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v78Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v79Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v80Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v81Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v82Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v83Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v84Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v85Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v86Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v87Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v88Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v89Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v90Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v91Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v92Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v93Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v94Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v95Ev,
  (VTBL_ENTRY)&_ZN9S662C3_nt3v96Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt3v97Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt3v98Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt3v99Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v100Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v101Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v102Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v103Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v104Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v105Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v106Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v107Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v108Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v109Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v110Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v111Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v112Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v113Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v114Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v115Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v116Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v117Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v118Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v119Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v120Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v121Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v122Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v123Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v124Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v125Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v126Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v127Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v128Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v129Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v130Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v131Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v132Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v133Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v134Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v135Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v136Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v137Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v138Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v139Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v140Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v141Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v142Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v143Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v144Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v145Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v146Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v147Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v148Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v149Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v150Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v151Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v152Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v153Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v154Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v155Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v156Ev,
  (VTBL_ENTRY)&_ZN9S662C2_nt4v157Ev,
  (VTBL_ENTRY)&_ZN6S662C12v1Ev,
  (VTBL_ENTRY)&_ZN6S662C12v2Ev,
  (VTBL_ENTRY)&_ZN6S662C12v3Ev,
  (VTBL_ENTRY)&_ZN6S662C12v4Ev,
  (VTBL_ENTRY)&_ZN6S662C12v5Ev,
};
extern VTBL_ENTRY _ZTI6S662C1[];
extern  VTBL_ENTRY _ZTV6S662C1[];
Class_Descriptor cd_S662C1 = {  "S662C1", // class name
  bases_S662C1, 4,
  &(vtc_S662C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(368,272), // object size
  NSPAIRA(_ZTI6S662C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV6S662C1),161, //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  S9624C2_nt  {
  virtual  ~S9624C2_nt(); // _ZN10S9624C2_ntD1Ev
  virtual void  v3(); // _ZN10S9624C2_nt2v3Ev
  S9624C2_nt(); // tgen
};
//SIG(-1 S9624C2_nt) C1{ vd v1}


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

//skip512 S9624C2_nt

#else // __cplusplus

extern void _ZN10S9624C2_ntC1Ev();
extern void _ZN10S9624C2_ntD1Ev();
Name_Map name_map_S9624C2_nt[] = {
  NSPAIR(_ZN10S9624C2_ntC1Ev),
  NSPAIR(_ZN10S9624C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9624C2_nt[];
extern void _ZN10S9624C2_ntD1Ev();
extern void _ZN10S9624C2_ntD0Ev();
extern void _ZN10S9624C2_nt2v3Ev();
static  VTBL_ENTRY vtc_S9624C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9624C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9624C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9624C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9624C2_nt2v3Ev,
};
extern VTBL_ENTRY _ZTI10S9624C2_nt[];
VTBL_ENTRY *P__ZTI10S9624C2_nt = _ZTI10S9624C2_nt; 
extern  VTBL_ENTRY _ZTV10S9624C2_nt[];
Class_Descriptor cd_S9624C2_nt = {  "S9624C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9624C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9624C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9624C2_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  S9624C3  {
  virtual  ~S9624C3(); // _ZN7S9624C3D1Ev
  virtual void  v4(); // _ZN7S9624C32v4Ev
  S9624C3(); // tgen
};
//SIG(-1 S9624C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9624C3C1Ev();
extern void _ZN7S9624C3D1Ev();
Name_Map name_map_S9624C3[] = {
  NSPAIR(_ZN7S9624C3C1Ev),
  NSPAIR(_ZN7S9624C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9624C3[];
extern void _ZN7S9624C3D1Ev();
extern void _ZN7S9624C3D0Ev();
extern void _ZN7S9624C32v4Ev();
static  VTBL_ENTRY vtc_S9624C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9624C3[0]),
  (VTBL_ENTRY)&_ZN7S9624C3D1Ev,
  (VTBL_ENTRY)&_ZN7S9624C3D0Ev,
  (VTBL_ENTRY)&_ZN7S9624C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S9624C3[];
extern  VTBL_ENTRY _ZTV7S9624C3[];
Class_Descriptor cd_S9624C3 = {  "S9624C3", // class name
  0,0,//no base classes
  &(vtc_S9624C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9624C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9624C3),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  S9624C6_nt  {
  virtual  ~S9624C6_nt(); // _ZN10S9624C6_ntD1Ev
  virtual void  v6(); // _ZN10S9624C6_nt2v6Ev
  virtual void  v7(); // _ZN10S9624C6_nt2v7Ev
  virtual void  v8(); // _ZN10S9624C6_nt2v8Ev
  S9624C6_nt(); // tgen
};
//SIG(-1 S9624C6_nt) C1{ vd v1 v2 v3}


 S9624C6_nt ::~S9624C6_nt(){ note_dtor("S9624C6_nt", this);}
void  S9624C6_nt ::v6(){vfunc_called(this, "_ZN10S9624C6_nt2v6Ev");}
void  S9624C6_nt ::v7(){vfunc_called(this, "_ZN10S9624C6_nt2v7Ev");}
void  S9624C6_nt ::v8(){vfunc_called(this, "_ZN10S9624C6_nt2v8Ev");}
S9624C6_nt ::S9624C6_nt(){ note_ctor("S9624C6_nt", this);} // tgen

//skip512 S9624C6_nt

#else // __cplusplus

extern void _ZN10S9624C6_ntC1Ev();
extern void _ZN10S9624C6_ntD1Ev();
Name_Map name_map_S9624C6_nt[] = {
  NSPAIR(_ZN10S9624C6_ntC1Ev),
  NSPAIR(_ZN10S9624C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9624C6_nt[];
extern void _ZN10S9624C6_ntD1Ev();
extern void _ZN10S9624C6_ntD0Ev();
extern void _ZN10S9624C6_nt2v6Ev();
extern void _ZN10S9624C6_nt2v7Ev();
extern void _ZN10S9624C6_nt2v8Ev();
static  VTBL_ENTRY vtc_S9624C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9624C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S9624C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S9624C6_nt[];
VTBL_ENTRY *P__ZTI10S9624C6_nt = _ZTI10S9624C6_nt; 
extern  VTBL_ENTRY _ZTV10S9624C6_nt[];
Class_Descriptor cd_S9624C6_nt = {  "S9624C6_nt", // class name
  0,0,//no base classes
  &(vtc_S9624C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9624C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9624C6_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  S9624C7_nt  {
  void *s9624c7f0;
  int s9624c7f1[2];
  ::S662C14 s9624c7f2;
  void  mf9624c7(); // _ZN10S9624C7_nt8mf9624c7Ev
};
//SIG(-1 S9624C7_nt) C1{ m Fp Fi[2] FC2{ m}}


void  S9624C7_nt ::mf9624c7(){}

//skip512 S9624C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S9624C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C9_nt  {
  ::S9624C10_nt s9624c9f0;
  void  mf9624c9(); // _ZN10S9624C9_nt8mf9624c9Ev
};
//SIG(-1 S9624C9_nt) C1{ m FC2{ Fl[4]}}


void  S9624C9_nt ::mf9624c9(){}

//skip512 S9624C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C5_nt  : S9624C6_nt {
  ::S9624C7_nt s9624c5f0;
  ::S9624C9_nt s9624c5f1;
  char s9624c5f2;
  virtual  ~S9624C5_nt(); // _ZN10S9624C5_ntD1Ev
  virtual void  v9(); // _ZN10S9624C5_nt2v9Ev
  virtual void  v10(); // _ZN10S9624C5_nt3v10Ev
  virtual void  v11(); // _ZN10S9624C5_nt3v11Ev
  S9624C5_nt(); // tgen
};
//SIG(-1 S9624C5_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ Fl[4]}} Fc}


 S9624C5_nt ::~S9624C5_nt(){ note_dtor("S9624C5_nt", this);}
void  S9624C5_nt ::v9(){vfunc_called(this, "_ZN10S9624C5_nt2v9Ev");}
void  S9624C5_nt ::v10(){vfunc_called(this, "_ZN10S9624C5_nt3v10Ev");}
void  S9624C5_nt ::v11(){vfunc_called(this, "_ZN10S9624C5_nt3v11Ev");}
S9624C5_nt ::S9624C5_nt(){ note_ctor("S9624C5_nt", this);} // tgen

//skip512 S9624C5_nt

#else // __cplusplus

extern void _ZN10S9624C5_ntC1Ev();
extern void _ZN10S9624C5_ntD1Ev();
Name_Map name_map_S9624C5_nt[] = {
  NSPAIR(_ZN10S9624C5_ntC1Ev),
  NSPAIR(_ZN10S9624C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C6_nt;
extern VTBL_ENTRY _ZTI10S9624C6_nt[];
extern  VTBL_ENTRY _ZTV10S9624C6_nt[];
static Base_Class bases_S9624C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S9624C5_nt[];
extern void _ZN10S9624C5_ntD1Ev();
extern void _ZN10S9624C5_ntD0Ev();
extern void _ZN10S9624C6_nt2v6Ev();
extern void _ZN10S9624C6_nt2v7Ev();
extern void _ZN10S9624C6_nt2v8Ev();
extern void _ZN10S9624C5_nt2v9Ev();
extern void _ZN10S9624C5_nt3v10Ev();
extern void _ZN10S9624C5_nt3v11Ev();
static  VTBL_ENTRY vtc_S9624C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9624C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S9624C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI10S9624C5_nt[];
VTBL_ENTRY *P__ZTI10S9624C5_nt = _ZTI10S9624C5_nt; 
extern  VTBL_ENTRY _ZTV10S9624C5_nt[];
Class_Descriptor cd_S9624C5_nt = {  "S9624C5_nt", // class name
  bases_S9624C5_nt, 1,
  &(vtc_S9624C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI10S9624C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S9624C5_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C11  {
  virtual  ~S9624C11(); // _ZN8S9624C11D1Ev
  virtual void  v12(); // _ZN8S9624C113v12Ev
  S9624C11(); // tgen
};
//SIG(-1 S9624C11) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S9624C11C1Ev();
extern void _ZN8S9624C11D1Ev();
Name_Map name_map_S9624C11[] = {
  NSPAIR(_ZN8S9624C11C1Ev),
  NSPAIR(_ZN8S9624C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9624C11[];
extern void _ZN8S9624C11D1Ev();
extern void _ZN8S9624C11D0Ev();
extern void _ZN8S9624C113v12Ev();
static  VTBL_ENTRY vtc_S9624C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9624C11[0]),
  (VTBL_ENTRY)&_ZN8S9624C11D1Ev,
  (VTBL_ENTRY)&_ZN8S9624C11D0Ev,
  (VTBL_ENTRY)&_ZN8S9624C113v12Ev,
};
extern VTBL_ENTRY _ZTI8S9624C11[];
extern  VTBL_ENTRY _ZTV8S9624C11[];
Class_Descriptor cd_S9624C11 = {  "S9624C11", // class name
  0,0,//no base classes
  &(vtc_S9624C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9624C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9624C11),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  S9624C13_nt  {
  virtual  ~S9624C13_nt(); // _ZN11S9624C13_ntD1Ev
  virtual void  v14(); // _ZN11S9624C13_nt3v14Ev
  virtual void  v15(); // _ZN11S9624C13_nt3v15Ev
  S9624C13_nt(); // tgen
};
//SIG(-1 S9624C13_nt) C1{ vd v1 v2}


 S9624C13_nt ::~S9624C13_nt(){ note_dtor("S9624C13_nt", this);}
void  S9624C13_nt ::v14(){vfunc_called(this, "_ZN11S9624C13_nt3v14Ev");}
void  S9624C13_nt ::v15(){vfunc_called(this, "_ZN11S9624C13_nt3v15Ev");}
S9624C13_nt ::S9624C13_nt(){ note_ctor("S9624C13_nt", this);} // tgen

//skip512 S9624C13_nt

#else // __cplusplus

extern void _ZN11S9624C13_ntC1Ev();
extern void _ZN11S9624C13_ntD1Ev();
Name_Map name_map_S9624C13_nt[] = {
  NSPAIR(_ZN11S9624C13_ntC1Ev),
  NSPAIR(_ZN11S9624C13_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern void _ZN11S9624C13_ntD1Ev();
extern void _ZN11S9624C13_ntD0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
static  VTBL_ENTRY vtc_S9624C13_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C13_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
};
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
VTBL_ENTRY *P__ZTI11S9624C13_nt = _ZTI11S9624C13_nt; 
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
Class_Descriptor cd_S9624C13_nt = {  "S9624C13_nt", // class name
  0,0,//no base classes
  &(vtc_S9624C13_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S9624C13_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S9624C13_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  S9624C14_nt  {
  void *s9624c14f0;
  int s9624c14f1;
  ::S662C8_nt s9624c14f2;
  void  mf9624c14(); // _ZN11S9624C14_nt9mf9624c14Ev
};
//SIG(-1 S9624C14_nt) C1{ m Fp Fi FC2{ m}}


void  S9624C14_nt ::mf9624c14(){}

//skip512 S9624C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C12_nt  : S9624C13_nt {
  ::S9624C14_nt s9624c12f0;
  virtual  ~S9624C12_nt(); // _ZN11S9624C12_ntD1Ev
  virtual void  v13(); // _ZN11S9624C12_nt3v13Ev
  S9624C12_nt(); // tgen
};
//SIG(-1 S9624C12_nt) C1{ BC2{ vd v2 v3} vd v1 FC3{ m Fp Fi FC4{ m}}}


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

//skip512 S9624C12_nt

#else // __cplusplus

extern void _ZN11S9624C12_ntC1Ev();
extern void _ZN11S9624C12_ntD1Ev();
Name_Map name_map_S9624C12_nt[] = {
  NSPAIR(_ZN11S9624C12_ntC1Ev),
  NSPAIR(_ZN11S9624C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S9624C12_nt[];
extern void _ZN11S9624C12_ntD1Ev();
extern void _ZN11S9624C12_ntD0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN11S9624C12_nt3v13Ev();
static  VTBL_ENTRY vtc_S9624C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C12_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S9624C12_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI11S9624C12_nt[];
VTBL_ENTRY *P__ZTI11S9624C12_nt = _ZTI11S9624C12_nt; 
extern  VTBL_ENTRY _ZTV11S9624C12_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C19_nt  {
  void  mf9624c19(); // _ZN11S9624C19_nt9mf9624c19Ev
};
//SIG(-1 S9624C19_nt) C1{ m}


void  S9624C19_nt ::mf9624c19(){}

//skip512 S9624C19_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S9624C19_nt[];
VTBL_ENTRY *P__ZTI11S9624C19_nt = _ZTI11S9624C19_nt; 
Class_Descriptor cd_S9624C19_nt = {  "S9624C19_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S9624C19_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  S9624C18  {
  void *s9624c18f0;
  int s9624c18f1[2];
  ::S9624C19_nt s9624c18f2;
  void  mf9624c18(); // _ZN8S9624C189mf9624c18Ev
};
//SIG(-1 S9624C18) C1{ m Fp Fi[2] FC2{ m}}


void  S9624C18 ::mf9624c18(){}

static void Test_S9624C18()
{
  {
    init_simple_test("S9624C18");
    S9624C18 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9624C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C18)");
    check_field_offset(lv, s9624c18f0, 0, "S9624C18.s9624c18f0");
    check_field_offset(lv, s9624c18f1, ABISELECT(8,4), "S9624C18.s9624c18f1");
    check_field_offset(lv, s9624c18f2, ABISELECT(16,12), "S9624C18.s9624c18f2");
  }
}
static Arrange_To_Call_Me vS9624C18(Test_S9624C18, "S9624C18", ABISELECT(24,16));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S9624C18[];
VTBL_ENTRY *P__ZTI8S9624C18 = _ZTI8S9624C18; 
Class_Descriptor cd_S9624C18 = {  "S9624C18", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S9624C18),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  S9624C17_nt  : S9624C18 , S9624C13_nt {
  virtual  ~S9624C17_nt(); // _ZN11S9624C17_ntD1Ev
  virtual void  v17(); // _ZN11S9624C17_nt3v17Ev
  virtual void  v18(); // _ZN11S9624C17_nt3v18Ev
  S9624C17_nt(); // tgen
};
//SIG(-1 S9624C17_nt) C1{ BC2{ m Fp Fi[2] FC3{ m}} BC4{ vd v3 v4} vd v1 v2}


 S9624C17_nt ::~S9624C17_nt(){ note_dtor("S9624C17_nt", this);}
void  S9624C17_nt ::v17(){vfunc_called(this, "_ZN11S9624C17_nt3v17Ev");}
void  S9624C17_nt ::v18(){vfunc_called(this, "_ZN11S9624C17_nt3v18Ev");}
S9624C17_nt ::S9624C17_nt(){ note_ctor("S9624C17_nt", this);} // tgen

//skip512 S9624C17_nt

#else // __cplusplus

extern void _ZN11S9624C17_ntC1Ev();
extern void _ZN11S9624C17_ntD1Ev();
Name_Map name_map_S9624C17_nt[] = {
  NSPAIR(_ZN11S9624C17_ntC1Ev),
  NSPAIR(_ZN11S9624C17_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C18;
extern VTBL_ENTRY _ZTI8S9624C18[];
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C17_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C18,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S9624C17_nt[];
extern void _ZN11S9624C17_ntD1Ev();
extern void _ZN11S9624C17_ntD0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN11S9624C17_nt3v17Ev();
extern void _ZN11S9624C17_nt3v18Ev();
static  VTBL_ENTRY vtc_S9624C17_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C17_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C17_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C17_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S9624C17_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S9624C17_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S9624C17_nt[];
VTBL_ENTRY *P__ZTI11S9624C17_nt = _ZTI11S9624C17_nt; 
extern  VTBL_ENTRY _ZTV11S9624C17_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C21_nt  {
  short s9624c21f0[2];
  char s9624c21f1[6];
  short s9624c21f2[2];
  char s9624c21f3[6];
  ::S9624C14_nt s9624c21f4;
  virtual  ~S9624C21_nt(); // _ZN11S9624C21_ntD1Ev
  virtual void  v20(); // _ZN11S9624C21_nt3v20Ev
  S9624C21_nt(); // tgen
};
//SIG(-1 S9624C21_nt) C1{ vd v1 Fs[2] Fc[6] Fs[2] Fc[6] FC2{ m Fp Fi FC3{ m}}}


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

//skip512 S9624C21_nt

#else // __cplusplus

extern void _ZN11S9624C21_ntC1Ev();
extern void _ZN11S9624C21_ntD1Ev();
Name_Map name_map_S9624C21_nt[] = {
  NSPAIR(_ZN11S9624C21_ntC1Ev),
  NSPAIR(_ZN11S9624C21_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9624C21_nt[];
extern void _ZN11S9624C21_ntD1Ev();
extern void _ZN11S9624C21_ntD0Ev();
extern void _ZN11S9624C21_nt3v20Ev();
static  VTBL_ENTRY vtc_S9624C21_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C21_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C21_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C21_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C21_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI11S9624C21_nt[];
VTBL_ENTRY *P__ZTI11S9624C21_nt = _ZTI11S9624C21_nt; 
extern  VTBL_ENTRY _ZTV11S9624C21_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C24_nt  {
  int s9624c24f0;
  virtual  ~S9624C24_nt(); // _ZN11S9624C24_ntD1Ev
  virtual void  v21(); // _ZN11S9624C24_nt3v21Ev
  S9624C24_nt(); // tgen
};
//SIG(-1 S9624C24_nt) C1{ vd v1 Fi}


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

//skip512 S9624C24_nt

#else // __cplusplus

extern void _ZN11S9624C24_ntC1Ev();
extern void _ZN11S9624C24_ntD1Ev();
Name_Map name_map_S9624C24_nt[] = {
  NSPAIR(_ZN11S9624C24_ntC1Ev),
  NSPAIR(_ZN11S9624C24_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9624C24_nt[];
extern void _ZN11S9624C24_ntD1Ev();
extern void _ZN11S9624C24_ntD0Ev();
extern void _ZN11S9624C24_nt3v21Ev();
static  VTBL_ENTRY vtc_S9624C24_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C24_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C24_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C24_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C24_nt3v21Ev,
};
extern VTBL_ENTRY _ZTI11S9624C24_nt[];
VTBL_ENTRY *P__ZTI11S9624C24_nt = _ZTI11S9624C24_nt; 
extern  VTBL_ENTRY _ZTV11S9624C24_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C20_nt  : S9624C13_nt {
  ::S9624C21_nt s9624c20f0;
  ::S9624C14_nt s9624c20f1;
  int s9624c20f2[2];
  ::S9624C24_nt s9624c20f3;
  int s9624c20f4[2];
  virtual  ~S9624C20_nt(); // _ZN11S9624C20_ntD1Ev
  virtual void  v19(); // _ZN11S9624C20_nt3v19Ev
  S9624C20_nt(); // tgen
};
//SIG(-1 S9624C20_nt) C1{ BC2{ vd v2 v3} vd v1 FC3{ vd v4 Fs[2] Fc[6] Fs[2] Fc[6] FC4{ m Fp Fi FC5{ m}}} FC4 Fi[2] FC6{ vd v5 Fi} Fi[2]}


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

//skip512 S9624C20_nt

#else // __cplusplus

extern void _ZN11S9624C20_ntC1Ev();
extern void _ZN11S9624C20_ntD1Ev();
Name_Map name_map_S9624C20_nt[] = {
  NSPAIR(_ZN11S9624C20_ntC1Ev),
  NSPAIR(_ZN11S9624C20_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C20_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S9624C20_nt[];
extern void _ZN11S9624C20_ntD1Ev();
extern void _ZN11S9624C20_ntD0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN11S9624C20_nt3v19Ev();
static  VTBL_ENTRY vtc_S9624C20_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C20_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C20_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C20_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S9624C20_nt3v19Ev,
};
extern VTBL_ENTRY _ZTI11S9624C20_nt[];
VTBL_ENTRY *P__ZTI11S9624C20_nt = _ZTI11S9624C20_nt; 
extern  VTBL_ENTRY _ZTV11S9624C20_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C26  : S9624C13_nt {
  __tsi64 s9624c26f0;
  virtual  ~S9624C26(); // _ZN8S9624C26D1Ev
  virtual void  v24(); // _ZN8S9624C263v24Ev
  virtual void  v25(); // _ZN8S9624C263v25Ev
  S9624C26(); // tgen
};
//SIG(-1 S9624C26) C1{ BC2{ vd v3 v4} vd v1 v2 FL}


 S9624C26 ::~S9624C26(){ note_dtor("S9624C26", this);}
void  S9624C26 ::v24(){vfunc_called(this, "_ZN8S9624C263v24Ev");}
void  S9624C26 ::v25(){vfunc_called(this, "_ZN8S9624C263v25Ev");}
S9624C26 ::S9624C26(){ note_ctor("S9624C26", this);} // tgen

static void Test_S9624C26()
{
  extern Class_Descriptor cd_S9624C26;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S9624C26, buf);
    S9624C26 *dp, &lv = *(dp=new (buf) S9624C26());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9624C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C26)");
    check_base_class_offset(lv, (S9624C13_nt*), 0, "S9624C26");
    check_field_offset(lv, s9624c26f0, ABISELECT(8,4), "S9624C26.s9624c26f0");
    test_class_info(&lv, &cd_S9624C26);
    dp->~S9624C26();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9624C26(Test_S9624C26, "S9624C26", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S9624C26C1Ev();
extern void _ZN8S9624C26D1Ev();
Name_Map name_map_S9624C26[] = {
  NSPAIR(_ZN8S9624C26C1Ev),
  NSPAIR(_ZN8S9624C26D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C26[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9624C26[];
extern void _ZN8S9624C26D1Ev();
extern void _ZN8S9624C26D0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN8S9624C263v24Ev();
extern void _ZN8S9624C263v25Ev();
static  VTBL_ENTRY vtc_S9624C26[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9624C26[0]),
  (VTBL_ENTRY)&_ZN8S9624C26D1Ev,
  (VTBL_ENTRY)&_ZN8S9624C26D0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S9624C263v24Ev,
  (VTBL_ENTRY)&_ZN8S9624C263v25Ev,
};
extern VTBL_ENTRY _ZTI8S9624C26[];
extern  VTBL_ENTRY _ZTV8S9624C26[];
Class_Descriptor cd_S9624C26 = {  "S9624C26", // class name
  bases_S9624C26, 1,
  &(vtc_S9624C26[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S9624C26),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9624C26),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C31_nt  {
  short s9624c31f0[6];
  int s9624c31f1[2];
  char s9624c31f2;
  short s9624c31f3;
  void  mf9624c31(); // _ZN11S9624C31_nt9mf9624c31Ev
};
//SIG(-1 S9624C31_nt) C1{ m Fs[6] Fi[2] Fc Fs}


void  S9624C31_nt ::mf9624c31(){}

//skip512 S9624C31_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C30_nt  {
  ::S9624C31_nt s9624c30f0;
  void  mf9624c30(); // _ZN11S9624C30_nt9mf9624c30Ev
  virtual  ~S9624C30_nt(); // _ZN11S9624C30_ntD1Ev
  S9624C30_nt(); // tgen
};
//SIG(-1 S9624C30_nt) C1{ vd m FC2{ m Fs[6] Fi[2] Fc Fs}}


void  S9624C30_nt ::mf9624c30(){}
 S9624C30_nt ::~S9624C30_nt(){ note_dtor("S9624C30_nt", this);}
S9624C30_nt ::S9624C30_nt(){ note_ctor("S9624C30_nt", this);} // tgen

//skip512 S9624C30_nt

#else // __cplusplus

extern void _ZN11S9624C30_ntC1Ev();
extern void _ZN11S9624C30_ntD1Ev();
Name_Map name_map_S9624C30_nt[] = {
  NSPAIR(_ZN11S9624C30_ntC1Ev),
  NSPAIR(_ZN11S9624C30_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9624C30_nt[];
extern void _ZN11S9624C30_ntD1Ev();
extern void _ZN11S9624C30_ntD0Ev();
static  VTBL_ENTRY vtc_S9624C30_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C30_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C30_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C30_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S9624C30_nt[];
VTBL_ENTRY *P__ZTI11S9624C30_nt = _ZTI11S9624C30_nt; 
extern  VTBL_ENTRY _ZTV11S9624C30_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C25  : S9624C13_nt {
  int s9624c25f0[5];
  ::S9624C26 s9624c25f1;
  ::S9624C17_nt s9624c25f2;
  ::S9624C14_nt s9624c25f3;
  ::S9624C30_nt s9624c25f4;
  ::S9624C30_nt s9624c25f5;
  virtual  ~S9624C25(); // _ZN8S9624C25D1Ev
  virtual void  v22(); // _ZN8S9624C253v22Ev
  virtual void  v23(); // _ZN8S9624C253v23Ev
  S9624C25(); // tgen
};
//SIG(-1 S9624C25) C1{ BC2{ vd v3 v4} vd v1 v2 Fi[5] FC3{ BC2 vd v5 v6 FL} FC4{ BC5{ m Fp Fi[2] FC6{ m}} BC2 vd v7 v8} FC7{ m Fp Fi FC8{ m}} FC9{ vd m FC10{ m Fs[6] Fi[2] Fc Fs}} FC9}


 S9624C25 ::~S9624C25(){ note_dtor("S9624C25", this);}
void  S9624C25 ::v22(){vfunc_called(this, "_ZN8S9624C253v22Ev");}
void  S9624C25 ::v23(){vfunc_called(this, "_ZN8S9624C253v23Ev");}
S9624C25 ::S9624C25(){ note_ctor("S9624C25", this);} // tgen

static void Test_S9624C25()
{
  extern Class_Descriptor cd_S9624C25;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(21,32)];
    init_test(&cd_S9624C25, buf);
    S9624C25 *dp, &lv = *(dp=new (buf) S9624C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,124), "sizeof(S9624C25)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C25)");
    check_base_class_offset(lv, (S9624C13_nt*), 0, "S9624C25");
    check_field_offset(lv, s9624c25f0, ABISELECT(8,4), "S9624C25.s9624c25f0");
    check_field_offset(lv, s9624c25f1, ABISELECT(32,24), "S9624C25.s9624c25f1");
    check_field_offset(lv, s9624c25f2, ABISELECT(48,36), "S9624C25.s9624c25f2");
    check_field_offset(lv, s9624c25f3, ABISELECT(80,56), "S9624C25.s9624c25f3");
    check_field_offset(lv, s9624c25f4, ABISELECT(96,68), "S9624C25.s9624c25f4");
    check_field_offset(lv, s9624c25f5, ABISELECT(128,96), "S9624C25.s9624c25f5");
    test_class_info(&lv, &cd_S9624C25);
    dp->~S9624C25();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9624C25(Test_S9624C25, "S9624C25", ABISELECT(160,124));

#else // __cplusplus

extern void _ZN8S9624C25C1Ev();
extern void _ZN8S9624C25D1Ev();
Name_Map name_map_S9624C25[] = {
  NSPAIR(_ZN8S9624C25C1Ev),
  NSPAIR(_ZN8S9624C25D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C25[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9624C25[];
extern void _ZN8S9624C25D1Ev();
extern void _ZN8S9624C25D0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN8S9624C253v22Ev();
extern void _ZN8S9624C253v23Ev();
static  VTBL_ENTRY vtc_S9624C25[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9624C25[0]),
  (VTBL_ENTRY)&_ZN8S9624C25D1Ev,
  (VTBL_ENTRY)&_ZN8S9624C25D0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S9624C253v22Ev,
  (VTBL_ENTRY)&_ZN8S9624C253v23Ev,
};
extern VTBL_ENTRY _ZTI8S9624C25[];
extern  VTBL_ENTRY _ZTV8S9624C25[];
Class_Descriptor cd_S9624C25 = {  "S9624C25", // class name
  bases_S9624C25, 1,
  &(vtc_S9624C25[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(160,124), // object size
  NSPAIRA(_ZTI8S9624C25),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9624C25),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  S9624C32_nt  {
  int s9624c32f0[2];
  short s9624c32f1[2];
  int s9624c32f2[3];
  ::S9624C14_nt s9624c32f3;
  virtual  ~S9624C32_nt(); // _ZN11S9624C32_ntD1Ev
  virtual void  v28(); // _ZN11S9624C32_nt3v28Ev
  S9624C32_nt(); // tgen
};
//SIG(-1 S9624C32_nt) C1{ vd v1 Fi[2] Fs[2] Fi[3] FC2{ m Fp Fi FC3{ m}}}


 S9624C32_nt ::~S9624C32_nt(){ note_dtor("S9624C32_nt", this);}
void  S9624C32_nt ::v28(){vfunc_called(this, "_ZN11S9624C32_nt3v28Ev");}
S9624C32_nt ::S9624C32_nt(){ note_ctor("S9624C32_nt", this);} // tgen

//skip512 S9624C32_nt

#else // __cplusplus

extern void _ZN11S9624C32_ntC1Ev();
extern void _ZN11S9624C32_ntD1Ev();
Name_Map name_map_S9624C32_nt[] = {
  NSPAIR(_ZN11S9624C32_ntC1Ev),
  NSPAIR(_ZN11S9624C32_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9624C32_nt[];
extern void _ZN11S9624C32_ntD1Ev();
extern void _ZN11S9624C32_ntD0Ev();
extern void _ZN11S9624C32_nt3v28Ev();
static  VTBL_ENTRY vtc_S9624C32_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C32_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C32_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C32_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C32_nt3v28Ev,
};
extern VTBL_ENTRY _ZTI11S9624C32_nt[];
VTBL_ENTRY *P__ZTI11S9624C32_nt = _ZTI11S9624C32_nt; 
extern  VTBL_ENTRY _ZTV11S9624C32_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C33_nt  : S9624C13_nt {
  ::S9624C14_nt s9624c33f0;
  ::S9624C14_nt s9624c33f1;
  ::S9624C14_nt s9624c33f2;
  virtual  ~S9624C33_nt(); // _ZN11S9624C33_ntD1Ev
  virtual void  v29(); // _ZN11S9624C33_nt3v29Ev
  S9624C33_nt(); // tgen
};
//SIG(-1 S9624C33_nt) C1{ BC2{ vd v2 v3} vd v1 FC3{ m Fp Fi FC4{ m}} FC3 FC3}


 S9624C33_nt ::~S9624C33_nt(){ note_dtor("S9624C33_nt", this);}
void  S9624C33_nt ::v29(){vfunc_called(this, "_ZN11S9624C33_nt3v29Ev");}
S9624C33_nt ::S9624C33_nt(){ note_ctor("S9624C33_nt", this);} // tgen

//skip512 S9624C33_nt

#else // __cplusplus

extern void _ZN11S9624C33_ntC1Ev();
extern void _ZN11S9624C33_ntD1Ev();
Name_Map name_map_S9624C33_nt[] = {
  NSPAIR(_ZN11S9624C33_ntC1Ev),
  NSPAIR(_ZN11S9624C33_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C33_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S9624C33_nt[];
extern void _ZN11S9624C33_ntD1Ev();
extern void _ZN11S9624C33_ntD0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN11S9624C33_nt3v29Ev();
static  VTBL_ENTRY vtc_S9624C33_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C33_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C33_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C33_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S9624C33_nt3v29Ev,
};
extern VTBL_ENTRY _ZTI11S9624C33_nt[];
VTBL_ENTRY *P__ZTI11S9624C33_nt = _ZTI11S9624C33_nt; 
extern  VTBL_ENTRY _ZTV11S9624C33_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C35  {
  void *s9624c35f0;
  int s9624c35f1[2];
  ::S9624C19_nt s9624c35f2;
  void  mf9624c35(); // _ZN8S9624C359mf9624c35Ev
};
//SIG(-1 S9624C35) C1{ m Fp Fi[2] FC2{ m}}


void  S9624C35 ::mf9624c35(){}

static void Test_S9624C35()
{
  {
    init_simple_test("S9624C35");
    S9624C35 lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9624C35)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C35)");
    check_field_offset(lv, s9624c35f0, 0, "S9624C35.s9624c35f0");
    check_field_offset(lv, s9624c35f1, ABISELECT(8,4), "S9624C35.s9624c35f1");
    check_field_offset(lv, s9624c35f2, ABISELECT(16,12), "S9624C35.s9624c35f2");
  }
}
static Arrange_To_Call_Me vS9624C35(Test_S9624C35, "S9624C35", ABISELECT(24,16));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S9624C35[];
VTBL_ENTRY *P__ZTI8S9624C35 = _ZTI8S9624C35; 
Class_Descriptor cd_S9624C35 = {  "S9624C35", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S9624C35),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  S9624C34  : S9624C35 , S9624C13_nt {
  virtual  ~S9624C34(); // _ZN8S9624C34D1Ev
  virtual void  v30(); // _ZN8S9624C343v30Ev
  virtual void  v31(); // _ZN8S9624C343v31Ev
  S9624C34(); // tgen
};
//SIG(-1 S9624C34) C1{ BC2{ m Fp Fi[2] FC3{ m}} BC4{ vd v3 v4} vd v1 v2}


 S9624C34 ::~S9624C34(){ note_dtor("S9624C34", this);}
void  S9624C34 ::v30(){vfunc_called(this, "_ZN8S9624C343v30Ev");}
void  S9624C34 ::v31(){vfunc_called(this, "_ZN8S9624C343v31Ev");}
S9624C34 ::S9624C34(){ note_ctor("S9624C34", this);} // tgen

static void Test_S9624C34()
{
  extern Class_Descriptor cd_S9624C34;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S9624C34, buf);
    S9624C34 *dp, &lv = *(dp=new (buf) S9624C34());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S9624C34)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C34)");
    check_base_class_offset(lv, (S9624C35*), ABISELECT(8,4), "S9624C34");
    check_base_class_offset(lv, (S9624C13_nt*), 0, "S9624C34");
    test_class_info(&lv, &cd_S9624C34);
    dp->~S9624C34();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9624C34(Test_S9624C34, "S9624C34", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S9624C34C1Ev();
extern void _ZN8S9624C34D1Ev();
Name_Map name_map_S9624C34[] = {
  NSPAIR(_ZN8S9624C34C1Ev),
  NSPAIR(_ZN8S9624C34D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C35;
extern VTBL_ENTRY _ZTI8S9624C35[];
extern Class_Descriptor cd_S9624C13_nt;
extern VTBL_ENTRY _ZTI11S9624C13_nt[];
extern  VTBL_ENTRY _ZTV11S9624C13_nt[];
static Base_Class bases_S9624C34[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C35,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9624C34[];
extern void _ZN8S9624C34D1Ev();
extern void _ZN8S9624C34D0Ev();
extern void _ZN11S9624C13_nt3v14Ev();
extern void _ZN11S9624C13_nt3v15Ev();
extern void _ZN8S9624C343v30Ev();
extern void _ZN8S9624C343v31Ev();
static  VTBL_ENTRY vtc_S9624C34[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9624C34[0]),
  (VTBL_ENTRY)&_ZN8S9624C34D1Ev,
  (VTBL_ENTRY)&_ZN8S9624C34D0Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S9624C13_nt3v15Ev,
  (VTBL_ENTRY)&_ZN8S9624C343v30Ev,
  (VTBL_ENTRY)&_ZN8S9624C343v31Ev,
};
extern VTBL_ENTRY _ZTI8S9624C34[];
extern  VTBL_ENTRY _ZTV8S9624C34[];
Class_Descriptor cd_S9624C34 = {  "S9624C34", // class name
  bases_S9624C34, 2,
  &(vtc_S9624C34[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S9624C34),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S9624C34),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  S9624C39  {
  void  mf9624c39(); // _ZN8S9624C399mf9624c39Ev
};
//SIG(-1 S9624C39) C1{ m}


void  S9624C39 ::mf9624c39(){}

static void Test_S9624C39()
{
  {
    init_simple_test("S9624C39");
    S9624C39 lv;
    check2(sizeof(lv), 1, "sizeof(S9624C39)");
    check2(__alignof__(lv), 1, "__alignof__(S9624C39)");
  }
}
static Arrange_To_Call_Me vS9624C39(Test_S9624C39, "S9624C39", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S9624C39[];
VTBL_ENTRY *P__ZTI8S9624C39 = _ZTI8S9624C39; 
Class_Descriptor cd_S9624C39 = {  "S9624C39", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S9624C39),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  S9624C38_nt  {
  void *s9624c38f0;
  int s9624c38f1;
  ::S9624C39 s9624c38f2;
  ::S9624C39 s9624c38f3;
  void  mf9624c38(); // _ZN11S9624C38_nt9mf9624c38Ev
};
//SIG(-1 S9624C38_nt) C1{ m Fp Fi FC2{ m} FC2}


void  S9624C38_nt ::mf9624c38(){}

//skip512 S9624C38_nt

#else // __cplusplus

Class_Descriptor cd_S9624C38_nt = {  "S9624C38_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  S9624C37_nt  : S9624C38_nt {
};
//SIG(-1 S9624C37_nt) C1{ BC2{ m Fp Fi FC3{ m} FC3}}



//skip512 S9624C37_nt

#else // __cplusplus

extern Class_Descriptor cd_S9624C38_nt;
static Base_Class bases_S9624C37_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C38_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S9624C43_nt  {
  void *s9624c43f0;
  ::S9624C37_nt s9624c43f1;
  void  mf9624c43(); // _ZN11S9624C43_nt9mf9624c43Ev
};
//SIG(-1 S9624C43_nt) C1{ m Fp FC2{ BC3{ m Fp Fi FC4{ m} FC4}}}


void  S9624C43_nt ::mf9624c43(){}

//skip512 S9624C43_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C4  : S9624C5_nt , S9624C11 {
  ::S9624C12_nt s9624c4f0;
  ::S9624C12_nt s9624c4f1;
  ::S9624C12_nt s9624c4f2;
  ::S9624C17_nt s9624c4f3;
  ::S9624C20_nt s9624c4f4;
  int s9624c4f5;
  ::S9624C25 s9624c4f6;
  char s9624c4f7;
  int s9624c4f8;
  ::S9624C14_nt s9624c4f9;
  char s9624c4f10;
  int s9624c4f11;
  ::S9624C32_nt s9624c4f12;
  ::S9624C32_nt s9624c4f13;
  ::S9624C26 s9624c4f14;
  int s9624c4f15;
  ::S9624C33_nt s9624c4f16;
  ::S9624C34 s9624c4f17;
  int s9624c4f18[3];
  char s9624c4f19[2];
  void *s9624c4f20;
  ::S9624C37_nt s9624c4f21;
  void *s9624c4f22;
  ::S9624C7_nt s9624c4f23;
  void *s9624c4f24;
  char s9624c4f25[2];
  int s9624c4f26;
  ::S9624C21_nt s9624c4f27;
  char s9624c4f28;
  ::S9624C43_nt s9624c4f29;
  virtual  ~S9624C4(); // _ZN7S9624C4D1Ev
  virtual void  v5(); // _ZN7S9624C42v5Ev
  S9624C4(); // tgen
};
//SIG(-1 S9624C4) C1{ BC2{ BC3{ vd v2 v3 v4} vd v5 v6 v7 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ Fl[4]}} Fc} BC8{ vd v8} vd v1 FC9{ BC10{ vd v10 v11} vd v9 FC11{ m Fp Fi FC12{ m}}} FC9 FC9 FC13{ BC14{ m Fp Fi[2] FC15{ m}} BC10 vd v12 v13} FC16{ BC10 vd v14 FC17{ vd v15 Fs[2] Fc[6] Fs[2] Fc[6] FC11} FC11 Fi[2] FC18{ vd v16 Fi} Fi[2]} Fi FC19{ BC10 vd v17 v18 Fi[5] FC20{ BC10 vd v19 v20 FL} FC13 FC11 FC21{ vd m FC22{ m Fs[6] Fi[2] Fc Fs}} FC21} Fc Fi FC11 Fc Fi FC23{ vd v21 Fi[2] Fs[2] Fi[3] FC11} FC23 FC20 Fi FC24{ BC10 vd v22 FC11 FC11 FC11} FC25{ BC26{ m Fp Fi[2] FC15} BC10 vd v23 v24} Fi[3] Fc[2] Fp FC27{ BC28{ m Fp Fi FC29{ m} FC29}} Fp FC4 Fp Fc[2] Fi FC17 Fc FC30{ m Fp FC27}}


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

static void Test_S9624C4()
{
  extern Class_Descriptor cd_S9624C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(109,156)];
    init_test(&cd_S9624C4, buf);
    S9624C4 *dp, &lv = *(dp=new (buf) S9624C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,620), "sizeof(S9624C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C4)");
    check_base_class_offset(lv, (S9624C6_nt*)(S9624C5_nt*), 0, "S9624C4");
    check_base_class_offset(lv, (S9624C5_nt*), 0, "S9624C4");
    check_base_class_offset(lv, (S9624C11*), ABISELECT(72,40), "S9624C4");
    check_field_offset(lv, s9624c4f0, ABISELECT(80,44), "S9624C4.s9624c4f0");
    check_field_offset(lv, s9624c4f1, ABISELECT(104,60), "S9624C4.s9624c4f1");
    check_field_offset(lv, s9624c4f2, ABISELECT(128,76), "S9624C4.s9624c4f2");
    check_field_offset(lv, s9624c4f3, ABISELECT(152,92), "S9624C4.s9624c4f3");
    check_field_offset(lv, s9624c4f4, ABISELECT(184,112), "S9624C4.s9624c4f4");
    check_field_offset(lv, s9624c4f5, ABISELECT(288,188), "S9624C4.s9624c4f5");
    check_field_offset(lv, s9624c4f6, ABISELECT(296,192), "S9624C4.s9624c4f6");
    check_field_offset(lv, s9624c4f7, ABISELECT(456,316), "S9624C4.s9624c4f7");
    check_field_offset(lv, s9624c4f8, ABISELECT(460,320), "S9624C4.s9624c4f8");
    check_field_offset(lv, s9624c4f9, ABISELECT(464,324), "S9624C4.s9624c4f9");
    check_field_offset(lv, s9624c4f10, ABISELECT(480,336), "S9624C4.s9624c4f10");
    check_field_offset(lv, s9624c4f11, ABISELECT(484,340), "S9624C4.s9624c4f11");
    check_field_offset(lv, s9624c4f12, ABISELECT(488,344), "S9624C4.s9624c4f12");
    check_field_offset(lv, s9624c4f13, ABISELECT(536,384), "S9624C4.s9624c4f13");
    check_field_offset(lv, s9624c4f14, ABISELECT(584,424), "S9624C4.s9624c4f14");
    check_field_offset(lv, s9624c4f15, ABISELECT(600,436), "S9624C4.s9624c4f15");
    check_field_offset(lv, s9624c4f16, ABISELECT(608,440), "S9624C4.s9624c4f16");
    check_field_offset(lv, s9624c4f17, ABISELECT(664,480), "S9624C4.s9624c4f17");
    check_field_offset(lv, s9624c4f18, ABISELECT(696,500), "S9624C4.s9624c4f18");
    check_field_offset(lv, s9624c4f19, ABISELECT(708,512), "S9624C4.s9624c4f19");
    check_field_offset(lv, s9624c4f20, ABISELECT(712,516), "S9624C4.s9624c4f20");
    check_field_offset(lv, s9624c4f21, ABISELECT(720,520), "S9624C4.s9624c4f21");
    check_field_offset(lv, s9624c4f22, ABISELECT(736,532), "S9624C4.s9624c4f22");
    check_field_offset(lv, s9624c4f23, ABISELECT(744,536), "S9624C4.s9624c4f23");
    check_field_offset(lv, s9624c4f24, ABISELECT(768,552), "S9624C4.s9624c4f24");
    check_field_offset(lv, s9624c4f25, ABISELECT(776,556), "S9624C4.s9624c4f25");
    check_field_offset(lv, s9624c4f26, ABISELECT(780,560), "S9624C4.s9624c4f26");
    check_field_offset(lv, s9624c4f27, ABISELECT(784,564), "S9624C4.s9624c4f27");
    check_field_offset(lv, s9624c4f28, ABISELECT(832,600), "S9624C4.s9624c4f28");
    check_field_offset(lv, s9624c4f29, ABISELECT(840,604), "S9624C4.s9624c4f29");
    test_class_info(&lv, &cd_S9624C4);
    dp->~S9624C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9624C4(Test_S9624C4, "S9624C4", ABISELECT(864,620));

#else // __cplusplus

extern void _ZN7S9624C4C1Ev();
extern void _ZN7S9624C4D1Ev();
Name_Map name_map_S9624C4[] = {
  NSPAIR(_ZN7S9624C4C1Ev),
  NSPAIR(_ZN7S9624C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C6_nt;
extern VTBL_ENTRY _ZTI10S9624C6_nt[];
extern  VTBL_ENTRY _ZTV10S9624C6_nt[];
extern Class_Descriptor cd_S9624C5_nt;
extern VTBL_ENTRY _ZTI10S9624C5_nt[];
extern  VTBL_ENTRY _ZTV10S9624C5_nt[];
extern Class_Descriptor cd_S9624C11;
extern VTBL_ENTRY _ZTI8S9624C11[];
extern  VTBL_ENTRY _ZTV8S9624C11[];
static Base_Class bases_S9624C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S9624C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C11,    ABISELECT(72,40), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9624C4[];
extern void _ZN7S9624C4D1Ev();
extern void _ZN7S9624C4D0Ev();
extern void _ZN10S9624C6_nt2v6Ev();
extern void _ZN10S9624C6_nt2v7Ev();
extern void _ZN10S9624C6_nt2v8Ev();
extern void _ZN10S9624C5_nt2v9Ev();
extern void _ZN10S9624C5_nt3v10Ev();
extern void _ZN10S9624C5_nt3v11Ev();
extern void _ZN7S9624C42v5Ev();
extern void ABISELECT(_ZThn72_N7S9624C4D1Ev,_ZThn40_N7S9624C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S9624C4D0Ev,_ZThn40_N7S9624C4D0Ev)();
extern void _ZN8S9624C113v12Ev();
static  VTBL_ENTRY vtc_S9624C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9624C4[0]),
  (VTBL_ENTRY)&_ZN7S9624C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9624C4D0Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S9624C6_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S9624C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S9624C42v5Ev,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S9624C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S9624C4D1Ev,_ZThn40_N7S9624C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S9624C4D0Ev,_ZThn40_N7S9624C4D0Ev),
  (VTBL_ENTRY)&_ZN8S9624C113v12Ev,
};
extern VTBL_ENTRY _ZTI7S9624C4[];
extern  VTBL_ENTRY _ZTV7S9624C4[];
Class_Descriptor cd_S9624C4 = {  "S9624C4", // class name
  bases_S9624C4, 3,
  &(vtc_S9624C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(864,620), // object size
  NSPAIRA(_ZTI7S9624C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9624C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C48  {
  void  mf9624c48(); // _ZN8S9624C489mf9624c48Ev
};
//SIG(-1 S9624C48) C1{ m}


void  S9624C48 ::mf9624c48(){}

static void Test_S9624C48()
{
  {
    init_simple_test("S9624C48");
    S9624C48 lv;
    check2(sizeof(lv), 1, "sizeof(S9624C48)");
    check2(__alignof__(lv), 1, "__alignof__(S9624C48)");
  }
}
static Arrange_To_Call_Me vS9624C48(Test_S9624C48, "S9624C48", 1);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S9624C48[];
VTBL_ENTRY *P__ZTI8S9624C48 = _ZTI8S9624C48; 
Class_Descriptor cd_S9624C48 = {  "S9624C48", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI8S9624C48),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  S9624C47  {
  void *s9624c47f0;
  int s9624c47f1;
  ::S9624C48 s9624c47f2;
  ::S9624C48 s9624c47f3;
  void  mf9624c47(); // _ZN8S9624C479mf9624c47Ev
};
//SIG(-1 S9624C47) C1{ m Fp Fi FC2{ m} FC2}


void  S9624C47 ::mf9624c47(){}

static void Test_S9624C47()
{
  {
    init_simple_test("S9624C47");
    S9624C47 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S9624C47)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C47)");
    check_field_offset(lv, s9624c47f0, 0, "S9624C47.s9624c47f0");
    check_field_offset(lv, s9624c47f1, ABISELECT(8,4), "S9624C47.s9624c47f1");
    check_field_offset(lv, s9624c47f2, ABISELECT(12,8), "S9624C47.s9624c47f2");
    check_field_offset(lv, s9624c47f3, ABISELECT(13,9), "S9624C47.s9624c47f3");
  }
}
static Arrange_To_Call_Me vS9624C47(Test_S9624C47, "S9624C47", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C46_nt  {
  ::S9624C47 s9624c46f0;
  void  mf9624c46(); // _ZN11S9624C46_nt9mf9624c46Ev
};
//SIG(-1 S9624C46_nt) C1{ m FC2{ m Fp Fi FC3{ m} FC3}}


void  S9624C46_nt ::mf9624c46(){}

//skip512 S9624C46_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C45_nt  {
  ::S9624C46_nt s9624c45f0;
  void *s9624c45f1[3];
  char s9624c45f2;
  virtual  ~S9624C45_nt(); // _ZN11S9624C45_ntD1Ev
  virtual void  v33(); // _ZN11S9624C45_nt3v33Ev
  S9624C45_nt(); // tgen
};
//SIG(-1 S9624C45_nt) C1{ vd v1 FC2{ m FC3{ m Fp Fi FC4{ m} FC4}} Fp[3] Fc}


 S9624C45_nt ::~S9624C45_nt(){ note_dtor("S9624C45_nt", this);}
void  S9624C45_nt ::v33(){vfunc_called(this, "_ZN11S9624C45_nt3v33Ev");}
S9624C45_nt ::S9624C45_nt(){ note_ctor("S9624C45_nt", this);} // tgen

//skip512 S9624C45_nt

#else // __cplusplus

extern void _ZN11S9624C45_ntC1Ev();
extern void _ZN11S9624C45_ntD1Ev();
Name_Map name_map_S9624C45_nt[] = {
  NSPAIR(_ZN11S9624C45_ntC1Ev),
  NSPAIR(_ZN11S9624C45_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S9624C45_nt[];
extern void _ZN11S9624C45_ntD1Ev();
extern void _ZN11S9624C45_ntD0Ev();
extern void _ZN11S9624C45_nt3v33Ev();
static  VTBL_ENTRY vtc_S9624C45_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C45_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C45_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C45_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C45_nt3v33Ev,
};
extern VTBL_ENTRY _ZTI11S9624C45_nt[];
VTBL_ENTRY *P__ZTI11S9624C45_nt = _ZTI11S9624C45_nt; 
extern  VTBL_ENTRY _ZTV11S9624C45_nt[];
Class_Descriptor cd_S9624C45_nt = {  "S9624C45_nt", // class name
  0,0,//no base classes
  &(vtc_S9624C45_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI11S9624C45_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S9624C45_nt),5, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C44_nt  : S9624C45_nt {
  void *s9624c44f0;
  virtual void  v32(); // _ZN11S9624C44_nt3v32Ev
  ~S9624C44_nt(); // tgen
  S9624C44_nt(); // tgen
};
//SIG(-1 S9624C44_nt) C1{ BC2{ vd v2 FC3{ m FC4{ m Fp Fi FC5{ m} FC5}} Fp[3] Fc} v1 Fp}


void  S9624C44_nt ::v32(){vfunc_called(this, "_ZN11S9624C44_nt3v32Ev");}
S9624C44_nt ::~S9624C44_nt(){ note_dtor("S9624C44_nt", this);} // tgen
S9624C44_nt ::S9624C44_nt(){ note_ctor("S9624C44_nt", this);} // tgen

//skip512 S9624C44_nt

#else // __cplusplus

extern void _ZN11S9624C44_ntC1Ev();
extern void _ZN11S9624C44_ntD1Ev();
Name_Map name_map_S9624C44_nt[] = {
  NSPAIR(_ZN11S9624C44_ntC1Ev),
  NSPAIR(_ZN11S9624C44_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C45_nt;
extern VTBL_ENTRY _ZTI11S9624C45_nt[];
extern  VTBL_ENTRY _ZTV11S9624C45_nt[];
static Base_Class bases_S9624C44_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C45_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S9624C44_nt[];
extern void _ZN11S9624C44_ntD1Ev();
extern void _ZN11S9624C44_ntD0Ev();
extern void _ZN11S9624C45_nt3v33Ev();
extern void _ZN11S9624C44_nt3v32Ev();
static  VTBL_ENTRY vtc_S9624C44_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S9624C44_nt[0]),
  (VTBL_ENTRY)&_ZN11S9624C44_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S9624C44_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S9624C45_nt3v33Ev,
  (VTBL_ENTRY)&_ZN11S9624C44_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI11S9624C44_nt[];
VTBL_ENTRY *P__ZTI11S9624C44_nt = _ZTI11S9624C44_nt; 
extern  VTBL_ENTRY _ZTV11S9624C44_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9624C1  : S9624C2_nt , S9624C3 {
  ::S9624C4 s9624c1f0;
  ::S9624C44_nt s9624c1f1;
  void *s9624c1f2[2];
  int s9624c1f3;
  virtual  ~S9624C1(); // _ZN7S9624C1D1Ev
  virtual void  v1(); // _ZN7S9624C12v1Ev
  virtual void  v2(); // _ZN7S9624C12v2Ev
  S9624C1(); // tgen
};
//SIG(1 S9624C1) C1{ BC2{ vd v3} BC3{ vd v4} vd v1 v2 FC4{ BC5{ BC6{ vd v6 v7 v8} vd v9 v10 v11 FC7{ m Fp Fi[2] FC8{ m}} FC9{ m FC10{ Fl[4]}} Fc} BC11{ vd v12} vd v5 FC12{ BC13{ vd v14 v15} vd v13 FC14{ m Fp Fi FC15{ m}}} FC12 FC12 FC16{ BC17{ m Fp Fi[2] FC18{ m}} BC13 vd v16 v17} FC19{ BC13 vd v18 FC20{ vd v19 Fs[2] Fc[6] Fs[2] Fc[6] FC14} FC14 Fi[2] FC21{ vd v20 Fi} Fi[2]} Fi FC22{ BC13 vd v21 v22 Fi[5] FC23{ BC13 vd v23 v24 FL} FC16 FC14 FC24{ vd m FC25{ m Fs[6] Fi[2] Fc Fs}} FC24} Fc Fi FC14 Fc Fi FC26{ vd v25 Fi[2] Fs[2] Fi[3] FC14} FC26 FC23 Fi FC27{ BC13 vd v26 FC14 FC14 FC14} FC28{ BC29{ m Fp Fi[2] FC18} BC13 vd v27 v28} Fi[3] Fc[2] Fp FC30{ BC31{ m Fp Fi FC32{ m} FC32}} Fp FC7 Fp Fc[2] Fi FC20 Fc FC33{ m Fp FC30}} FC34{ BC35{ vd v30 FC36{ m FC37{ m Fp Fi FC38{ m} FC38}} Fp[3] Fc} v29 Fp} Fp[2] Fi}


 S9624C1 ::~S9624C1(){ note_dtor("S9624C1", this);}
void  S9624C1 ::v1(){vfunc_called(this, "_ZN7S9624C12v1Ev");}
void  S9624C1 ::v2(){vfunc_called(this, "_ZN7S9624C12v2Ev");}
S9624C1 ::S9624C1(){ note_ctor("S9624C1", this);} // tgen

static void Test_S9624C1()
{
  extern Class_Descriptor cd_S9624C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(122,170)];
    init_test(&cd_S9624C1, buf);
    S9624C1 *dp, &lv = *(dp=new (buf) S9624C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(968,676), "sizeof(S9624C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9624C1)");
    check_base_class_offset(lv, (S9624C2_nt*), 0, "S9624C1");
    check_base_class_offset(lv, (S9624C3*), ABISELECT(8,4), "S9624C1");
    check_field_offset(lv, s9624c1f0, ABISELECT(16,8), "S9624C1.s9624c1f0");
    check_field_offset(lv, s9624c1f1, ABISELECT(880,628), "S9624C1.s9624c1f1");
    check_field_offset(lv, s9624c1f2, ABISELECT(944,664), "S9624C1.s9624c1f2");
    check_field_offset(lv, s9624c1f3, ABISELECT(960,672), "S9624C1.s9624c1f3");
    test_class_info(&lv, &cd_S9624C1);
    dp->~S9624C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9624C1(Test_S9624C1, "S9624C1", ABISELECT(968,676));

#else // __cplusplus

extern void _ZN7S9624C1C1Ev();
extern void _ZN7S9624C1D1Ev();
Name_Map name_map_S9624C1[] = {
  NSPAIR(_ZN7S9624C1C1Ev),
  NSPAIR(_ZN7S9624C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C2_nt;
extern VTBL_ENTRY _ZTI10S9624C2_nt[];
extern  VTBL_ENTRY _ZTV10S9624C2_nt[];
extern Class_Descriptor cd_S9624C3;
extern VTBL_ENTRY _ZTI7S9624C3[];
extern  VTBL_ENTRY _ZTV7S9624C3[];
static Base_Class bases_S9624C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C3,    ABISELECT(8,4), //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 _ZTI7S9624C1[];
extern void _ZN7S9624C1D1Ev();
extern void _ZN7S9624C1D0Ev();
extern void _ZN10S9624C2_nt2v3Ev();
extern void _ZN7S9624C12v1Ev();
extern void _ZN7S9624C12v2Ev();
extern void ABISELECT(_ZThn8_N7S9624C1D1Ev,_ZThn4_N7S9624C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S9624C1D0Ev,_ZThn4_N7S9624C1D0Ev)();
extern void _ZN7S9624C32v4Ev();
static  VTBL_ENTRY vtc_S9624C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9624C1[0]),
  (VTBL_ENTRY)&_ZN7S9624C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9624C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9624C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN7S9624C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9624C12v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S9624C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9624C1D1Ev,_ZThn4_N7S9624C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9624C1D0Ev,_ZThn4_N7S9624C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9624C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S9624C1[];
extern  VTBL_ENTRY _ZTV7S9624C1[];
Class_Descriptor cd_S9624C1 = {  "S9624C1", // class name
  bases_S9624C1, 2,
  &(vtc_S9624C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(968,676), // object size
  NSPAIRA(_ZTI7S9624C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9624C1),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  S9625C2  {
  virtual  ~S9625C2(); // _ZN7S9625C2D1Ev
  virtual void  v3(); // _ZN7S9625C22v3Ev
  S9625C2(); // tgen
};
//SIG(-1 S9625C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9625C2C1Ev();
extern void _ZN7S9625C2D1Ev();
Name_Map name_map_S9625C2[] = {
  NSPAIR(_ZN7S9625C2C1Ev),
  NSPAIR(_ZN7S9625C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9625C2[];
extern void _ZN7S9625C2D1Ev();
extern void _ZN7S9625C2D0Ev();
extern void _ZN7S9625C22v3Ev();
static  VTBL_ENTRY vtc_S9625C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9625C2[0]),
  (VTBL_ENTRY)&_ZN7S9625C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9625C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9625C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S9625C2[];
extern  VTBL_ENTRY _ZTV7S9625C2[];
Class_Descriptor cd_S9625C2 = {  "S9625C2", // class name
  0,0,//no base classes
  &(vtc_S9625C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9625C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9625C2),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  S9625C3  {
  virtual  ~S9625C3(); // _ZN7S9625C3D1Ev
  virtual void  v4(); // _ZN7S9625C32v4Ev
  S9625C3(); // tgen
};
//SIG(-1 S9625C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9625C3C1Ev();
extern void _ZN7S9625C3D1Ev();
Name_Map name_map_S9625C3[] = {
  NSPAIR(_ZN7S9625C3C1Ev),
  NSPAIR(_ZN7S9625C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9625C3[];
extern void _ZN7S9625C3D1Ev();
extern void _ZN7S9625C3D0Ev();
extern void _ZN7S9625C32v4Ev();
static  VTBL_ENTRY vtc_S9625C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9625C3[0]),
  (VTBL_ENTRY)&_ZN7S9625C3D1Ev,
  (VTBL_ENTRY)&_ZN7S9625C3D0Ev,
  (VTBL_ENTRY)&_ZN7S9625C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S9625C3[];
extern  VTBL_ENTRY _ZTV7S9625C3[];
Class_Descriptor cd_S9625C3 = {  "S9625C3", // class name
  0,0,//no base classes
  &(vtc_S9625C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9625C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9625C3),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  S9625C6  {
  virtual  ~S9625C6(); // _ZN7S9625C6D1Ev
  virtual void  v6(); // _ZN7S9625C62v6Ev
  virtual void  v7(); // _ZN7S9625C62v7Ev
  virtual void  v8(); // _ZN7S9625C62v8Ev
  S9625C6(); // tgen
};
//SIG(-1 S9625C6) C1{ vd v1 v2 v3}


 S9625C6 ::~S9625C6(){ note_dtor("S9625C6", this);}
void  S9625C6 ::v6(){vfunc_called(this, "_ZN7S9625C62v6Ev");}
void  S9625C6 ::v7(){vfunc_called(this, "_ZN7S9625C62v7Ev");}
void  S9625C6 ::v8(){vfunc_called(this, "_ZN7S9625C62v8Ev");}
S9625C6 ::S9625C6(){ note_ctor("S9625C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9625C6C1Ev();
extern void _ZN7S9625C6D1Ev();
Name_Map name_map_S9625C6[] = {
  NSPAIR(_ZN7S9625C6C1Ev),
  NSPAIR(_ZN7S9625C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9625C6[];
extern void _ZN7S9625C6D1Ev();
extern void _ZN7S9625C6D0Ev();
extern void _ZN7S9625C62v6Ev();
extern void _ZN7S9625C62v7Ev();
extern void _ZN7S9625C62v8Ev();
static  VTBL_ENTRY vtc_S9625C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9625C6[0]),
  (VTBL_ENTRY)&_ZN7S9625C6D1Ev,
  (VTBL_ENTRY)&_ZN7S9625C6D0Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v6Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v7Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v8Ev,
};
extern VTBL_ENTRY _ZTI7S9625C6[];
extern  VTBL_ENTRY _ZTV7S9625C6[];
Class_Descriptor cd_S9625C6 = {  "S9625C6", // class name
  0,0,//no base classes
  &(vtc_S9625C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9625C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9625C6),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  S9625C10_nt  {
  __tsi64 s9625c10f0[4];
};
//SIG(-1 S9625C10_nt) C1{ FL[4]}



//skip512 S9625C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9625C9_nt  {
  ::S9625C10_nt s9625c9f0;
  void  mf9625c9(); // _ZN10S9625C9_nt8mf9625c9Ev
};
//SIG(-1 S9625C9_nt) C1{ m FC2{ FL[4]}}


void  S9625C9_nt ::mf9625c9(){}

//skip512 S9625C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9625C5_nt  : S9625C6 {
  ::S9624C35 s9625c5f0;
  ::S9625C9_nt s9625c5f1;
  char s9625c5f2;
  virtual  ~S9625C5_nt(); // _ZN10S9625C5_ntD1Ev
  virtual void  v9(); // _ZN10S9625C5_nt2v9Ev
  virtual void  v10(); // _ZN10S9625C5_nt3v10Ev
  virtual void  v11(); // _ZN10S9625C5_nt3v11Ev
  S9625C5_nt(); // tgen
};
//SIG(-1 S9625C5_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ FL[4]}} Fc}


 S9625C5_nt ::~S9625C5_nt(){ note_dtor("S9625C5_nt", this);}
void  S9625C5_nt ::v9(){vfunc_called(this, "_ZN10S9625C5_nt2v9Ev");}
void  S9625C5_nt ::v10(){vfunc_called(this, "_ZN10S9625C5_nt3v10Ev");}
void  S9625C5_nt ::v11(){vfunc_called(this, "_ZN10S9625C5_nt3v11Ev");}
S9625C5_nt ::S9625C5_nt(){ note_ctor("S9625C5_nt", this);} // tgen

//skip512 S9625C5_nt

#else // __cplusplus

extern void _ZN10S9625C5_ntC1Ev();
extern void _ZN10S9625C5_ntD1Ev();
Name_Map name_map_S9625C5_nt[] = {
  NSPAIR(_ZN10S9625C5_ntC1Ev),
  NSPAIR(_ZN10S9625C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9625C6;
extern VTBL_ENTRY _ZTI7S9625C6[];
extern  VTBL_ENTRY _ZTV7S9625C6[];
static Base_Class bases_S9625C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9625C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S9625C5_nt[];
extern void _ZN10S9625C5_ntD1Ev();
extern void _ZN10S9625C5_ntD0Ev();
extern void _ZN7S9625C62v6Ev();
extern void _ZN7S9625C62v7Ev();
extern void _ZN7S9625C62v8Ev();
extern void _ZN10S9625C5_nt2v9Ev();
extern void _ZN10S9625C5_nt3v10Ev();
extern void _ZN10S9625C5_nt3v11Ev();
static  VTBL_ENTRY vtc_S9625C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9625C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S9625C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v6Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v7Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v8Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI10S9625C5_nt[];
VTBL_ENTRY *P__ZTI10S9625C5_nt = _ZTI10S9625C5_nt; 
extern  VTBL_ENTRY _ZTV10S9625C5_nt[];
Class_Descriptor cd_S9625C5_nt = {  "S9625C5_nt", // class name
  bases_S9625C5_nt, 1,
  &(vtc_S9625C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S9625C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S9625C5_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9625C11  {
  virtual  ~S9625C11(); // _ZN8S9625C11D1Ev
  virtual void  v12(); // _ZN8S9625C113v12Ev
  S9625C11(); // tgen
};
//SIG(-1 S9625C11) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S9625C11C1Ev();
extern void _ZN8S9625C11D1Ev();
Name_Map name_map_S9625C11[] = {
  NSPAIR(_ZN8S9625C11C1Ev),
  NSPAIR(_ZN8S9625C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9625C11[];
extern void _ZN8S9625C11D1Ev();
extern void _ZN8S9625C11D0Ev();
extern void _ZN8S9625C113v12Ev();
static  VTBL_ENTRY vtc_S9625C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9625C11[0]),
  (VTBL_ENTRY)&_ZN8S9625C11D1Ev,
  (VTBL_ENTRY)&_ZN8S9625C11D0Ev,
  (VTBL_ENTRY)&_ZN8S9625C113v12Ev,
};
extern VTBL_ENTRY _ZTI8S9625C11[];
extern  VTBL_ENTRY _ZTV8S9625C11[];
Class_Descriptor cd_S9625C11 = {  "S9625C11", // class name
  0,0,//no base classes
  &(vtc_S9625C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9625C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9625C11),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  S9625C13  {
  virtual  ~S9625C13(); // _ZN8S9625C13D1Ev
  virtual void  v14(); // _ZN8S9625C133v14Ev
  virtual void  v15(); // _ZN8S9625C133v15Ev
  S9625C13(); // tgen
};
//SIG(-1 S9625C13) C1{ vd v1 v2}


 S9625C13 ::~S9625C13(){ note_dtor("S9625C13", this);}
void  S9625C13 ::v14(){vfunc_called(this, "_ZN8S9625C133v14Ev");}
void  S9625C13 ::v15(){vfunc_called(this, "_ZN8S9625C133v15Ev");}
S9625C13 ::S9625C13(){ note_ctor("S9625C13", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S9625C13C1Ev();
extern void _ZN8S9625C13D1Ev();
Name_Map name_map_S9625C13[] = {
  NSPAIR(_ZN8S9625C13C1Ev),
  NSPAIR(_ZN8S9625C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9625C13[];
extern void _ZN8S9625C13D1Ev();
extern void _ZN8S9625C13D0Ev();
extern void _ZN8S9625C133v14Ev();
extern void _ZN8S9625C133v15Ev();
static  VTBL_ENTRY vtc_S9625C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9625C13[0]),
  (VTBL_ENTRY)&_ZN8S9625C13D1Ev,
  (VTBL_ENTRY)&_ZN8S9625C13D0Ev,
  (VTBL_ENTRY)&_ZN8S9625C133v14Ev,
  (VTBL_ENTRY)&_ZN8S9625C133v15Ev,
};
extern VTBL_ENTRY _ZTI8S9625C13[];
extern  VTBL_ENTRY _ZTV8S9625C13[];
Class_Descriptor cd_S9625C13 = {  "S9625C13", // class name
  0,0,//no base classes
  &(vtc_S9625C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9625C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9625C13),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  S9625C16  : S9625C13 {
  ::S9624C14_nt s9625c16f0;
  virtual  ~S9625C16(); // _ZN8S9625C16D1Ev
  virtual void  v16(); // _ZN8S9625C163v16Ev
  S9625C16(); // tgen
};
//SIG(-1 S9625C16) C1{ BC2{ vd v2 v3} vd v1 FC3{ m Fp Fi FC4{ m}}}


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

static void Test_S9625C16()
{
  extern Class_Descriptor cd_S9625C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9625C16, buf);
    S9625C16 *dp, &lv = *(dp=new (buf) S9625C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9625C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9625C16)");
    check_base_class_offset(lv, (S9625C13*), 0, "S9625C16");
    check_field_offset(lv, s9625c16f0, ABISELECT(8,4), "S9625C16.s9625c16f0");
    test_class_info(&lv, &cd_S9625C16);
    dp->~S9625C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9625C16(Test_S9625C16, "S9625C16", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S9625C16C1Ev();
extern void _ZN8S9625C16D1Ev();
Name_Map name_map_S9625C16[] = {
  NSPAIR(_ZN8S9625C16C1Ev),
  NSPAIR(_ZN8S9625C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9625C13;
extern VTBL_ENTRY _ZTI8S9625C13[];
extern  VTBL_ENTRY _ZTV8S9625C13[];
static Base_Class bases_S9625C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9625C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9625C16[];
extern void _ZN8S9625C16D1Ev();
extern void _ZN8S9625C16D0Ev();
extern void _ZN8S9625C133v14Ev();
extern void _ZN8S9625C133v15Ev();
extern void _ZN8S9625C163v16Ev();
static  VTBL_ENTRY vtc_S9625C16[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9625C16[0]),
  (VTBL_ENTRY)&_ZN8S9625C16D1Ev,
  (VTBL_ENTRY)&_ZN8S9625C16D0Ev,
  (VTBL_ENTRY)&_ZN8S9625C133v14Ev,
  (VTBL_ENTRY)&_ZN8S9625C133v15Ev,
  (VTBL_ENTRY)&_ZN8S9625C163v16Ev,
};
extern VTBL_ENTRY _ZTI8S9625C16[];
extern  VTBL_ENTRY _ZTV8S9625C16[];
Class_Descriptor cd_S9625C16 = {  "S9625C16", // class name
  bases_S9625C16, 1,
  &(vtc_S9625C16[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S9625C16),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9625C16),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9625C4  : S9625C5_nt , S9625C11 {
  ::S9624C12_nt s9625c4f0;
  ::S9624C12_nt s9625c4f1;
  ::S9625C16 s9625c4f2;
  ::S9624C34 s9625c4f3;
  ::S9624C20_nt s9625c4f4;
  int s9625c4f5;
  ::S9624C25 s9625c4f6;
  char s9625c4f7;
  int s9625c4f8;
  ::S9624C14_nt s9625c4f9;
  char s9625c4f10;
  int s9625c4f11;
  ::S9624C32_nt s9625c4f12;
  ::S9624C32_nt s9625c4f13;
  ::S9624C26 s9625c4f14;
  int s9625c4f15;
  ::S9624C33_nt s9625c4f16;
  ::S9624C17_nt s9625c4f17;
  int s9625c4f18[3];
  char s9625c4f19[2];
  void *s9625c4f20;
  ::S9624C37_nt s9625c4f21;
  void *s9625c4f22;
  ::S9624C18 s9625c4f23;
  void *s9625c4f24;
  char s9625c4f25[2];
  int s9625c4f26;
  ::S9624C21_nt s9625c4f27;
  char s9625c4f28;
  ::S9624C43_nt s9625c4f29;
  virtual  ~S9625C4(); // _ZN7S9625C4D1Ev
  virtual void  v5(); // _ZN7S9625C42v5Ev
  S9625C4(); // tgen
};
//SIG(-1 S9625C4) C1{ BC2{ BC3{ vd v2 v3 v4} vd v5 v6 v7 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FC7{ FL[4]}} Fc} BC8{ vd v8} vd v1 FC9{ BC10{ vd v10 v11} vd v9 FC11{ m Fp Fi FC12{ m}}} FC9 FC13{ BC14{ vd v13 v14} vd v12 FC11} FC15{ BC4 BC10 vd v15 v16} FC16{ BC10 vd v17 FC17{ vd v18 Fs[2] Fc[6] Fs[2] Fc[6] FC11} FC11 Fi[2] FC18{ vd v19 Fi} Fi[2]} Fi FC19{ BC10 vd v20 v21 Fi[5] FC20{ BC10 vd v22 v23 FL} FC21{ BC22{ m Fp Fi[2] FC5} BC10 vd v24 v25} FC11 FC23{ vd m FC24{ m Fs[6] Fi[2] Fc Fs}} FC23} Fc Fi FC11 Fc Fi FC25{ vd v26 Fi[2] Fs[2] Fi[3] FC11} FC25 FC20 Fi FC26{ BC10 vd v27 FC11 FC11 FC11} FC21 Fi[3] Fc[2] Fp FC27{ BC28{ m Fp Fi FC29{ m} FC29}} Fp FC22 Fp Fc[2] Fi FC17 Fc FC30{ m Fp FC27}}


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

static void Test_S9625C4()
{
  extern Class_Descriptor cd_S9625C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(109,160)];
    init_test(&cd_S9625C4, buf);
    S9625C4 *dp, &lv = *(dp=new (buf) S9625C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,636), "sizeof(S9625C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9625C4)");
    check_base_class_offset(lv, (S9625C6*)(S9625C5_nt*), 0, "S9625C4");
    check_base_class_offset(lv, (S9625C5_nt*), 0, "S9625C4");
    check_base_class_offset(lv, (S9625C11*), ABISELECT(72,56), "S9625C4");
    check_field_offset(lv, s9625c4f0, ABISELECT(80,60), "S9625C4.s9625c4f0");
    check_field_offset(lv, s9625c4f1, ABISELECT(104,76), "S9625C4.s9625c4f1");
    check_field_offset(lv, s9625c4f2, ABISELECT(128,92), "S9625C4.s9625c4f2");
    check_field_offset(lv, s9625c4f3, ABISELECT(152,108), "S9625C4.s9625c4f3");
    check_field_offset(lv, s9625c4f4, ABISELECT(184,128), "S9625C4.s9625c4f4");
    check_field_offset(lv, s9625c4f5, ABISELECT(288,204), "S9625C4.s9625c4f5");
    check_field_offset(lv, s9625c4f6, ABISELECT(296,208), "S9625C4.s9625c4f6");
    check_field_offset(lv, s9625c4f7, ABISELECT(456,332), "S9625C4.s9625c4f7");
    check_field_offset(lv, s9625c4f8, ABISELECT(460,336), "S9625C4.s9625c4f8");
    check_field_offset(lv, s9625c4f9, ABISELECT(464,340), "S9625C4.s9625c4f9");
    check_field_offset(lv, s9625c4f10, ABISELECT(480,352), "S9625C4.s9625c4f10");
    check_field_offset(lv, s9625c4f11, ABISELECT(484,356), "S9625C4.s9625c4f11");
    check_field_offset(lv, s9625c4f12, ABISELECT(488,360), "S9625C4.s9625c4f12");
    check_field_offset(lv, s9625c4f13, ABISELECT(536,400), "S9625C4.s9625c4f13");
    check_field_offset(lv, s9625c4f14, ABISELECT(584,440), "S9625C4.s9625c4f14");
    check_field_offset(lv, s9625c4f15, ABISELECT(600,452), "S9625C4.s9625c4f15");
    check_field_offset(lv, s9625c4f16, ABISELECT(608,456), "S9625C4.s9625c4f16");
    check_field_offset(lv, s9625c4f17, ABISELECT(664,496), "S9625C4.s9625c4f17");
    check_field_offset(lv, s9625c4f18, ABISELECT(696,516), "S9625C4.s9625c4f18");
    check_field_offset(lv, s9625c4f19, ABISELECT(708,528), "S9625C4.s9625c4f19");
    check_field_offset(lv, s9625c4f20, ABISELECT(712,532), "S9625C4.s9625c4f20");
    check_field_offset(lv, s9625c4f21, ABISELECT(720,536), "S9625C4.s9625c4f21");
    check_field_offset(lv, s9625c4f22, ABISELECT(736,548), "S9625C4.s9625c4f22");
    check_field_offset(lv, s9625c4f23, ABISELECT(744,552), "S9625C4.s9625c4f23");
    check_field_offset(lv, s9625c4f24, ABISELECT(768,568), "S9625C4.s9625c4f24");
    check_field_offset(lv, s9625c4f25, ABISELECT(776,572), "S9625C4.s9625c4f25");
    check_field_offset(lv, s9625c4f26, ABISELECT(780,576), "S9625C4.s9625c4f26");
    check_field_offset(lv, s9625c4f27, ABISELECT(784,580), "S9625C4.s9625c4f27");
    check_field_offset(lv, s9625c4f28, ABISELECT(832,616), "S9625C4.s9625c4f28");
    check_field_offset(lv, s9625c4f29, ABISELECT(840,620), "S9625C4.s9625c4f29");
    test_class_info(&lv, &cd_S9625C4);
    dp->~S9625C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9625C4(Test_S9625C4, "S9625C4", ABISELECT(864,636));

#else // __cplusplus

extern void _ZN7S9625C4C1Ev();
extern void _ZN7S9625C4D1Ev();
Name_Map name_map_S9625C4[] = {
  NSPAIR(_ZN7S9625C4C1Ev),
  NSPAIR(_ZN7S9625C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9625C6;
extern VTBL_ENTRY _ZTI7S9625C6[];
extern  VTBL_ENTRY _ZTV7S9625C6[];
extern Class_Descriptor cd_S9625C5_nt;
extern VTBL_ENTRY _ZTI10S9625C5_nt[];
extern  VTBL_ENTRY _ZTV10S9625C5_nt[];
extern Class_Descriptor cd_S9625C11;
extern VTBL_ENTRY _ZTI8S9625C11[];
extern  VTBL_ENTRY _ZTV8S9625C11[];
static Base_Class bases_S9625C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9625C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S9625C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9625C11,    ABISELECT(72,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9625C4[];
extern void _ZN7S9625C4D1Ev();
extern void _ZN7S9625C4D0Ev();
extern void _ZN7S9625C62v6Ev();
extern void _ZN7S9625C62v7Ev();
extern void _ZN7S9625C62v8Ev();
extern void _ZN10S9625C5_nt2v9Ev();
extern void _ZN10S9625C5_nt3v10Ev();
extern void _ZN10S9625C5_nt3v11Ev();
extern void _ZN7S9625C42v5Ev();
extern void ABISELECT(_ZThn72_N7S9625C4D1Ev,_ZThn56_N7S9625C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S9625C4D0Ev,_ZThn56_N7S9625C4D0Ev)();
extern void _ZN8S9625C113v12Ev();
static  VTBL_ENTRY vtc_S9625C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9625C4[0]),
  (VTBL_ENTRY)&_ZN7S9625C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9625C4D0Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v6Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v7Ev,
  (VTBL_ENTRY)&_ZN7S9625C62v8Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S9625C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S9625C42v5Ev,
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S9625C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S9625C4D1Ev,_ZThn56_N7S9625C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S9625C4D0Ev,_ZThn56_N7S9625C4D0Ev),
  (VTBL_ENTRY)&_ZN8S9625C113v12Ev,
};
extern VTBL_ENTRY _ZTI7S9625C4[];
extern  VTBL_ENTRY _ZTV7S9625C4[];
Class_Descriptor cd_S9625C4 = {  "S9625C4", // class name
  bases_S9625C4, 3,
  &(vtc_S9625C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(864,636), // object size
  NSPAIRA(_ZTI7S9625C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9625C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9625C1  : S9625C2 , S9625C3 {
  ::S9625C4 s9625c1f0;
  ::S9624C44_nt s9625c1f1;
  void *s9625c1f2[2];
  int s9625c1f3;
  virtual  ~S9625C1(); // _ZN7S9625C1D1Ev
  virtual void  v1(); // _ZN7S9625C12v1Ev
  virtual void  v2(); // _ZN7S9625C12v2Ev
  S9625C1(); // tgen
};
//SIG(1 S9625C1) C1{ BC2{ vd v3} BC3{ vd v4} vd v1 v2 FC4{ BC5{ BC6{ vd v6 v7 v8} vd v9 v10 v11 FC7{ m Fp Fi[2] FC8{ m}} FC9{ m FC10{ FL[4]}} Fc} BC11{ vd v12} vd v5 FC12{ BC13{ vd v14 v15} vd v13 FC14{ m Fp Fi FC15{ m}}} FC12 FC16{ BC17{ vd v17 v18} vd v16 FC14} FC18{ BC7 BC13 vd v19 v20} FC19{ BC13 vd v21 FC20{ vd v22 Fs[2] Fc[6] Fs[2] Fc[6] FC14} FC14 Fi[2] FC21{ vd v23 Fi} Fi[2]} Fi FC22{ BC13 vd v24 v25 Fi[5] FC23{ BC13 vd v26 v27 FL} FC24{ BC25{ m Fp Fi[2] FC8} BC13 vd v28 v29} FC14 FC26{ vd m FC27{ m Fs[6] Fi[2] Fc Fs}} FC26} Fc Fi FC14 Fc Fi FC28{ vd v30 Fi[2] Fs[2] Fi[3] FC14} FC28 FC23 Fi FC29{ BC13 vd v31 FC14 FC14 FC14} FC24 Fi[3] Fc[2] Fp FC30{ BC31{ m Fp Fi FC32{ m} FC32}} Fp FC25 Fp Fc[2] Fi FC20 Fc FC33{ m Fp FC30}} FC34{ BC35{ vd v33 FC36{ m FC37{ m Fp Fi FC38{ m} FC38}} Fp[3] Fc} v32 Fp} Fp[2] Fi}


 S9625C1 ::~S9625C1(){ note_dtor("S9625C1", this);}
void  S9625C1 ::v1(){vfunc_called(this, "_ZN7S9625C12v1Ev");}
void  S9625C1 ::v2(){vfunc_called(this, "_ZN7S9625C12v2Ev");}
S9625C1 ::S9625C1(){ note_ctor("S9625C1", this);} // tgen

static void Test_S9625C1()
{
  extern Class_Descriptor cd_S9625C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(122,174)];
    init_test(&cd_S9625C1, buf);
    S9625C1 *dp, &lv = *(dp=new (buf) S9625C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(968,692), "sizeof(S9625C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9625C1)");
    check_base_class_offset(lv, (S9625C2*), 0, "S9625C1");
    check_base_class_offset(lv, (S9625C3*), ABISELECT(8,4), "S9625C1");
    check_field_offset(lv, s9625c1f0, ABISELECT(16,8), "S9625C1.s9625c1f0");
    check_field_offset(lv, s9625c1f1, ABISELECT(880,644), "S9625C1.s9625c1f1");
    check_field_offset(lv, s9625c1f2, ABISELECT(944,680), "S9625C1.s9625c1f2");
    check_field_offset(lv, s9625c1f3, ABISELECT(960,688), "S9625C1.s9625c1f3");
    test_class_info(&lv, &cd_S9625C1);
    dp->~S9625C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9625C1(Test_S9625C1, "S9625C1", ABISELECT(968,692));

#else // __cplusplus

extern void _ZN7S9625C1C1Ev();
extern void _ZN7S9625C1D1Ev();
Name_Map name_map_S9625C1[] = {
  NSPAIR(_ZN7S9625C1C1Ev),
  NSPAIR(_ZN7S9625C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9625C2;
extern VTBL_ENTRY _ZTI7S9625C2[];
extern  VTBL_ENTRY _ZTV7S9625C2[];
extern Class_Descriptor cd_S9625C3;
extern VTBL_ENTRY _ZTI7S9625C3[];
extern  VTBL_ENTRY _ZTV7S9625C3[];
static Base_Class bases_S9625C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9625C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9625C3,    ABISELECT(8,4), //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 _ZTI7S9625C1[];
extern void _ZN7S9625C1D1Ev();
extern void _ZN7S9625C1D0Ev();
extern void _ZN7S9625C22v3Ev();
extern void _ZN7S9625C12v1Ev();
extern void _ZN7S9625C12v2Ev();
extern void ABISELECT(_ZThn8_N7S9625C1D1Ev,_ZThn4_N7S9625C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S9625C1D0Ev,_ZThn4_N7S9625C1D0Ev)();
extern void _ZN7S9625C32v4Ev();
static  VTBL_ENTRY vtc_S9625C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9625C1[0]),
  (VTBL_ENTRY)&_ZN7S9625C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9625C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9625C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9625C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9625C12v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S9625C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9625C1D1Ev,_ZThn4_N7S9625C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9625C1D0Ev,_ZThn4_N7S9625C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9625C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S9625C1[];
extern  VTBL_ENTRY _ZTV7S9625C1[];
Class_Descriptor cd_S9625C1 = {  "S9625C1", // class name
  bases_S9625C1, 2,
  &(vtc_S9625C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(968,692), // object size
  NSPAIRA(_ZTI7S9625C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9625C1),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  S9626C2  {
  virtual  ~S9626C2(); // _ZN7S9626C2D1Ev
  virtual void  v3(); // _ZN7S9626C22v3Ev
  S9626C2(); // tgen
};
//SIG(-1 S9626C2) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9626C2C1Ev();
extern void _ZN7S9626C2D1Ev();
Name_Map name_map_S9626C2[] = {
  NSPAIR(_ZN7S9626C2C1Ev),
  NSPAIR(_ZN7S9626C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9626C2[];
extern void _ZN7S9626C2D1Ev();
extern void _ZN7S9626C2D0Ev();
extern void _ZN7S9626C22v3Ev();
static  VTBL_ENTRY vtc_S9626C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9626C2[0]),
  (VTBL_ENTRY)&_ZN7S9626C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9626C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9626C22v3Ev,
};
extern VTBL_ENTRY _ZTI7S9626C2[];
extern  VTBL_ENTRY _ZTV7S9626C2[];
Class_Descriptor cd_S9626C2 = {  "S9626C2", // class name
  0,0,//no base classes
  &(vtc_S9626C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9626C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9626C2),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  S9626C3  {
  virtual  ~S9626C3(); // _ZN7S9626C3D1Ev
  virtual void  v4(); // _ZN7S9626C32v4Ev
  S9626C3(); // tgen
};
//SIG(-1 S9626C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S9626C3C1Ev();
extern void _ZN7S9626C3D1Ev();
Name_Map name_map_S9626C3[] = {
  NSPAIR(_ZN7S9626C3C1Ev),
  NSPAIR(_ZN7S9626C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9626C3[];
extern void _ZN7S9626C3D1Ev();
extern void _ZN7S9626C3D0Ev();
extern void _ZN7S9626C32v4Ev();
static  VTBL_ENTRY vtc_S9626C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9626C3[0]),
  (VTBL_ENTRY)&_ZN7S9626C3D1Ev,
  (VTBL_ENTRY)&_ZN7S9626C3D0Ev,
  (VTBL_ENTRY)&_ZN7S9626C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S9626C3[];
extern  VTBL_ENTRY _ZTV7S9626C3[];
Class_Descriptor cd_S9626C3 = {  "S9626C3", // class name
  0,0,//no base classes
  &(vtc_S9626C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9626C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9626C3),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  S9626C6  {
  virtual  ~S9626C6(); // _ZN7S9626C6D1Ev
  virtual void  v6(); // _ZN7S9626C62v6Ev
  virtual void  v7(); // _ZN7S9626C62v7Ev
  virtual void  v8(); // _ZN7S9626C62v8Ev
  S9626C6(); // tgen
};
//SIG(-1 S9626C6) C1{ vd v1 v2 v3}


 S9626C6 ::~S9626C6(){ note_dtor("S9626C6", this);}
void  S9626C6 ::v6(){vfunc_called(this, "_ZN7S9626C62v6Ev");}
void  S9626C6 ::v7(){vfunc_called(this, "_ZN7S9626C62v7Ev");}
void  S9626C6 ::v8(){vfunc_called(this, "_ZN7S9626C62v8Ev");}
S9626C6 ::S9626C6(){ note_ctor("S9626C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9626C6C1Ev();
extern void _ZN7S9626C6D1Ev();
Name_Map name_map_S9626C6[] = {
  NSPAIR(_ZN7S9626C6C1Ev),
  NSPAIR(_ZN7S9626C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9626C6[];
extern void _ZN7S9626C6D1Ev();
extern void _ZN7S9626C6D0Ev();
extern void _ZN7S9626C62v6Ev();
extern void _ZN7S9626C62v7Ev();
extern void _ZN7S9626C62v8Ev();
static  VTBL_ENTRY vtc_S9626C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9626C6[0]),
  (VTBL_ENTRY)&_ZN7S9626C6D1Ev,
  (VTBL_ENTRY)&_ZN7S9626C6D0Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v6Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v7Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v8Ev,
};
extern VTBL_ENTRY _ZTI7S9626C6[];
extern  VTBL_ENTRY _ZTV7S9626C6[];
Class_Descriptor cd_S9626C6 = {  "S9626C6", // class name
  0,0,//no base classes
  &(vtc_S9626C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9626C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9626C6),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  S9626C9_nt  {
  __tsi64 s9626c9f0[4];
  void  mf9626c9(); // _ZN10S9626C9_nt8mf9626c9Ev
};
//SIG(-1 S9626C9_nt) C1{ m FL[4]}


void  S9626C9_nt ::mf9626c9(){}

//skip512 S9626C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9626C5_nt  : S9626C6 {
  ::S9624C35 s9626c5f0;
  ::S9626C9_nt s9626c5f1;
  char s9626c5f2;
  virtual  ~S9626C5_nt(); // _ZN10S9626C5_ntD1Ev
  virtual void  v9(); // _ZN10S9626C5_nt2v9Ev
  virtual void  v10(); // _ZN10S9626C5_nt3v10Ev
  virtual void  v11(); // _ZN10S9626C5_nt3v11Ev
  S9626C5_nt(); // tgen
};
//SIG(-1 S9626C5_nt) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FL[4]} Fc}


 S9626C5_nt ::~S9626C5_nt(){ note_dtor("S9626C5_nt", this);}
void  S9626C5_nt ::v9(){vfunc_called(this, "_ZN10S9626C5_nt2v9Ev");}
void  S9626C5_nt ::v10(){vfunc_called(this, "_ZN10S9626C5_nt3v10Ev");}
void  S9626C5_nt ::v11(){vfunc_called(this, "_ZN10S9626C5_nt3v11Ev");}
S9626C5_nt ::S9626C5_nt(){ note_ctor("S9626C5_nt", this);} // tgen

//skip512 S9626C5_nt

#else // __cplusplus

extern void _ZN10S9626C5_ntC1Ev();
extern void _ZN10S9626C5_ntD1Ev();
Name_Map name_map_S9626C5_nt[] = {
  NSPAIR(_ZN10S9626C5_ntC1Ev),
  NSPAIR(_ZN10S9626C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9626C6;
extern VTBL_ENTRY _ZTI7S9626C6[];
extern  VTBL_ENTRY _ZTV7S9626C6[];
static Base_Class bases_S9626C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9626C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S9626C5_nt[];
extern void _ZN10S9626C5_ntD1Ev();
extern void _ZN10S9626C5_ntD0Ev();
extern void _ZN7S9626C62v6Ev();
extern void _ZN7S9626C62v7Ev();
extern void _ZN7S9626C62v8Ev();
extern void _ZN10S9626C5_nt2v9Ev();
extern void _ZN10S9626C5_nt3v10Ev();
extern void _ZN10S9626C5_nt3v11Ev();
static  VTBL_ENTRY vtc_S9626C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9626C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S9626C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v6Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v7Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v8Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_nt3v11Ev,
};
extern VTBL_ENTRY _ZTI10S9626C5_nt[];
VTBL_ENTRY *P__ZTI10S9626C5_nt = _ZTI10S9626C5_nt; 
extern  VTBL_ENTRY _ZTV10S9626C5_nt[];
Class_Descriptor cd_S9626C5_nt = {  "S9626C5_nt", // class name
  bases_S9626C5_nt, 1,
  &(vtc_S9626C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI10S9626C5_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S9626C5_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9626C10  {
  virtual  ~S9626C10(); // _ZN8S9626C10D1Ev
  virtual void  v12(); // _ZN8S9626C103v12Ev
  S9626C10(); // tgen
};
//SIG(-1 S9626C10) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S9626C10C1Ev();
extern void _ZN8S9626C10D1Ev();
Name_Map name_map_S9626C10[] = {
  NSPAIR(_ZN8S9626C10C1Ev),
  NSPAIR(_ZN8S9626C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9626C10[];
extern void _ZN8S9626C10D1Ev();
extern void _ZN8S9626C10D0Ev();
extern void _ZN8S9626C103v12Ev();
static  VTBL_ENTRY vtc_S9626C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9626C10[0]),
  (VTBL_ENTRY)&_ZN8S9626C10D1Ev,
  (VTBL_ENTRY)&_ZN8S9626C10D0Ev,
  (VTBL_ENTRY)&_ZN8S9626C103v12Ev,
};
extern VTBL_ENTRY _ZTI8S9626C10[];
extern  VTBL_ENTRY _ZTV8S9626C10[];
Class_Descriptor cd_S9626C10 = {  "S9626C10", // class name
  0,0,//no base classes
  &(vtc_S9626C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9626C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9626C10),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  S9626C4  : S9626C5_nt , S9626C10 {
  ::S9625C16 s9626c4f0;
  ::S9625C16 s9626c4f1;
  ::S9624C12_nt s9626c4f2;
  ::S9624C34 s9626c4f3;
  ::S9624C20_nt s9626c4f4;
  int s9626c4f5;
  ::S9624C25 s9626c4f6;
  char s9626c4f7;
  int s9626c4f8;
  ::S9624C14_nt s9626c4f9;
  char s9626c4f10;
  int s9626c4f11;
  ::S9624C32_nt s9626c4f12;
  ::S9624C32_nt s9626c4f13;
  ::S9624C26 s9626c4f14;
  int s9626c4f15;
  ::S9624C33_nt s9626c4f16;
  ::S9624C17_nt s9626c4f17;
  int s9626c4f18[3];
  char s9626c4f19[2];
  void *s9626c4f20;
  ::S9624C37_nt s9626c4f21;
  void *s9626c4f22;
  ::S9624C18 s9626c4f23;
  void *s9626c4f24;
  char s9626c4f25[2];
  int s9626c4f26;
  ::S9624C21_nt s9626c4f27;
  char s9626c4f28;
  ::S9624C43_nt s9626c4f29;
  virtual  ~S9626C4(); // _ZN7S9626C4D1Ev
  virtual void  v5(); // _ZN7S9626C42v5Ev
  S9626C4(); // tgen
};
//SIG(-1 S9626C4) C1{ BC2{ BC3{ vd v2 v3 v4} vd v5 v6 v7 FC4{ m Fp Fi[2] FC5{ m}} FC6{ m FL[4]} Fc} BC7{ vd v8} vd v1 FC8{ BC9{ vd v10 v11} vd v9 FC10{ m Fp Fi FC11{ m}}} FC8 FC12{ BC13{ vd v13 v14} vd v12 FC10} FC14{ BC4 BC13 vd v15 v16} FC15{ BC13 vd v17 FC16{ vd v18 Fs[2] Fc[6] Fs[2] Fc[6] FC10} FC10 Fi[2] FC17{ vd v19 Fi} Fi[2]} Fi FC18{ BC13 vd v20 v21 Fi[5] FC19{ BC13 vd v22 v23 FL} FC20{ BC21{ m Fp Fi[2] FC5} BC13 vd v24 v25} FC10 FC22{ vd m FC23{ m Fs[6] Fi[2] Fc Fs}} FC22} Fc Fi FC10 Fc Fi FC24{ vd v26 Fi[2] Fs[2] Fi[3] FC10} FC24 FC19 Fi FC25{ BC13 vd v27 FC10 FC10 FC10} FC20 Fi[3] Fc[2] Fp FC26{ BC27{ m Fp Fi FC28{ m} FC28}} Fp FC21 Fp Fc[2] Fi FC16 Fc FC29{ m Fp FC26}}


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

static void Test_S9626C4()
{
  extern Class_Descriptor cd_S9626C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(109,160)];
    init_test(&cd_S9626C4, buf);
    S9626C4 *dp, &lv = *(dp=new (buf) S9626C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(864,636), "sizeof(S9626C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9626C4)");
    check_base_class_offset(lv, (S9626C6*)(S9626C5_nt*), 0, "S9626C4");
    check_base_class_offset(lv, (S9626C5_nt*), 0, "S9626C4");
    check_base_class_offset(lv, (S9626C10*), ABISELECT(72,56), "S9626C4");
    check_field_offset(lv, s9626c4f0, ABISELECT(80,60), "S9626C4.s9626c4f0");
    check_field_offset(lv, s9626c4f1, ABISELECT(104,76), "S9626C4.s9626c4f1");
    check_field_offset(lv, s9626c4f2, ABISELECT(128,92), "S9626C4.s9626c4f2");
    check_field_offset(lv, s9626c4f3, ABISELECT(152,108), "S9626C4.s9626c4f3");
    check_field_offset(lv, s9626c4f4, ABISELECT(184,128), "S9626C4.s9626c4f4");
    check_field_offset(lv, s9626c4f5, ABISELECT(288,204), "S9626C4.s9626c4f5");
    check_field_offset(lv, s9626c4f6, ABISELECT(296,208), "S9626C4.s9626c4f6");
    check_field_offset(lv, s9626c4f7, ABISELECT(456,332), "S9626C4.s9626c4f7");
    check_field_offset(lv, s9626c4f8, ABISELECT(460,336), "S9626C4.s9626c4f8");
    check_field_offset(lv, s9626c4f9, ABISELECT(464,340), "S9626C4.s9626c4f9");
    check_field_offset(lv, s9626c4f10, ABISELECT(480,352), "S9626C4.s9626c4f10");
    check_field_offset(lv, s9626c4f11, ABISELECT(484,356), "S9626C4.s9626c4f11");
    check_field_offset(lv, s9626c4f12, ABISELECT(488,360), "S9626C4.s9626c4f12");
    check_field_offset(lv, s9626c4f13, ABISELECT(536,400), "S9626C4.s9626c4f13");
    check_field_offset(lv, s9626c4f14, ABISELECT(584,440), "S9626C4.s9626c4f14");
    check_field_offset(lv, s9626c4f15, ABISELECT(600,452), "S9626C4.s9626c4f15");
    check_field_offset(lv, s9626c4f16, ABISELECT(608,456), "S9626C4.s9626c4f16");
    check_field_offset(lv, s9626c4f17, ABISELECT(664,496), "S9626C4.s9626c4f17");
    check_field_offset(lv, s9626c4f18, ABISELECT(696,516), "S9626C4.s9626c4f18");
    check_field_offset(lv, s9626c4f19, ABISELECT(708,528), "S9626C4.s9626c4f19");
    check_field_offset(lv, s9626c4f20, ABISELECT(712,532), "S9626C4.s9626c4f20");
    check_field_offset(lv, s9626c4f21, ABISELECT(720,536), "S9626C4.s9626c4f21");
    check_field_offset(lv, s9626c4f22, ABISELECT(736,548), "S9626C4.s9626c4f22");
    check_field_offset(lv, s9626c4f23, ABISELECT(744,552), "S9626C4.s9626c4f23");
    check_field_offset(lv, s9626c4f24, ABISELECT(768,568), "S9626C4.s9626c4f24");
    check_field_offset(lv, s9626c4f25, ABISELECT(776,572), "S9626C4.s9626c4f25");
    check_field_offset(lv, s9626c4f26, ABISELECT(780,576), "S9626C4.s9626c4f26");
    check_field_offset(lv, s9626c4f27, ABISELECT(784,580), "S9626C4.s9626c4f27");
    check_field_offset(lv, s9626c4f28, ABISELECT(832,616), "S9626C4.s9626c4f28");
    check_field_offset(lv, s9626c4f29, ABISELECT(840,620), "S9626C4.s9626c4f29");
    test_class_info(&lv, &cd_S9626C4);
    dp->~S9626C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9626C4(Test_S9626C4, "S9626C4", ABISELECT(864,636));

#else // __cplusplus

extern void _ZN7S9626C4C1Ev();
extern void _ZN7S9626C4D1Ev();
Name_Map name_map_S9626C4[] = {
  NSPAIR(_ZN7S9626C4C1Ev),
  NSPAIR(_ZN7S9626C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9626C6;
extern VTBL_ENTRY _ZTI7S9626C6[];
extern  VTBL_ENTRY _ZTV7S9626C6[];
extern Class_Descriptor cd_S9626C5_nt;
extern VTBL_ENTRY _ZTI10S9626C5_nt[];
extern  VTBL_ENTRY _ZTV10S9626C5_nt[];
extern Class_Descriptor cd_S9626C10;
extern VTBL_ENTRY _ZTI8S9626C10[];
extern  VTBL_ENTRY _ZTV8S9626C10[];
static Base_Class bases_S9626C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9626C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S9626C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9626C10,    ABISELECT(72,56), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9626C4[];
extern void _ZN7S9626C4D1Ev();
extern void _ZN7S9626C4D0Ev();
extern void _ZN7S9626C62v6Ev();
extern void _ZN7S9626C62v7Ev();
extern void _ZN7S9626C62v8Ev();
extern void _ZN10S9626C5_nt2v9Ev();
extern void _ZN10S9626C5_nt3v10Ev();
extern void _ZN10S9626C5_nt3v11Ev();
extern void _ZN7S9626C42v5Ev();
extern void ABISELECT(_ZThn72_N7S9626C4D1Ev,_ZThn56_N7S9626C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S9626C4D0Ev,_ZThn56_N7S9626C4D0Ev)();
extern void _ZN8S9626C103v12Ev();
static  VTBL_ENTRY vtc_S9626C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9626C4[0]),
  (VTBL_ENTRY)&_ZN7S9626C4D1Ev,
  (VTBL_ENTRY)&_ZN7S9626C4D0Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v6Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v7Ev,
  (VTBL_ENTRY)&_ZN7S9626C62v8Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S9626C5_nt3v11Ev,
  (VTBL_ENTRY)&_ZN7S9626C42v5Ev,
  ABISELECT(-72,-56),
  (VTBL_ENTRY)&(_ZTI7S9626C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S9626C4D1Ev,_ZThn56_N7S9626C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn72_N7S9626C4D0Ev,_ZThn56_N7S9626C4D0Ev),
  (VTBL_ENTRY)&_ZN8S9626C103v12Ev,
};
extern VTBL_ENTRY _ZTI7S9626C4[];
extern  VTBL_ENTRY _ZTV7S9626C4[];
Class_Descriptor cd_S9626C4 = {  "S9626C4", // class name
  bases_S9626C4, 3,
  &(vtc_S9626C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(864,636), // object size
  NSPAIRA(_ZTI7S9626C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9626C4),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9626C1  : S9626C2 , S9626C3 {
  ::S9626C4 s9626c1f0;
  ::S9624C44_nt s9626c1f1;
  void *s9626c1f2[2];
  int s9626c1f3;
  virtual  ~S9626C1(); // _ZN7S9626C1D1Ev
  virtual void  v1(); // _ZN7S9626C12v1Ev
  virtual void  v2(); // _ZN7S9626C12v2Ev
  S9626C1(); // tgen
};
//SIG(1 S9626C1) C1{ BC2{ vd v3} BC3{ vd v4} vd v1 v2 FC4{ BC5{ BC6{ vd v6 v7 v8} vd v9 v10 v11 FC7{ m Fp Fi[2] FC8{ m}} FC9{ m FL[4]} Fc} BC10{ vd v12} vd v5 FC11{ BC12{ vd v14 v15} vd v13 FC13{ m Fp Fi FC14{ m}}} FC11 FC15{ BC16{ vd v17 v18} vd v16 FC13} FC17{ BC7 BC16 vd v19 v20} FC18{ BC16 vd v21 FC19{ vd v22 Fs[2] Fc[6] Fs[2] Fc[6] FC13} FC13 Fi[2] FC20{ vd v23 Fi} Fi[2]} Fi FC21{ BC16 vd v24 v25 Fi[5] FC22{ BC16 vd v26 v27 FL} FC23{ BC24{ m Fp Fi[2] FC8} BC16 vd v28 v29} FC13 FC25{ vd m FC26{ m Fs[6] Fi[2] Fc Fs}} FC25} Fc Fi FC13 Fc Fi FC27{ vd v30 Fi[2] Fs[2] Fi[3] FC13} FC27 FC22 Fi FC28{ BC16 vd v31 FC13 FC13 FC13} FC23 Fi[3] Fc[2] Fp FC29{ BC30{ m Fp Fi FC31{ m} FC31}} Fp FC24 Fp Fc[2] Fi FC19 Fc FC32{ m Fp FC29}} FC33{ BC34{ vd v33 FC35{ m FC36{ m Fp Fi FC37{ m} FC37}} Fp[3] Fc} v32 Fp} Fp[2] Fi}


 S9626C1 ::~S9626C1(){ note_dtor("S9626C1", this);}
void  S9626C1 ::v1(){vfunc_called(this, "_ZN7S9626C12v1Ev");}
void  S9626C1 ::v2(){vfunc_called(this, "_ZN7S9626C12v2Ev");}
S9626C1 ::S9626C1(){ note_ctor("S9626C1", this);} // tgen

static void Test_S9626C1()
{
  extern Class_Descriptor cd_S9626C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(122,174)];
    init_test(&cd_S9626C1, buf);
    S9626C1 *dp, &lv = *(dp=new (buf) S9626C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(968,692), "sizeof(S9626C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9626C1)");
    check_base_class_offset(lv, (S9626C2*), 0, "S9626C1");
    check_base_class_offset(lv, (S9626C3*), ABISELECT(8,4), "S9626C1");
    check_field_offset(lv, s9626c1f0, ABISELECT(16,8), "S9626C1.s9626c1f0");
    check_field_offset(lv, s9626c1f1, ABISELECT(880,644), "S9626C1.s9626c1f1");
    check_field_offset(lv, s9626c1f2, ABISELECT(944,680), "S9626C1.s9626c1f2");
    check_field_offset(lv, s9626c1f3, ABISELECT(960,688), "S9626C1.s9626c1f3");
    test_class_info(&lv, &cd_S9626C1);
    dp->~S9626C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9626C1(Test_S9626C1, "S9626C1", ABISELECT(968,692));

#else // __cplusplus

extern void _ZN7S9626C1C1Ev();
extern void _ZN7S9626C1D1Ev();
Name_Map name_map_S9626C1[] = {
  NSPAIR(_ZN7S9626C1C1Ev),
  NSPAIR(_ZN7S9626C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9626C2;
extern VTBL_ENTRY _ZTI7S9626C2[];
extern  VTBL_ENTRY _ZTV7S9626C2[];
extern Class_Descriptor cd_S9626C3;
extern VTBL_ENTRY _ZTI7S9626C3[];
extern  VTBL_ENTRY _ZTV7S9626C3[];
static Base_Class bases_S9626C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9626C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9626C3,    ABISELECT(8,4), //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 _ZTI7S9626C1[];
extern void _ZN7S9626C1D1Ev();
extern void _ZN7S9626C1D0Ev();
extern void _ZN7S9626C22v3Ev();
extern void _ZN7S9626C12v1Ev();
extern void _ZN7S9626C12v2Ev();
extern void ABISELECT(_ZThn8_N7S9626C1D1Ev,_ZThn4_N7S9626C1D1Ev)();
extern void ABISELECT(_ZThn8_N7S9626C1D0Ev,_ZThn4_N7S9626C1D0Ev)();
extern void _ZN7S9626C32v4Ev();
static  VTBL_ENTRY vtc_S9626C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9626C1[0]),
  (VTBL_ENTRY)&_ZN7S9626C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9626C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9626C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9626C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9626C12v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S9626C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9626C1D1Ev,_ZThn4_N7S9626C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N7S9626C1D0Ev,_ZThn4_N7S9626C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9626C32v4Ev,
};
extern VTBL_ENTRY _ZTI7S9626C1[];
extern  VTBL_ENTRY _ZTV7S9626C1[];
Class_Descriptor cd_S9626C1 = {  "S9626C1", // class name
  bases_S9626C1, 2,
  &(vtc_S9626C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(968,692), // object size
  NSPAIRA(_ZTI7S9626C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S9626C1),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  S10296C2_nt  {
  virtual  ~S10296C2_nt(); // _ZN11S10296C2_ntD1Ev
  virtual void  v9(); // _ZN11S10296C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10296C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10296C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10296C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10296C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10296C2_nt3v14Ev
  virtual void  v15(); // _ZN11S10296C2_nt3v15Ev
  virtual void  v16(); // _ZN11S10296C2_nt3v16Ev
  virtual void  v17(); // _ZN11S10296C2_nt3v17Ev
  virtual void  v18(); // _ZN11S10296C2_nt3v18Ev
  S10296C2_nt(); // tgen
};
//SIG(-1 S10296C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10}


 S10296C2_nt ::~S10296C2_nt(){ note_dtor("S10296C2_nt", this);}
void  S10296C2_nt ::v9(){vfunc_called(this, "_ZN11S10296C2_nt2v9Ev");}
void  S10296C2_nt ::v10(){vfunc_called(this, "_ZN11S10296C2_nt3v10Ev");}
void  S10296C2_nt ::v11(){vfunc_called(this, "_ZN11S10296C2_nt3v11Ev");}
void  S10296C2_nt ::v12(){vfunc_called(this, "_ZN11S10296C2_nt3v12Ev");}
void  S10296C2_nt ::v13(){vfunc_called(this, "_ZN11S10296C2_nt3v13Ev");}
void  S10296C2_nt ::v14(){vfunc_called(this, "_ZN11S10296C2_nt3v14Ev");}
void  S10296C2_nt ::v15(){vfunc_called(this, "_ZN11S10296C2_nt3v15Ev");}
void  S10296C2_nt ::v16(){vfunc_called(this, "_ZN11S10296C2_nt3v16Ev");}
void  S10296C2_nt ::v17(){vfunc_called(this, "_ZN11S10296C2_nt3v17Ev");}
void  S10296C2_nt ::v18(){vfunc_called(this, "_ZN11S10296C2_nt3v18Ev");}
S10296C2_nt ::S10296C2_nt(){ note_ctor("S10296C2_nt", this);} // tgen

//skip512 S10296C2_nt

#else // __cplusplus

extern void _ZN11S10296C2_ntC1Ev();
extern void _ZN11S10296C2_ntD1Ev();
Name_Map name_map_S10296C2_nt[] = {
  NSPAIR(_ZN11S10296C2_ntC1Ev),
  NSPAIR(_ZN11S10296C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10296C2_nt[];
extern void _ZN11S10296C2_ntD1Ev();
extern void _ZN11S10296C2_ntD0Ev();
extern void _ZN11S10296C2_nt2v9Ev();
extern void _ZN11S10296C2_nt3v10Ev();
extern void _ZN11S10296C2_nt3v11Ev();
extern void _ZN11S10296C2_nt3v12Ev();
extern void _ZN11S10296C2_nt3v13Ev();
extern void _ZN11S10296C2_nt3v14Ev();
extern void _ZN11S10296C2_nt3v15Ev();
extern void _ZN11S10296C2_nt3v16Ev();
extern void _ZN11S10296C2_nt3v17Ev();
extern void _ZN11S10296C2_nt3v18Ev();
static  VTBL_ENTRY vtc_S10296C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10296C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10296C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v18Ev,
};
extern VTBL_ENTRY _ZTI11S10296C2_nt[];
VTBL_ENTRY *P__ZTI11S10296C2_nt = _ZTI11S10296C2_nt; 
extern  VTBL_ENTRY _ZTV11S10296C2_nt[];
Class_Descriptor cd_S10296C2_nt = {  "S10296C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10296C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10296C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10296C2_nt),14, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C4_nt  {
  void *s10296c4f0[2];
  void  mf10296c4(); // _ZN11S10296C4_nt9mf10296c4Ev
};
//SIG(-1 S10296C4_nt) C1{ m Fp[2]}


void  S10296C4_nt ::mf10296c4(){}

//skip512 S10296C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C5_nt  {
  void *s10296c5f0;
  void  mf10296c5(); // _ZN11S10296C5_nt9mf10296c5Ev
};
//SIG(-1 S10296C5_nt) C1{ m Fp}


void  S10296C5_nt ::mf10296c5(){}

//skip512 S10296C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C3_nt  {
  ::S10296C4_nt s10296c3f0;
  ::S10296C5_nt s10296c3f1;
  void  mf10296c3(); // _ZN11S10296C3_nt9mf10296c3Ev
};
//SIG(-1 S10296C3_nt) C1{ m FC2{ m Fp[2]} FC3{ m Fp}}


void  S10296C3_nt ::mf10296c3(){}

//skip512 S10296C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C9  {
  void *s10296c9f0[2];
  void  mf10296c9(); // _ZN8S10296C99mf10296c9Ev
};
//SIG(-1 S10296C9) C1{ m Fp[2]}


void  S10296C9 ::mf10296c9(){}

static void Test_S10296C9()
{
  {
    init_simple_test("S10296C9");
    S10296C9 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10296C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10296C9)");
    check_field_offset(lv, s10296c9f0, 0, "S10296C9.s10296c9f0");
  }
}
static Arrange_To_Call_Me vS10296C9(Test_S10296C9, "S10296C9", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C7_nt  {
  ::S10296C4_nt s10296c7f0;
  ::S10296C9 s10296c7f1;
  void  mf10296c7(); // _ZN11S10296C7_nt9mf10296c7Ev
};
//SIG(-1 S10296C7_nt) C1{ m FC2{ m Fp[2]} FC3{ m Fp[2]}}


void  S10296C7_nt ::mf10296c7(){}

//skip512 S10296C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C6_nt  {
  ::S10296C7_nt s10296c6f0;
  ::S10296C7_nt s10296c6f1;
  void  mf10296c6(); // _ZN11S10296C6_nt9mf10296c6Ev
};
//SIG(-1 S10296C6_nt) C1{ m FC2{ m FC3{ m Fp[2]} FC4{ m Fp[2]}} FC2}


void  S10296C6_nt ::mf10296c6(){}

//skip512 S10296C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C14_nt  {
  void *s10296c14f0[4];
  void  mf10296c14(); // _ZN12S10296C14_nt10mf10296c14Ev
};
//SIG(-1 S10296C14_nt) C1{ m Fp[4]}


void  S10296C14_nt ::mf10296c14(){}

//skip512 S10296C14_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C13_nt  {
  ::S10296C14_nt s10296c13f0;
  virtual  ~S10296C13_nt(); // _ZN12S10296C13_ntD1Ev
  virtual void  v25(); // _ZN12S10296C13_nt3v25Ev
  virtual void  v26(); // _ZN12S10296C13_nt3v26Ev
  virtual void  v27(); // _ZN12S10296C13_nt3v27Ev
  virtual void  v28(); // _ZN12S10296C13_nt3v28Ev
  virtual void  v29(); // _ZN12S10296C13_nt3v29Ev
  virtual void  v30(); // _ZN12S10296C13_nt3v30Ev
  S10296C13_nt(); // tgen
};
//SIG(-1 S10296C13_nt) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S10296C13_nt ::~S10296C13_nt(){ note_dtor("S10296C13_nt", this);}
void  S10296C13_nt ::v25(){vfunc_called(this, "_ZN12S10296C13_nt3v25Ev");}
void  S10296C13_nt ::v26(){vfunc_called(this, "_ZN12S10296C13_nt3v26Ev");}
void  S10296C13_nt ::v27(){vfunc_called(this, "_ZN12S10296C13_nt3v27Ev");}
void  S10296C13_nt ::v28(){vfunc_called(this, "_ZN12S10296C13_nt3v28Ev");}
void  S10296C13_nt ::v29(){vfunc_called(this, "_ZN12S10296C13_nt3v29Ev");}
void  S10296C13_nt ::v30(){vfunc_called(this, "_ZN12S10296C13_nt3v30Ev");}
S10296C13_nt ::S10296C13_nt(){ note_ctor("S10296C13_nt", this);} // tgen

//skip512 S10296C13_nt

#else // __cplusplus

extern void _ZN12S10296C13_ntC1Ev();
extern void _ZN12S10296C13_ntD1Ev();
Name_Map name_map_S10296C13_nt[] = {
  NSPAIR(_ZN12S10296C13_ntC1Ev),
  NSPAIR(_ZN12S10296C13_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S10296C13_nt[];
extern void _ZN12S10296C13_ntD1Ev();
extern void _ZN12S10296C13_ntD0Ev();
extern void _ZN12S10296C13_nt3v25Ev();
extern void _ZN12S10296C13_nt3v26Ev();
extern void _ZN12S10296C13_nt3v27Ev();
extern void _ZN12S10296C13_nt3v28Ev();
extern void _ZN12S10296C13_nt3v29Ev();
extern void _ZN12S10296C13_nt3v30Ev();
static  VTBL_ENTRY vtc_S10296C13_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S10296C13_nt[0]),
  (VTBL_ENTRY)&_ZN12S10296C13_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v25Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v26Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v27Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v28Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v29Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI12S10296C13_nt[];
VTBL_ENTRY *P__ZTI12S10296C13_nt = _ZTI12S10296C13_nt; 
extern  VTBL_ENTRY _ZTV12S10296C13_nt[];
Class_Descriptor cd_S10296C13_nt = {  "S10296C13_nt", // class name
  0,0,//no base classes
  &(vtc_S10296C13_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI12S10296C13_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S10296C13_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S10296C15_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S10296C15_nt[];
VTBL_ENTRY *P__ZTI12S10296C15_nt = _ZTI12S10296C15_nt; 
Class_Descriptor cd_S10296C15_nt = {  "S10296C15_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI12S10296C15_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  S10296C17_nt  {
  void *s10296c17f0;
  int s10296c17f1;
  void *s10296c17f2;
  int s10296c17f3[2];
  void  mf10296c17(); // _ZN12S10296C17_nt10mf10296c17Ev
};
//SIG(-1 S10296C17_nt) C1{ m Fp Fi Fp Fi[2]}


void  S10296C17_nt ::mf10296c17(){}

//skip512 S10296C17_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S10296C20_nt  {
  __tsi64 s10296c20f0[2];
  void  mf10296c20(); // _ZN12S10296C20_nt10mf10296c20Ev
};
//SIG(-1 S10296C20_nt) C1{ m FL[2]}


void  S10296C20_nt ::mf10296c20(){}

//skip512 S10296C20_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C19_nt  {
  ::S10296C20_nt s10296c19f0;
  void  mf10296c19(); // _ZN12S10296C19_nt10mf10296c19Ev
};
//SIG(-1 S10296C19_nt) C1{ m FC2{ m FL[2]}}


void  S10296C19_nt ::mf10296c19(){}

//skip512 S10296C19_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C18_nt  {
  ::S10296C19_nt s10296c18f0;
  ::S10296C19_nt s10296c18f1;
  ::S10296C19_nt s10296c18f2;
  ::S10296C19_nt s10296c18f3;
  void  mf10296c18(); // _ZN12S10296C18_nt10mf10296c18Ev
};
//SIG(-1 S10296C18_nt) C1{ m FC2{ m FC3{ m FL[2]}} FC2 FC2 FC2}


void  S10296C18_nt ::mf10296c18(){}

//skip512 S10296C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C16_nt  : S10296C17_nt {
  ::S10296C18_nt s10296c16f0;
};
//SIG(-1 S10296C16_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m FC5{ m FL[2]}} FC4 FC4 FC4}}



//skip512 S10296C16_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C17_nt;
static Base_Class bases_S10296C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S10296C21_nt  : S10296C17_nt {
  ::S10296C19_nt s10296c21f0;
};
//SIG(-1 S10296C21_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m FL[2]}}}



//skip512 S10296C21_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C17_nt;
static Base_Class bases_S10296C21_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S10296C12_nt  : S10296C13_nt , S10296C15_nt {
  ::S10296C16_nt s10296c12f0;
  ::S10296C21_nt s10296c12f1;
  virtual void  v19(); // _ZN12S10296C12_nt3v19Ev
  virtual void  v20(); // _ZN12S10296C12_nt3v20Ev
  virtual void  v21(); // _ZN12S10296C12_nt3v21Ev
  virtual void  v22(); // _ZN12S10296C12_nt3v22Ev
  virtual void  v23(); // _ZN12S10296C12_nt3v23Ev
  virtual void  v24(); // _ZN12S10296C12_nt3v24Ev
  ~S10296C12_nt(); // tgen
  S10296C12_nt(); // tgen
};
//SIG(-1 S10296C12_nt) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC10{ BC6 FC8}}


void  S10296C12_nt ::v19(){vfunc_called(this, "_ZN12S10296C12_nt3v19Ev");}
void  S10296C12_nt ::v20(){vfunc_called(this, "_ZN12S10296C12_nt3v20Ev");}
void  S10296C12_nt ::v21(){vfunc_called(this, "_ZN12S10296C12_nt3v21Ev");}
void  S10296C12_nt ::v22(){vfunc_called(this, "_ZN12S10296C12_nt3v22Ev");}
void  S10296C12_nt ::v23(){vfunc_called(this, "_ZN12S10296C12_nt3v23Ev");}
void  S10296C12_nt ::v24(){vfunc_called(this, "_ZN12S10296C12_nt3v24Ev");}
S10296C12_nt ::~S10296C12_nt(){ note_dtor("S10296C12_nt", this);} // tgen
S10296C12_nt ::S10296C12_nt(){ note_ctor("S10296C12_nt", this);} // tgen

//skip512 S10296C12_nt

#else // __cplusplus

extern void _ZN12S10296C12_ntC1Ev();
extern void _ZN12S10296C12_ntD1Ev();
Name_Map name_map_S10296C12_nt[] = {
  NSPAIR(_ZN12S10296C12_ntC1Ev),
  NSPAIR(_ZN12S10296C12_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C13_nt;
extern VTBL_ENTRY _ZTI12S10296C13_nt[];
extern  VTBL_ENTRY _ZTV12S10296C13_nt[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S10296C12_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S10296C12_nt[];
extern void _ZN12S10296C12_ntD1Ev();
extern void _ZN12S10296C12_ntD0Ev();
extern void _ZN12S10296C13_nt3v25Ev();
extern void _ZN12S10296C13_nt3v26Ev();
extern void _ZN12S10296C13_nt3v27Ev();
extern void _ZN12S10296C13_nt3v28Ev();
extern void _ZN12S10296C13_nt3v29Ev();
extern void _ZN12S10296C13_nt3v30Ev();
extern void _ZN12S10296C12_nt3v19Ev();
extern void _ZN12S10296C12_nt3v20Ev();
extern void _ZN12S10296C12_nt3v21Ev();
extern void _ZN12S10296C12_nt3v22Ev();
extern void _ZN12S10296C12_nt3v23Ev();
extern void _ZN12S10296C12_nt3v24Ev();
static  VTBL_ENTRY vtc_S10296C12_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S10296C12_nt[0]),
  (VTBL_ENTRY)&_ZN12S10296C12_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v25Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v26Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v27Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v28Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v29Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v30Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_nt3v19Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_nt3v20Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_nt3v21Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_nt3v22Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_nt3v23Ev,
  (VTBL_ENTRY)&_ZN12S10296C12_nt3v24Ev,
};
extern VTBL_ENTRY _ZTI12S10296C12_nt[];
VTBL_ENTRY *P__ZTI12S10296C12_nt = _ZTI12S10296C12_nt; 
extern  VTBL_ENTRY _ZTV12S10296C12_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C24  {
  virtual  ~S10296C24(); // _ZN9S10296C24D1Ev
  virtual void  v31(); // _ZN9S10296C243v31Ev
  S10296C24(); // tgen
};
//SIG(-1 S10296C24) C1{ vd v1}


 S10296C24 ::~S10296C24(){ note_dtor("S10296C24", this);}
void  S10296C24 ::v31(){vfunc_called(this, "_ZN9S10296C243v31Ev");}
S10296C24 ::S10296C24(){ note_ctor("S10296C24", this);} // tgen

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

#else // __cplusplus

extern void _ZN9S10296C24C1Ev();
extern void _ZN9S10296C24D1Ev();
Name_Map name_map_S10296C24[] = {
  NSPAIR(_ZN9S10296C24C1Ev),
  NSPAIR(_ZN9S10296C24D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S10296C24[];
extern void _ZN9S10296C24D1Ev();
extern void _ZN9S10296C24D0Ev();
extern void _ZN9S10296C243v31Ev();
static  VTBL_ENTRY vtc_S10296C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10296C24[0]),
  (VTBL_ENTRY)&_ZN9S10296C24D1Ev,
  (VTBL_ENTRY)&_ZN9S10296C24D0Ev,
  (VTBL_ENTRY)&_ZN9S10296C243v31Ev,
};
extern VTBL_ENTRY _ZTI9S10296C24[];
extern  VTBL_ENTRY _ZTV9S10296C24[];
Class_Descriptor cd_S10296C24 = {  "S10296C24", // class name
  0,0,//no base classes
  &(vtc_S10296C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S10296C24),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S10296C24),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  S10296C25_nt  {
  ::S9624C35 s10296c25f0;
  void  mf10296c25(); // _ZN12S10296C25_nt10mf10296c25Ev
};
//SIG(-1 S10296C25_nt) C1{ m FC2{ m Fp Fi[2] FC3{ m}}}


void  S10296C25_nt ::mf10296c25(){}

//skip512 S10296C25_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C23_nt  : S10296C24 {
  void *s10296c23f0[2];
  ::S10296C25_nt s10296c23f1;
  ::S10296C9 s10296c23f2;
  virtual  ~S10296C23_nt(); // _ZN12S10296C23_ntD1Ev
  virtual void  v32(); // _ZN12S10296C23_nt3v32Ev
  S10296C23_nt(); // tgen
};
//SIG(-1 S10296C23_nt) C1{ BC2{ vd v2} vd v1 Fp[2] FC3{ m FC4{ m Fp Fi[2] FC5{ m}}} FC6{ m Fp[2]}}


 S10296C23_nt ::~S10296C23_nt(){ note_dtor("S10296C23_nt", this);}
void  S10296C23_nt ::v32(){vfunc_called(this, "_ZN12S10296C23_nt3v32Ev");}
S10296C23_nt ::S10296C23_nt(){ note_ctor("S10296C23_nt", this);} // tgen

//skip512 S10296C23_nt

#else // __cplusplus

extern void _ZN12S10296C23_ntC1Ev();
extern void _ZN12S10296C23_ntD1Ev();
Name_Map name_map_S10296C23_nt[] = {
  NSPAIR(_ZN12S10296C23_ntC1Ev),
  NSPAIR(_ZN12S10296C23_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C24;
extern VTBL_ENTRY _ZTI9S10296C24[];
extern  VTBL_ENTRY _ZTV9S10296C24[];
static Base_Class bases_S10296C23_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S10296C23_nt[];
extern void _ZN12S10296C23_ntD1Ev();
extern void _ZN12S10296C23_ntD0Ev();
extern void _ZN9S10296C243v31Ev();
extern void _ZN12S10296C23_nt3v32Ev();
static  VTBL_ENTRY vtc_S10296C23_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S10296C23_nt[0]),
  (VTBL_ENTRY)&_ZN12S10296C23_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S10296C23_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S10296C243v31Ev,
  (VTBL_ENTRY)&_ZN12S10296C23_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI12S10296C23_nt[];
VTBL_ENTRY *P__ZTI12S10296C23_nt = _ZTI12S10296C23_nt; 
extern  VTBL_ENTRY _ZTV12S10296C23_nt[];
Class_Descriptor cd_S10296C23_nt = {  "S10296C23_nt", // class name
  bases_S10296C23_nt, 1,
  &(vtc_S10296C23_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI12S10296C23_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV12S10296C23_nt),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C30_nt  {
  short s10296c30f0[2];
  char s10296c30f1[2];
  short s10296c30f2;
};
//SIG(1 S10296C30_nt) C1{ Fs[2] Fc[2] Fs}



//skip512 S10296C30_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C31_nt  {
  short s10296c31f0[2];
};
//SIG(1 S10296C31_nt) C1{ Fs[2]}



//skip512 S10296C31_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C32  {
  void *s10296c32f0[2];
  void  mf10296c32(); // _ZN9S10296C3210mf10296c32Ev
};
//SIG(-1 S10296C32) C1{ m Fp[2]}


void  S10296C32 ::mf10296c32(){}

static void Test_S10296C32()
{
  {
    init_simple_test("S10296C32");
    S10296C32 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10296C32)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10296C32)");
    check_field_offset(lv, s10296c32f0, 0, "S10296C32.s10296c32f0");
  }
}
static Arrange_To_Call_Me vS10296C32(Test_S10296C32, "S10296C32", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C29_nt  {
  ::S10296C30_nt s10296c29f0[12];
  int s10296c29f1;
  ::S10296C31_nt s10296c29f2[4];
  int s10296c29f3;
  ::S10296C32 s10296c29f4;
  void  mf10296c29(); // _ZN12S10296C29_nt10mf10296c29Ev
};
//SIG(-1 S10296C29_nt) C1{ m FC2{ Fs[2] Fc[2] Fs}[12] Fi FC3{ Fs[2]}[4] Fi FC4{ m Fp[2]}}


void  S10296C29_nt ::mf10296c29(){}

//skip512 S10296C29_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C22_nt  : S10296C23_nt {
  ::S10296C29_nt s10296c22f0;
  virtual  ~S10296C22_nt(); // _ZN12S10296C22_ntD1Ev
  S10296C22_nt(); // tgen
};
//SIG(-1 S10296C22_nt) C1{ BC2{ BC3{ vd v1} vd v2 Fp[2] FC4{ m FC5{ m Fp Fi[2] FC6{ m}}} FC7{ m Fp[2]}} vd FC8{ m FC9{ Fs[2] Fc[2] Fs}[12] Fi FC10{ Fs[2]}[4] Fi FC11{ m Fp[2]}}}


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

//skip512 S10296C22_nt

#else // __cplusplus

extern void _ZN12S10296C22_ntC1Ev();
extern void _ZN12S10296C22_ntD1Ev();
Name_Map name_map_S10296C22_nt[] = {
  NSPAIR(_ZN12S10296C22_ntC1Ev),
  NSPAIR(_ZN12S10296C22_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C24;
extern VTBL_ENTRY _ZTI9S10296C24[];
extern  VTBL_ENTRY _ZTV9S10296C24[];
extern Class_Descriptor cd_S10296C23_nt;
extern VTBL_ENTRY _ZTI12S10296C23_nt[];
extern  VTBL_ENTRY _ZTV12S10296C23_nt[];
static Base_Class bases_S10296C22_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S10296C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI12S10296C22_nt[];
extern void _ZN12S10296C22_ntD1Ev();
extern void _ZN12S10296C22_ntD0Ev();
extern void _ZN9S10296C243v31Ev();
extern void _ZN12S10296C23_nt3v32Ev();
static  VTBL_ENTRY vtc_S10296C22_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S10296C22_nt[0]),
  (VTBL_ENTRY)&_ZN12S10296C22_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S10296C22_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S10296C243v31Ev,
  (VTBL_ENTRY)&_ZN12S10296C23_nt3v32Ev,
};
extern VTBL_ENTRY _ZTI12S10296C22_nt[];
VTBL_ENTRY *P__ZTI12S10296C22_nt = _ZTI12S10296C22_nt; 
extern  VTBL_ENTRY _ZTV12S10296C22_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C11_nt  {
  ::S10296C12_nt s10296c11f0;
  ::S10296C22_nt s10296c11f1;
  void  mf10296c11(); // _ZN12S10296C11_nt10mf10296c11Ev
};
//SIG(-1 S10296C11_nt) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC11{ BC7 FC9}} FC12{ BC13{ BC14{ vd v13} vd v14 Fp[2] FC15{ m FC16{ m Fp Fi[2] FC17{ m}}} FC18{ m Fp[2]}} vd FC19{ m FC20{ Fs[2] Fc[2] Fs}[12] Fi FC21{ Fs[2]}[4] Fi FC22{ m Fp[2]}}}}


void  S10296C11_nt ::mf10296c11(){}

//skip512 S10296C11_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C35_nt  : S10296C17_nt {
  ::S10296C3_nt s10296c35f0;
};
//SIG(-1 S10296C35_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m Fp[2]} FC5{ m Fp}}}



//skip512 S10296C35_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C17_nt;
static Base_Class bases_S10296C35_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S10296C34_nt  : S10296C13_nt , S10296C15_nt {
  ::S10296C35_nt s10296c34f0;
  virtual void  v33(); // _ZN12S10296C34_nt3v33Ev
  virtual void  v34(); // _ZN12S10296C34_nt3v34Ev
  virtual void  v35(); // _ZN12S10296C34_nt3v35Ev
  virtual void  v36(); // _ZN12S10296C34_nt3v36Ev
  virtual void  v37(); // _ZN12S10296C34_nt3v37Ev
  virtual void  v38(); // _ZN12S10296C34_nt3v38Ev
  ~S10296C34_nt(); // tgen
  S10296C34_nt(); // tgen
};
//SIG(-1 S10296C34_nt) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m Fp[2]} FC9{ m Fp}}}}


void  S10296C34_nt ::v33(){vfunc_called(this, "_ZN12S10296C34_nt3v33Ev");}
void  S10296C34_nt ::v34(){vfunc_called(this, "_ZN12S10296C34_nt3v34Ev");}
void  S10296C34_nt ::v35(){vfunc_called(this, "_ZN12S10296C34_nt3v35Ev");}
void  S10296C34_nt ::v36(){vfunc_called(this, "_ZN12S10296C34_nt3v36Ev");}
void  S10296C34_nt ::v37(){vfunc_called(this, "_ZN12S10296C34_nt3v37Ev");}
void  S10296C34_nt ::v38(){vfunc_called(this, "_ZN12S10296C34_nt3v38Ev");}
S10296C34_nt ::~S10296C34_nt(){ note_dtor("S10296C34_nt", this);} // tgen
S10296C34_nt ::S10296C34_nt(){ note_ctor("S10296C34_nt", this);} // tgen

//skip512 S10296C34_nt

#else // __cplusplus

extern void _ZN12S10296C34_ntC1Ev();
extern void _ZN12S10296C34_ntD1Ev();
Name_Map name_map_S10296C34_nt[] = {
  NSPAIR(_ZN12S10296C34_ntC1Ev),
  NSPAIR(_ZN12S10296C34_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C13_nt;
extern VTBL_ENTRY _ZTI12S10296C13_nt[];
extern  VTBL_ENTRY _ZTV12S10296C13_nt[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S10296C34_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C13_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S10296C34_nt[];
extern void _ZN12S10296C34_ntD1Ev();
extern void _ZN12S10296C34_ntD0Ev();
extern void _ZN12S10296C13_nt3v25Ev();
extern void _ZN12S10296C13_nt3v26Ev();
extern void _ZN12S10296C13_nt3v27Ev();
extern void _ZN12S10296C13_nt3v28Ev();
extern void _ZN12S10296C13_nt3v29Ev();
extern void _ZN12S10296C13_nt3v30Ev();
extern void _ZN12S10296C34_nt3v33Ev();
extern void _ZN12S10296C34_nt3v34Ev();
extern void _ZN12S10296C34_nt3v35Ev();
extern void _ZN12S10296C34_nt3v36Ev();
extern void _ZN12S10296C34_nt3v37Ev();
extern void _ZN12S10296C34_nt3v38Ev();
static  VTBL_ENTRY vtc_S10296C34_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S10296C34_nt[0]),
  (VTBL_ENTRY)&_ZN12S10296C34_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_ntD0Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v25Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v26Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v27Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v28Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v29Ev,
  (VTBL_ENTRY)&_ZN12S10296C13_nt3v30Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_nt3v33Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_nt3v34Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_nt3v35Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_nt3v36Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_nt3v37Ev,
  (VTBL_ENTRY)&_ZN12S10296C34_nt3v38Ev,
};
extern VTBL_ENTRY _ZTI12S10296C34_nt[];
VTBL_ENTRY *P__ZTI12S10296C34_nt = _ZTI12S10296C34_nt; 
extern  VTBL_ENTRY _ZTV12S10296C34_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C37  : S10296C24 {
  void *s10296c37f0[2];
  ::S10296C25_nt s10296c37f1;
  ::S10296C32 s10296c37f2;
  virtual  ~S10296C37(); // _ZN9S10296C37D1Ev
  virtual void  v39(); // _ZN9S10296C373v39Ev
  S10296C37(); // tgen
};
//SIG(-1 S10296C37) C1{ BC2{ vd v2} vd v1 Fp[2] FC3{ m FC4{ m Fp Fi[2] FC5{ m}}} FC6{ m Fp[2]}}


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

static void Test_S10296C37()
{
  extern Class_Descriptor cd_S10296C37;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S10296C37, buf);
    S10296C37 *dp, &lv = *(dp=new (buf) S10296C37());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S10296C37)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10296C37)");
    check_base_class_offset(lv, (S10296C24*), 0, "S10296C37");
    check_field_offset(lv, s10296c37f0, ABISELECT(8,4), "S10296C37.s10296c37f0");
    check_field_offset(lv, s10296c37f1, ABISELECT(24,12), "S10296C37.s10296c37f1");
    check_field_offset(lv, s10296c37f2, ABISELECT(48,28), "S10296C37.s10296c37f2");
    test_class_info(&lv, &cd_S10296C37);
    dp->~S10296C37();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10296C37(Test_S10296C37, "S10296C37", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S10296C37C1Ev();
extern void _ZN9S10296C37D1Ev();
Name_Map name_map_S10296C37[] = {
  NSPAIR(_ZN9S10296C37C1Ev),
  NSPAIR(_ZN9S10296C37D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C24;
extern VTBL_ENTRY _ZTI9S10296C24[];
extern  VTBL_ENTRY _ZTV9S10296C24[];
static Base_Class bases_S10296C37[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S10296C37[];
extern void _ZN9S10296C37D1Ev();
extern void _ZN9S10296C37D0Ev();
extern void _ZN9S10296C243v31Ev();
extern void _ZN9S10296C373v39Ev();
static  VTBL_ENTRY vtc_S10296C37[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S10296C37[0]),
  (VTBL_ENTRY)&_ZN9S10296C37D1Ev,
  (VTBL_ENTRY)&_ZN9S10296C37D0Ev,
  (VTBL_ENTRY)&_ZN9S10296C243v31Ev,
  (VTBL_ENTRY)&_ZN9S10296C373v39Ev,
};
extern VTBL_ENTRY _ZTI9S10296C37[];
extern  VTBL_ENTRY _ZTV9S10296C37[];
Class_Descriptor cd_S10296C37 = {  "S10296C37", // class name
  bases_S10296C37, 1,
  &(vtc_S10296C37[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S10296C37),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S10296C37),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C43_nt  {
  char s10296c43f0;
  char s10296c43f1:4;
  char s10296c43f2:4;
  char s10296c43f3:4;
  char s10296c43f4:4;
  char s10296c43f5:4;
  char s10296c43f6:4;
};
//SIG(-1 S10296C43_nt) C1{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4}



//skip512 S10296C43_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C42_nt  {
  void *s10296c42f0;
  int s10296c42f1;
  ::S10296C43_nt s10296c42f2;
  int s10296c42f3;
  ::S10296C32 s10296c42f4;
  void  mf10296c42(); // _ZN12S10296C42_nt10mf10296c42Ev
};
//SIG(-1 S10296C42_nt) C1{ m Fp Fi FC2{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC3{ m Fp[2]}}


void  S10296C42_nt ::mf10296c42(){}

//skip512 S10296C42_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C36_nt  : S10296C37 {
  ::S10296C42_nt s10296c36f0;
  virtual  ~S10296C36_nt(); // _ZN12S10296C36_ntD1Ev
  S10296C36_nt(); // tgen
};
//SIG(-1 S10296C36_nt) C1{ BC2{ BC3{ vd v1} vd v2 Fp[2] FC4{ m FC5{ m Fp Fi[2] FC6{ m}}} FC7{ m Fp[2]}} vd FC8{ m Fp Fi FC9{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC7}}


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

//skip512 S10296C36_nt

#else // __cplusplus

extern void _ZN12S10296C36_ntC1Ev();
extern void _ZN12S10296C36_ntD1Ev();
Name_Map name_map_S10296C36_nt[] = {
  NSPAIR(_ZN12S10296C36_ntC1Ev),
  NSPAIR(_ZN12S10296C36_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C24;
extern VTBL_ENTRY _ZTI9S10296C24[];
extern  VTBL_ENTRY _ZTV9S10296C24[];
extern Class_Descriptor cd_S10296C37;
extern VTBL_ENTRY _ZTI9S10296C37[];
extern  VTBL_ENTRY _ZTV9S10296C37[];
static Base_Class bases_S10296C36_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C24,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S10296C37,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI12S10296C36_nt[];
extern void _ZN12S10296C36_ntD1Ev();
extern void _ZN12S10296C36_ntD0Ev();
extern void _ZN9S10296C243v31Ev();
extern void _ZN9S10296C373v39Ev();
static  VTBL_ENTRY vtc_S10296C36_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S10296C36_nt[0]),
  (VTBL_ENTRY)&_ZN12S10296C36_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S10296C36_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S10296C243v31Ev,
  (VTBL_ENTRY)&_ZN9S10296C373v39Ev,
};
extern VTBL_ENTRY _ZTI12S10296C36_nt[];
VTBL_ENTRY *P__ZTI12S10296C36_nt = _ZTI12S10296C36_nt; 
extern  VTBL_ENTRY _ZTV12S10296C36_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C33_nt  {
  ::S10296C34_nt s10296c33f0;
  ::S10296C36_nt s10296c33f1;
  void  mf10296c33(); // _ZN12S10296C33_nt10mf10296c33Ev
};
//SIG(-1 S10296C33_nt) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m Fp[2]} FC10{ m Fp}}}} FC11{ BC12{ BC13{ vd v13} vd v14 Fp[2] FC14{ m FC15{ m Fp Fi[2] FC16{ m}}} FC17{ m Fp[2]}} vd FC18{ m Fp Fi FC19{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC17}}}


void  S10296C33_nt ::mf10296c33(){}

//skip512 S10296C33_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C10  {
  ::S10296C11_nt s10296c10f0;
  ::S10296C33_nt s10296c10f1;
  void  mf10296c10(); // _ZN9S10296C1010mf10296c10Ev
};
//SIG(-1 S10296C10) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC10}} FC13{ BC14{ BC15{ vd v13} vd v14 Fp[2] FC16{ m FC17{ m Fp Fi[2] FC18{ m}}} FC19{ m Fp[2]}} vd FC20{ m FC21{ Fs[2] Fc[2] Fs}[12] Fi FC22{ Fs[2]}[4] Fi FC23{ m Fp[2]}}}} FC24{ m FC25{ BC4 BC6 v15 v16 v17 v18 v19 v20 FC26{ BC8 FC27{ m FC28{ m Fp[2]} FC29{ m Fp}}}} FC30{ BC31{ BC15 vd v21 Fp[2] FC16 FC23} vd FC32{ m Fp Fi FC33{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC23}}}}


void  S10296C10 ::mf10296c10(){}

static void Test_S10296C10()
{
  {
    init_simple_test("S10296C10");
    static S10296C10 lv;
    check2(sizeof(lv), ABISELECT(584,416), "sizeof(S10296C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10296C10)");
    check_field_offset(lv, s10296c10f0, 0, "S10296C10.s10296c10f0");
    check_field_offset(lv, s10296c10f1, ABISELECT(384,304), "S10296C10.s10296c10f1");
  }
}
static Arrange_To_Call_Me vS10296C10(Test_S10296C10, "S10296C10", ABISELECT(584,416));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C47_nt  {
  __tsi64 s10296c47f0;
  void  mf10296c47(); // _ZN12S10296C47_nt10mf10296c47Ev
};
//SIG(-1 S10296C47_nt) C1{ m FL}


void  S10296C47_nt ::mf10296c47(){}

//skip512 S10296C47_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S10296C47_nt[];
VTBL_ENTRY *P__ZTI12S10296C47_nt = _ZTI12S10296C47_nt; 
Class_Descriptor cd_S10296C47_nt = {  "S10296C47_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  8, // object size
  NSPAIRA(_ZTI12S10296C47_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  S10296C46_nt  {
  ::S10296C47_nt s10296c46f0;
  void  mf10296c46(); // _ZN12S10296C46_nt10mf10296c46Ev
};
//SIG(-1 S10296C46_nt) C1{ m FC2{ m FL}}


void  S10296C46_nt ::mf10296c46(){}

//skip512 S10296C46_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C45_nt  {
  ::S10296C46_nt s10296c45f0;
  ::S10296C46_nt s10296c45f1;
  void  mf10296c45(); // _ZN12S10296C45_nt10mf10296c45Ev
};
//SIG(-1 S10296C45_nt) C1{ m FC2{ m FC3{ m FL}} FC2}


void  S10296C45_nt ::mf10296c45(){}

//skip512 S10296C45_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C44_nt  {
  ::S10296C45_nt s10296c44f0;
  ::S10296C45_nt s10296c44f1;
  void  mf10296c44(); // _ZN12S10296C44_nt10mf10296c44Ev
};
//SIG(-1 S10296C44_nt) C1{ m FC2{ m FC3{ m FC4{ m FL}} FC3} FC2}


void  S10296C44_nt ::mf10296c44(){}

//skip512 S10296C44_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C48  {
  void *s10296c48f0[2];
  void  mf10296c48(); // _ZN9S10296C4810mf10296c48Ev
};
//SIG(-1 S10296C48) C1{ m Fp[2]}


void  S10296C48 ::mf10296c48(){}

static void Test_S10296C48()
{
  {
    init_simple_test("S10296C48");
    S10296C48 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10296C48)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10296C48)");
    check_field_offset(lv, s10296c48f0, 0, "S10296C48.s10296c48f0");
  }
}
static Arrange_To_Call_Me vS10296C48(Test_S10296C48, "S10296C48", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S10296C1  : S10296C2_nt {
  ::S10296C3_nt s10296c1f0;
  ::S10296C6_nt s10296c1f1;
  ::S10296C10 s10296c1f2;
  ::S10296C44_nt s10296c1f3;
  ::S10296C48 s10296c1f4;
  char s10296c1f5;
  virtual void  v1(); // _ZN8S10296C12v1Ev
  virtual void  v2(); // _ZN8S10296C12v2Ev
  virtual void  v3(); // _ZN8S10296C12v3Ev
  virtual void  v4(); // _ZN8S10296C12v4Ev
  virtual void  v5(); // _ZN8S10296C12v5Ev
  virtual void  v6(); // _ZN8S10296C12v6Ev
  virtual void  v7(); // _ZN8S10296C12v7Ev
  virtual void  v8(); // _ZN8S10296C12v8Ev
  ~S10296C1(); // tgen
  S10296C1(); // tgen
};
//SIG(1 S10296C1) C1{ BC2{ vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18} v1 v2 v3 v4 v5 v6 v7 v8 FC3{ m FC4{ m Fp[2]} FC5{ m Fp}} FC6{ m FC7{ m FC4 FC8{ m Fp[2]}} FC7} FC9{ m FC10{ m FC11{ BC12{ vd v25 v26 v27 v28 v29 v30 FC13{ m Fp[4]}} BC14{} v19 v20 v21 v22 v23 v24 FC15{ BC16{ m Fp Fi Fp Fi[2]} FC17{ m FC18{ m FC19{ m FL[2]}} FC18 FC18 FC18}} FC20{ BC16 FC18}} FC21{ BC22{ BC23{ vd v31} vd v32 Fp[2] FC24{ m FC25{ m Fp Fi[2] FC26{ m}}} FC8} vd FC27{ m FC28{ Fs[2] Fc[2] Fs}[12] Fi FC29{ Fs[2]}[4] Fi FC30{ m Fp[2]}}}} FC31{ m FC32{ BC12 BC14 v33 v34 v35 v36 v37 v38 FC33{ BC16 FC3}} FC34{ BC35{ BC23 vd v39 Fp[2] FC24 FC30} vd FC36{ m Fp Fi FC37{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC30}}}} FC38{ m FC39{ m FC40{ m FC41{ m FL}} FC40} FC39} FC42{ m Fp[2]} Fc}


void  S10296C1 ::v1(){vfunc_called(this, "_ZN8S10296C12v1Ev");}
void  S10296C1 ::v2(){vfunc_called(this, "_ZN8S10296C12v2Ev");}
void  S10296C1 ::v3(){vfunc_called(this, "_ZN8S10296C12v3Ev");}
void  S10296C1 ::v4(){vfunc_called(this, "_ZN8S10296C12v4Ev");}
void  S10296C1 ::v5(){vfunc_called(this, "_ZN8S10296C12v5Ev");}
void  S10296C1 ::v6(){vfunc_called(this, "_ZN8S10296C12v6Ev");}
void  S10296C1 ::v7(){vfunc_called(this, "_ZN8S10296C12v7Ev");}
void  S10296C1 ::v8(){vfunc_called(this, "_ZN8S10296C12v8Ev");}
S10296C1 ::~S10296C1(){ note_dtor("S10296C1", this);} // tgen
S10296C1 ::S10296C1(){ note_ctor("S10296C1", this);} // tgen

static void Test_S10296C1()
{
  extern Class_Descriptor cd_S10296C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(93,128)];
    init_test(&cd_S10296C1, buf);
    S10296C1 *dp, &lv = *(dp=new (buf) S10296C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(736,508), "sizeof(S10296C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10296C1)");
    check_base_class_offset(lv, (S10296C2_nt*), 0, "S10296C1");
    check_field_offset(lv, s10296c1f0, ABISELECT(8,4), "S10296C1.s10296c1f0");
    check_field_offset(lv, s10296c1f1, ABISELECT(32,16), "S10296C1.s10296c1f1");
    check_field_offset(lv, s10296c1f2, ABISELECT(96,48), "S10296C1.s10296c1f2");
    check_field_offset(lv, s10296c1f3, ABISELECT(680,464), "S10296C1.s10296c1f3");
    check_field_offset(lv, s10296c1f4, ABISELECT(712,496), "S10296C1.s10296c1f4");
    check_field_offset(lv, s10296c1f5, ABISELECT(728,504), "S10296C1.s10296c1f5");
    test_class_info(&lv, &cd_S10296C1);
    dp->~S10296C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10296C1(Test_S10296C1, "S10296C1", ABISELECT(736,508));

#else // __cplusplus

extern void _ZN8S10296C1C1Ev();
extern void _ZN8S10296C1D1Ev();
Name_Map name_map_S10296C1[] = {
  NSPAIR(_ZN8S10296C1C1Ev),
  NSPAIR(_ZN8S10296C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10296C2_nt;
extern VTBL_ENTRY _ZTI11S10296C2_nt[];
extern  VTBL_ENTRY _ZTV11S10296C2_nt[];
static Base_Class bases_S10296C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10296C1[];
extern void _ZN8S10296C1D1Ev();
extern void _ZN8S10296C1D0Ev();
extern void _ZN11S10296C2_nt2v9Ev();
extern void _ZN11S10296C2_nt3v10Ev();
extern void _ZN11S10296C2_nt3v11Ev();
extern void _ZN11S10296C2_nt3v12Ev();
extern void _ZN11S10296C2_nt3v13Ev();
extern void _ZN11S10296C2_nt3v14Ev();
extern void _ZN11S10296C2_nt3v15Ev();
extern void _ZN11S10296C2_nt3v16Ev();
extern void _ZN11S10296C2_nt3v17Ev();
extern void _ZN11S10296C2_nt3v18Ev();
extern void _ZN8S10296C12v1Ev();
extern void _ZN8S10296C12v2Ev();
extern void _ZN8S10296C12v3Ev();
extern void _ZN8S10296C12v4Ev();
extern void _ZN8S10296C12v5Ev();
extern void _ZN8S10296C12v6Ev();
extern void _ZN8S10296C12v7Ev();
extern void _ZN8S10296C12v8Ev();
static  VTBL_ENTRY vtc_S10296C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10296C1[0]),
  (VTBL_ENTRY)&_ZN8S10296C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10296C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v15Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v16Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v17Ev,
  (VTBL_ENTRY)&_ZN11S10296C2_nt3v18Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v7Ev,
  (VTBL_ENTRY)&_ZN8S10296C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S10296C1[];
extern  VTBL_ENTRY _ZTV8S10296C1[];
Class_Descriptor cd_S10296C1 = {  "S10296C1", // class name
  bases_S10296C1, 1,
  &(vtc_S10296C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(736,508), // object size
  NSPAIRA(_ZTI8S10296C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10296C1),22, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual 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  S15657C4  {
  ::S10296C14_nt s15657c4f0;
  virtual  ~S15657C4(); // _ZN8S15657C4D1Ev
  virtual void  v7(); // _ZN8S15657C42v7Ev
  virtual void  v8(); // _ZN8S15657C42v8Ev
  virtual void  v9(); // _ZN8S15657C42v9Ev
  virtual void  v10(); // _ZN8S15657C43v10Ev
  virtual void  v11(); // _ZN8S15657C43v11Ev
  virtual void  v12(); // _ZN8S15657C43v12Ev
  S15657C4(); // tgen
};
//SIG(-1 S15657C4) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15657C4 ::~S15657C4(){ note_dtor("S15657C4", this);}
void  S15657C4 ::v7(){vfunc_called(this, "_ZN8S15657C42v7Ev");}
void  S15657C4 ::v8(){vfunc_called(this, "_ZN8S15657C42v8Ev");}
void  S15657C4 ::v9(){vfunc_called(this, "_ZN8S15657C42v9Ev");}
void  S15657C4 ::v10(){vfunc_called(this, "_ZN8S15657C43v10Ev");}
void  S15657C4 ::v11(){vfunc_called(this, "_ZN8S15657C43v11Ev");}
void  S15657C4 ::v12(){vfunc_called(this, "_ZN8S15657C43v12Ev");}
S15657C4 ::S15657C4(){ note_ctor("S15657C4", this);} // tgen

static void Test_S15657C4()
{
  extern Class_Descriptor cd_S15657C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15657C4, buf);
    S15657C4 *dp, &lv = *(dp=new (buf) S15657C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15657C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15657C4)");
    check_field_offset(lv, s15657c4f0, ABISELECT(8,4), "S15657C4.s15657c4f0");
    test_class_info(&lv, &cd_S15657C4);
    dp->~S15657C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15657C4(Test_S15657C4, "S15657C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15657C4C1Ev();
extern void _ZN8S15657C4D1Ev();
Name_Map name_map_S15657C4[] = {
  NSPAIR(_ZN8S15657C4C1Ev),
  NSPAIR(_ZN8S15657C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15657C4[];
extern void _ZN8S15657C4D1Ev();
extern void _ZN8S15657C4D0Ev();
extern void _ZN8S15657C42v7Ev();
extern void _ZN8S15657C42v8Ev();
extern void _ZN8S15657C42v9Ev();
extern void _ZN8S15657C43v10Ev();
extern void _ZN8S15657C43v11Ev();
extern void _ZN8S15657C43v12Ev();
static  VTBL_ENTRY vtc_S15657C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15657C4[0]),
  (VTBL_ENTRY)&_ZN8S15657C4D1Ev,
  (VTBL_ENTRY)&_ZN8S15657C4D0Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S15657C4[];
extern  VTBL_ENTRY _ZTV8S15657C4[];
Class_Descriptor cd_S15657C4 = {  "S15657C4", // class name
  0,0,//no base classes
  &(vtc_S15657C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15657C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15657C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15657C13_nt  : S10296C17_nt {
  ::S10296C46_nt s15657c13f0;
};
//SIG(-1 S15657C13_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} FC3{ m FC4{ m FL}}}



//skip512 S15657C13_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C17_nt;
static Base_Class bases_S15657C13_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15657C3  : S15657C4 , S10296C15_nt {
  ::S10296C16_nt s15657c3f0;
  ::S10296C21_nt s15657c3f1;
  ::S15657C13_nt s15657c3f2;
  virtual void  v1(); // _ZN8S15657C32v1Ev
  virtual void  v2(); // _ZN8S15657C32v2Ev
  virtual void  v3(); // _ZN8S15657C32v3Ev
  virtual void  v4(); // _ZN8S15657C32v4Ev
  virtual void  v5(); // _ZN8S15657C32v5Ev
  virtual void  v6(); // _ZN8S15657C32v6Ev
  ~S15657C3(); // tgen
  S15657C3(); // tgen
};
//SIG(-1 S15657C3) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC10{ BC6 FC8} FC11{ BC6 FC12{ m FC13{ m FL}}}}


void  S15657C3 ::v1(){vfunc_called(this, "_ZN8S15657C32v1Ev");}
void  S15657C3 ::v2(){vfunc_called(this, "_ZN8S15657C32v2Ev");}
void  S15657C3 ::v3(){vfunc_called(this, "_ZN8S15657C32v3Ev");}
void  S15657C3 ::v4(){vfunc_called(this, "_ZN8S15657C32v4Ev");}
void  S15657C3 ::v5(){vfunc_called(this, "_ZN8S15657C32v5Ev");}
void  S15657C3 ::v6(){vfunc_called(this, "_ZN8S15657C32v6Ev");}
S15657C3 ::~S15657C3(){ note_dtor("S15657C3", this);} // tgen
S15657C3 ::S15657C3(){ note_ctor("S15657C3", this);} // tgen

static void Test_S15657C3()
{
  extern Class_Descriptor cd_S15657C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,43)];
    init_test(&cd_S15657C3, buf);
    S15657C3 *dp, &lv = *(dp=new (buf) S15657C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,168), "sizeof(S15657C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15657C3)");
    check_base_class_offset(lv, (S15657C4*), 0, "S15657C3");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15657C3");
    check_field_offset(lv, s15657c3f0, ABISELECT(40,20), "S15657C3.s15657c3f0");
    check_field_offset(lv, s15657c3f1, ABISELECT(136,104), "S15657C3.s15657c3f1");
    check_field_offset(lv, s15657c3f2, ABISELECT(184,140), "S15657C3.s15657c3f2");
    test_class_info(&lv, &cd_S15657C3);
    dp->~S15657C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15657C3(Test_S15657C3, "S15657C3", ABISELECT(224,168));

#else // __cplusplus

extern void _ZN8S15657C3C1Ev();
extern void _ZN8S15657C3D1Ev();
Name_Map name_map_S15657C3[] = {
  NSPAIR(_ZN8S15657C3C1Ev),
  NSPAIR(_ZN8S15657C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15657C4;
extern VTBL_ENTRY _ZTI8S15657C4[];
extern  VTBL_ENTRY _ZTV8S15657C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15657C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15657C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15657C3[];
extern void _ZN8S15657C3D1Ev();
extern void _ZN8S15657C3D0Ev();
extern void _ZN8S15657C42v7Ev();
extern void _ZN8S15657C42v8Ev();
extern void _ZN8S15657C42v9Ev();
extern void _ZN8S15657C43v10Ev();
extern void _ZN8S15657C43v11Ev();
extern void _ZN8S15657C43v12Ev();
extern void _ZN8S15657C32v1Ev();
extern void _ZN8S15657C32v2Ev();
extern void _ZN8S15657C32v3Ev();
extern void _ZN8S15657C32v4Ev();
extern void _ZN8S15657C32v5Ev();
extern void _ZN8S15657C32v6Ev();
static  VTBL_ENTRY vtc_S15657C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15657C3[0]),
  (VTBL_ENTRY)&_ZN8S15657C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15657C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v12Ev,
  (VTBL_ENTRY)&_ZN8S15657C32v1Ev,
  (VTBL_ENTRY)&_ZN8S15657C32v2Ev,
  (VTBL_ENTRY)&_ZN8S15657C32v3Ev,
  (VTBL_ENTRY)&_ZN8S15657C32v4Ev,
  (VTBL_ENTRY)&_ZN8S15657C32v5Ev,
  (VTBL_ENTRY)&_ZN8S15657C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S15657C3[];
extern  VTBL_ENTRY _ZTV8S15657C3[];
Class_Descriptor cd_S15657C3 = {  "S15657C3", // class name
  bases_S15657C3, 2,
  &(vtc_S15657C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(224,168), // object size
  NSPAIRA(_ZTI8S15657C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15657C3),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  S15657C2  {
  ::S15657C3 s15657c2f0;
  ::S10296C22_nt s15657c2f1;
  void  mf15657c2(); // _ZN8S15657C29mf15657c2Ev
};
//SIG(-1 S15657C2) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC11{ BC7 FC9} FC12{ BC7 FC13{ m FC14{ m FL}}}} FC15{ BC16{ BC17{ vd v13} vd v14 Fp[2] FC18{ m FC19{ m Fp Fi[2] FC20{ m}}} FC21{ m Fp[2]}} vd FC22{ m FC23{ Fs[2] Fc[2] Fs}[12] Fi FC24{ Fs[2]}[4] Fi FC25{ m Fp[2]}}}}


void  S15657C2 ::mf15657c2(){}

static void Test_S15657C2()
{
  {
    init_simple_test("S15657C2");
    S15657C2 lv;
    check2(sizeof(lv), ABISELECT(424,332), "sizeof(S15657C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15657C2)");
    check_field_offset(lv, s15657c2f0, 0, "S15657C2.s15657c2f0");
    check_field_offset(lv, s15657c2f1, ABISELECT(224,168), "S15657C2.s15657c2f1");
  }
}
static Arrange_To_Call_Me vS15657C2(Test_S15657C2, "S15657C2", ABISELECT(424,332));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15657C33_nt  : S10296C17_nt {
  int s15657c33f0;
};
//SIG(-1 S15657C33_nt) C1{ BC2{ m Fp Fi Fp Fi[2]} Fi}



//skip512 S15657C33_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C17_nt;
static Base_Class bases_S15657C33_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C17_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S15657C28  : S15657C4 , S10296C15_nt {
  ::S10296C35_nt s15657c28f0;
  ::S10296C21_nt s15657c28f1;
  ::S15657C13_nt s15657c28f2;
  ::S15657C33_nt s15657c28f3;
  ::S15657C13_nt s15657c28f4;
  ::S15657C33_nt s15657c28f5;
  ::S15657C13_nt s15657c28f6;
  ::S15657C33_nt s15657c28f7;
  ::S15657C13_nt s15657c28f8;
  ::S15657C33_nt s15657c28f9;
  ::S15657C13_nt s15657c28f10;
  ::S15657C33_nt s15657c28f11;
  ::S15657C13_nt s15657c28f12;
  ::S15657C33_nt s15657c28f13;
  ::S15657C13_nt s15657c28f14;
  ::S15657C33_nt s15657c28f15;
  ::S15657C13_nt s15657c28f16;
  ::S15657C33_nt s15657c28f17;
  ::S15657C13_nt s15657c28f18;
  ::S15657C33_nt s15657c28f19;
  ::S15657C13_nt s15657c28f20;
  ::S15657C33_nt s15657c28f21;
  ::S15657C13_nt s15657c28f22;
  ::S15657C33_nt s15657c28f23;
  ::S15657C13_nt s15657c28f24;
  ::S15657C33_nt s15657c28f25;
  ::S15657C13_nt s15657c28f26;
  ::S15657C33_nt s15657c28f27;
  virtual void  v15(); // _ZN9S15657C283v15Ev
  virtual void  v16(); // _ZN9S15657C283v16Ev
  virtual void  v17(); // _ZN9S15657C283v17Ev
  virtual void  v18(); // _ZN9S15657C283v18Ev
  virtual void  v19(); // _ZN9S15657C283v19Ev
  virtual void  v20(); // _ZN9S15657C283v20Ev
  ~S15657C28(); // tgen
  S15657C28(); // tgen
};
//SIG(-1 S15657C28) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m Fp[2]} FC9{ m Fp}}} FC10{ BC6 FC11{ m FC12{ m FL[2]}}} FC13{ BC6 FC14{ m FC15{ m FL}}} FC16{ BC6 Fi} FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16}


void  S15657C28 ::v15(){vfunc_called(this, "_ZN9S15657C283v15Ev");}
void  S15657C28 ::v16(){vfunc_called(this, "_ZN9S15657C283v16Ev");}
void  S15657C28 ::v17(){vfunc_called(this, "_ZN9S15657C283v17Ev");}
void  S15657C28 ::v18(){vfunc_called(this, "_ZN9S15657C283v18Ev");}
void  S15657C28 ::v19(){vfunc_called(this, "_ZN9S15657C283v19Ev");}
void  S15657C28 ::v20(){vfunc_called(this, "_ZN9S15657C283v20Ev");}
S15657C28 ::~S15657C28(){ note_dtor("S15657C28", this);} // tgen
S15657C28 ::S15657C28(){ note_ctor("S15657C28", this);} // tgen

static void Test_S15657C28()
{
  extern Class_Descriptor cd_S15657C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(149,192)];
    init_test(&cd_S15657C28, buf);
    S15657C28 *dp, &lv = *(dp=new (buf) S15657C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1184,764), "sizeof(S15657C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15657C28)");
    check_base_class_offset(lv, (S15657C4*), 0, "S15657C28");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15657C28");
    check_field_offset(lv, s15657c28f0, ABISELECT(40,20), "S15657C28.s15657c28f0");
    check_field_offset(lv, s15657c28f1, ABISELECT(96,52), "S15657C28.s15657c28f1");
    check_field_offset(lv, s15657c28f2, ABISELECT(144,88), "S15657C28.s15657c28f2");
    check_field_offset(lv, s15657c28f3, ABISELECT(184,116), "S15657C28.s15657c28f3");
    check_field_offset(lv, s15657c28f4, ABISELECT(224,140), "S15657C28.s15657c28f4");
    check_field_offset(lv, s15657c28f5, ABISELECT(264,168), "S15657C28.s15657c28f5");
    check_field_offset(lv, s15657c28f6, ABISELECT(304,192), "S15657C28.s15657c28f6");
    check_field_offset(lv, s15657c28f7, ABISELECT(344,220), "S15657C28.s15657c28f7");
    check_field_offset(lv, s15657c28f8, ABISELECT(384,244), "S15657C28.s15657c28f8");
    check_field_offset(lv, s15657c28f9, ABISELECT(424,272), "S15657C28.s15657c28f9");
    check_field_offset(lv, s15657c28f10, ABISELECT(464,296), "S15657C28.s15657c28f10");
    check_field_offset(lv, s15657c28f11, ABISELECT(504,324), "S15657C28.s15657c28f11");
    check_field_offset(lv, s15657c28f12, ABISELECT(544,348), "S15657C28.s15657c28f12");
    check_field_offset(lv, s15657c28f13, ABISELECT(584,376), "S15657C28.s15657c28f13");
    check_field_offset(lv, s15657c28f14, ABISELECT(624,400), "S15657C28.s15657c28f14");
    check_field_offset(lv, s15657c28f15, ABISELECT(664,428), "S15657C28.s15657c28f15");
    check_field_offset(lv, s15657c28f16, ABISELECT(704,452), "S15657C28.s15657c28f16");
    check_field_offset(lv, s15657c28f17, ABISELECT(744,480), "S15657C28.s15657c28f17");
    check_field_offset(lv, s15657c28f18, ABISELECT(784,504), "S15657C28.s15657c28f18");
    check_field_offset(lv, s15657c28f19, ABISELECT(824,532), "S15657C28.s15657c28f19");
    check_field_offset(lv, s15657c28f20, ABISELECT(864,556), "S15657C28.s15657c28f20");
    check_field_offset(lv, s15657c28f21, ABISELECT(904,584), "S15657C28.s15657c28f21");
    check_field_offset(lv, s15657c28f22, ABISELECT(944,608), "S15657C28.s15657c28f22");
    check_field_offset(lv, s15657c28f23, ABISELECT(984,636), "S15657C28.s15657c28f23");
    check_field_offset(lv, s15657c28f24, ABISELECT(1024,660), "S15657C28.s15657c28f24");
    check_field_offset(lv, s15657c28f25, ABISELECT(1064,688), "S15657C28.s15657c28f25");
    check_field_offset(lv, s15657c28f26, ABISELECT(1104,712), "S15657C28.s15657c28f26");
    check_field_offset(lv, s15657c28f27, ABISELECT(1144,740), "S15657C28.s15657c28f27");
    test_class_info(&lv, &cd_S15657C28);
    dp->~S15657C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15657C28(Test_S15657C28, "S15657C28", ABISELECT(1184,764));

#else // __cplusplus

extern void _ZN9S15657C28C1Ev();
extern void _ZN9S15657C28D1Ev();
Name_Map name_map_S15657C28[] = {
  NSPAIR(_ZN9S15657C28C1Ev),
  NSPAIR(_ZN9S15657C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15657C4;
extern VTBL_ENTRY _ZTI8S15657C4[];
extern  VTBL_ENTRY _ZTV8S15657C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15657C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15657C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S15657C28[];
extern void _ZN9S15657C28D1Ev();
extern void _ZN9S15657C28D0Ev();
extern void _ZN8S15657C42v7Ev();
extern void _ZN8S15657C42v8Ev();
extern void _ZN8S15657C42v9Ev();
extern void _ZN8S15657C43v10Ev();
extern void _ZN8S15657C43v11Ev();
extern void _ZN8S15657C43v12Ev();
extern void _ZN9S15657C283v15Ev();
extern void _ZN9S15657C283v16Ev();
extern void _ZN9S15657C283v17Ev();
extern void _ZN9S15657C283v18Ev();
extern void _ZN9S15657C283v19Ev();
extern void _ZN9S15657C283v20Ev();
static  VTBL_ENTRY vtc_S15657C28[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15657C28[0]),
  (VTBL_ENTRY)&_ZN9S15657C28D1Ev,
  (VTBL_ENTRY)&_ZN9S15657C28D0Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15657C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15657C43v12Ev,
  (VTBL_ENTRY)&_ZN9S15657C283v15Ev,
  (VTBL_ENTRY)&_ZN9S15657C283v16Ev,
  (VTBL_ENTRY)&_ZN9S15657C283v17Ev,
  (VTBL_ENTRY)&_ZN9S15657C283v18Ev,
  (VTBL_ENTRY)&_ZN9S15657C283v19Ev,
  (VTBL_ENTRY)&_ZN9S15657C283v20Ev,
};
extern VTBL_ENTRY _ZTI9S15657C28[];
extern  VTBL_ENTRY _ZTV9S15657C28[];
Class_Descriptor cd_S15657C28 = {  "S15657C28", // class name
  bases_S15657C28, 2,
  &(vtc_S15657C28[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(1184,764), // object size
  NSPAIRA(_ZTI9S15657C28),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S15657C28),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  S15657C27  {
  ::S15657C28 s15657c27f0;
  ::S10296C36_nt s15657c27f1;
  void  mf15657c27(); // _ZN9S15657C2710mf15657c27Ev
};
//SIG(-1 S15657C27) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m Fp[2]} FC10{ m Fp}}} FC11{ BC7 FC12{ m FC13{ m FL[2]}}} FC14{ BC7 FC15{ m FC16{ m FL}}} FC17{ BC7 Fi} FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17} FC18{ BC19{ BC20{ vd v13} vd v14 Fp[2] FC21{ m FC22{ m Fp Fi[2] FC23{ m}}} FC24{ m Fp[2]}} vd FC25{ m Fp Fi FC26{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC24}}}


void  S15657C27 ::mf15657c27(){}

static void Test_S15657C27()
{
  {
    init_simple_test("S15657C27");
    static S15657C27 lv;
    check2(sizeof(lv), ABISELECT(1288,824), "sizeof(S15657C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15657C27)");
    check_field_offset(lv, s15657c27f0, 0, "S15657C27.s15657c27f0");
    check_field_offset(lv, s15657c27f1, ABISELECT(1184,764), "S15657C27.s15657c27f1");
  }
}
static Arrange_To_Call_Me vS15657C27(Test_S15657C27, "S15657C27", ABISELECT(1288,824));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15657C1  {
  ::S15657C2 s15657c1f0;
  ::S15657C27 s15657c1f1;
  void  mf15657c1(); // _ZN8S15657C19mf15657c1Ev
};
//SIG(1 S15657C1) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC10} FC13{ BC8 FC14{ m FC15{ m FL}}}} FC16{ BC17{ BC18{ vd v13} vd v14 Fp[2] FC19{ m FC20{ m Fp Fi[2] FC21{ m}}} FC22{ m Fp[2]}} vd FC23{ m FC24{ Fs[2] Fc[2] Fs}[12] Fi FC25{ Fs[2]}[4] Fi FC26{ m Fp[2]}}}} FC27{ m FC28{ BC4 BC6 v15 v16 v17 v18 v19 v20 FC29{ BC8 FC30{ m FC31{ m Fp[2]} FC32{ m Fp}}} FC12 FC13 FC33{ BC8 Fi} FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33 FC13 FC33} FC34{ BC35{ BC18 vd v21 Fp[2] FC19 FC26} vd FC36{ m Fp Fi FC37{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC26}}}}


void  S15657C1 ::mf15657c1(){}

static void Test_S15657C1()
{
  {
    init_simple_test("S15657C1");
    static S15657C1 lv;
    check2(sizeof(lv), ABISELECT(1712,1156), "sizeof(S15657C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15657C1)");
    check_field_offset(lv, s15657c1f0, 0, "S15657C1.s15657c1f0");
    check_field_offset(lv, s15657c1f1, ABISELECT(424,332), "S15657C1.s15657c1f1");
  }
}
static Arrange_To_Call_Me vS15657C1(Test_S15657C1, "S15657C1", ABISELECT(1712,1156));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15056C8_nt  {
  ::S10296C48 s15056c8f0;
  int s15056c8f1;
  void  mf15056c8(); // _ZN11S15056C8_nt9mf15056c8Ev
};
//SIG(-1 S15056C8_nt) C1{ m FC2{ m Fp[2]} Fi}


void  S15056C8_nt ::mf15056c8(){}

//skip512 S15056C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15056C2_nt  {
  int s15056c2f0[3];
  ::S10296C7_nt s15056c2f1;
  int s15056c2f2[3];
  char s15056c2f3;
  void *s15056c2f4;
  ::S9624C14_nt s15056c2f5;
  char s15056c2f6;
  ::S15056C8_nt s15056c2f7;
  void  mf15056c2(); // _ZN11S15056C2_nt9mf15056c2Ev
};
//SIG(-1 S15056C2_nt) C1{ m Fi[3] FC2{ m FC3{ m Fp[2]} FC4{ m Fp[2]}} Fi[3] Fc Fp FC5{ m Fp Fi FC6{ m}} Fc FC7{ m FC8{ m Fp[2]} Fi}}


void  S15056C2_nt ::mf15056c2(){}

//skip512 S15056C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15056C13  {
  ::S10296C14_nt s15056c13f0;
  virtual  ~S15056C13(); // _ZN9S15056C13D1Ev
  virtual void  v7(); // _ZN9S15056C132v7Ev
  virtual void  v8(); // _ZN9S15056C132v8Ev
  virtual void  v9(); // _ZN9S15056C132v9Ev
  virtual void  v10(); // _ZN9S15056C133v10Ev
  virtual void  v11(); // _ZN9S15056C133v11Ev
  virtual void  v12(); // _ZN9S15056C133v12Ev
  S15056C13(); // tgen
};
//SIG(-1 S15056C13) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15056C13 ::~S15056C13(){ note_dtor("S15056C13", this);}
void  S15056C13 ::v7(){vfunc_called(this, "_ZN9S15056C132v7Ev");}
void  S15056C13 ::v8(){vfunc_called(this, "_ZN9S15056C132v8Ev");}
void  S15056C13 ::v9(){vfunc_called(this, "_ZN9S15056C132v9Ev");}
void  S15056C13 ::v10(){vfunc_called(this, "_ZN9S15056C133v10Ev");}
void  S15056C13 ::v11(){vfunc_called(this, "_ZN9S15056C133v11Ev");}
void  S15056C13 ::v12(){vfunc_called(this, "_ZN9S15056C133v12Ev");}
S15056C13 ::S15056C13(){ note_ctor("S15056C13", this);} // tgen

static void Test_S15056C13()
{
  extern Class_Descriptor cd_S15056C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15056C13, buf);
    S15056C13 *dp, &lv = *(dp=new (buf) S15056C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15056C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15056C13)");
    check_field_offset(lv, s15056c13f0, ABISELECT(8,4), "S15056C13.s15056c13f0");
    test_class_info(&lv, &cd_S15056C13);
    dp->~S15056C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15056C13(Test_S15056C13, "S15056C13", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S15056C13C1Ev();
extern void _ZN9S15056C13D1Ev();
Name_Map name_map_S15056C13[] = {
  NSPAIR(_ZN9S15056C13C1Ev),
  NSPAIR(_ZN9S15056C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S15056C13[];
extern void _ZN9S15056C13D1Ev();
extern void _ZN9S15056C13D0Ev();
extern void _ZN9S15056C132v7Ev();
extern void _ZN9S15056C132v8Ev();
extern void _ZN9S15056C132v9Ev();
extern void _ZN9S15056C133v10Ev();
extern void _ZN9S15056C133v11Ev();
extern void _ZN9S15056C133v12Ev();
static  VTBL_ENTRY vtc_S15056C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15056C13[0]),
  (VTBL_ENTRY)&_ZN9S15056C13D1Ev,
  (VTBL_ENTRY)&_ZN9S15056C13D0Ev,
  (VTBL_ENTRY)&_ZN9S15056C132v7Ev,
  (VTBL_ENTRY)&_ZN9S15056C132v8Ev,
  (VTBL_ENTRY)&_ZN9S15056C132v9Ev,
  (VTBL_ENTRY)&_ZN9S15056C133v10Ev,
  (VTBL_ENTRY)&_ZN9S15056C133v11Ev,
  (VTBL_ENTRY)&_ZN9S15056C133v12Ev,
};
extern VTBL_ENTRY _ZTI9S15056C13[];
extern  VTBL_ENTRY _ZTV9S15056C13[];
Class_Descriptor cd_S15056C13 = {  "S15056C13", // class name
  0,0,//no base classes
  &(vtc_S15056C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S15056C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S15056C13),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15056C12  : S15056C13 , S10296C15_nt {
  ::S10296C21_nt s15056c12f0;
  ::S10296C16_nt s15056c12f1;
  virtual void  v1(); // _ZN9S15056C122v1Ev
  virtual void  v2(); // _ZN9S15056C122v2Ev
  virtual void  v3(); // _ZN9S15056C122v3Ev
  virtual void  v4(); // _ZN9S15056C122v4Ev
  virtual void  v5(); // _ZN9S15056C122v5Ev
  virtual void  v6(); // _ZN9S15056C122v6Ev
  ~S15056C12(); // tgen
  S15056C12(); // tgen
};
//SIG(-1 S15056C12) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC9{ BC6 FC10{ m FC7 FC7 FC7 FC7}}}


void  S15056C12 ::v1(){vfunc_called(this, "_ZN9S15056C122v1Ev");}
void  S15056C12 ::v2(){vfunc_called(this, "_ZN9S15056C122v2Ev");}
void  S15056C12 ::v3(){vfunc_called(this, "_ZN9S15056C122v3Ev");}
void  S15056C12 ::v4(){vfunc_called(this, "_ZN9S15056C122v4Ev");}
void  S15056C12 ::v5(){vfunc_called(this, "_ZN9S15056C122v5Ev");}
void  S15056C12 ::v6(){vfunc_called(this, "_ZN9S15056C122v6Ev");}
S15056C12 ::~S15056C12(){ note_dtor("S15056C12", this);} // tgen
S15056C12 ::S15056C12(){ note_ctor("S15056C12", this);} // tgen

static void Test_S15056C12()
{
  extern Class_Descriptor cd_S15056C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,36)];
    init_test(&cd_S15056C12, buf);
    S15056C12 *dp, &lv = *(dp=new (buf) S15056C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,140), "sizeof(S15056C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15056C12)");
    check_base_class_offset(lv, (S15056C13*), 0, "S15056C12");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15056C12");
    check_field_offset(lv, s15056c12f0, ABISELECT(40,20), "S15056C12.s15056c12f0");
    check_field_offset(lv, s15056c12f1, ABISELECT(88,56), "S15056C12.s15056c12f1");
    test_class_info(&lv, &cd_S15056C12);
    dp->~S15056C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15056C12(Test_S15056C12, "S15056C12", ABISELECT(184,140));

#else // __cplusplus

extern void _ZN9S15056C12C1Ev();
extern void _ZN9S15056C12D1Ev();
Name_Map name_map_S15056C12[] = {
  NSPAIR(_ZN9S15056C12C1Ev),
  NSPAIR(_ZN9S15056C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15056C13;
extern VTBL_ENTRY _ZTI9S15056C13[];
extern  VTBL_ENTRY _ZTV9S15056C13[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15056C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15056C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S15056C12[];
extern void _ZN9S15056C12D1Ev();
extern void _ZN9S15056C12D0Ev();
extern void _ZN9S15056C132v7Ev();
extern void _ZN9S15056C132v8Ev();
extern void _ZN9S15056C132v9Ev();
extern void _ZN9S15056C133v10Ev();
extern void _ZN9S15056C133v11Ev();
extern void _ZN9S15056C133v12Ev();
extern void _ZN9S15056C122v1Ev();
extern void _ZN9S15056C122v2Ev();
extern void _ZN9S15056C122v3Ev();
extern void _ZN9S15056C122v4Ev();
extern void _ZN9S15056C122v5Ev();
extern void _ZN9S15056C122v6Ev();
static  VTBL_ENTRY vtc_S15056C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15056C12[0]),
  (VTBL_ENTRY)&_ZN9S15056C12D1Ev,
  (VTBL_ENTRY)&_ZN9S15056C12D0Ev,
  (VTBL_ENTRY)&_ZN9S15056C132v7Ev,
  (VTBL_ENTRY)&_ZN9S15056C132v8Ev,
  (VTBL_ENTRY)&_ZN9S15056C132v9Ev,
  (VTBL_ENTRY)&_ZN9S15056C133v10Ev,
  (VTBL_ENTRY)&_ZN9S15056C133v11Ev,
  (VTBL_ENTRY)&_ZN9S15056C133v12Ev,
  (VTBL_ENTRY)&_ZN9S15056C122v1Ev,
  (VTBL_ENTRY)&_ZN9S15056C122v2Ev,
  (VTBL_ENTRY)&_ZN9S15056C122v3Ev,
  (VTBL_ENTRY)&_ZN9S15056C122v4Ev,
  (VTBL_ENTRY)&_ZN9S15056C122v5Ev,
  (VTBL_ENTRY)&_ZN9S15056C122v6Ev,
};
extern VTBL_ENTRY _ZTI9S15056C12[];
extern  VTBL_ENTRY _ZTV9S15056C12[];
Class_Descriptor cd_S15056C12 = {  "S15056C12", // class name
  bases_S15056C12, 2,
  &(vtc_S15056C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,140), // object size
  NSPAIRA(_ZTI9S15056C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S15056C12),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  S15056C11  {
  ::S15056C12 s15056c11f0;
  ::S10296C22_nt s15056c11f1;
  void  mf15056c11(); // _ZN9S15056C1110mf15056c11Ev
};
//SIG(-1 S15056C11) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC10{ BC7 FC11{ m FC8 FC8 FC8 FC8}}} FC12{ BC13{ BC14{ vd v13} vd v14 Fp[2] FC15{ m FC16{ m Fp Fi[2] FC17{ m}}} FC18{ m Fp[2]}} vd FC19{ m FC20{ Fs[2] Fc[2] Fs}[12] Fi FC21{ Fs[2]}[4] Fi FC22{ m Fp[2]}}}}


void  S15056C11 ::mf15056c11(){}

static void Test_S15056C11()
{
  {
    init_simple_test("S15056C11");
    S15056C11 lv;
    check2(sizeof(lv), ABISELECT(384,304), "sizeof(S15056C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15056C11)");
    check_field_offset(lv, s15056c11f0, 0, "S15056C11.s15056c11f0");
    check_field_offset(lv, s15056c11f1, ABISELECT(184,140), "S15056C11.s15056c11f1");
  }
}
static Arrange_To_Call_Me vS15056C11(Test_S15056C11, "S15056C11", ABISELECT(384,304));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15056C10  {
  ::S15056C11 s15056c10f0;
  ::S10296C33_nt s15056c10f1;
  void  mf15056c10(); // _ZN9S15056C1010mf15056c10Ev
};
//SIG(-1 S15056C10) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FL[2]}}} FC11{ BC8 FC12{ m FC9 FC9 FC9 FC9}}} FC13{ BC14{ BC15{ vd v13} vd v14 Fp[2] FC16{ m FC17{ m Fp Fi[2] FC18{ m}}} FC19{ m Fp[2]}} vd FC20{ m FC21{ Fs[2] Fc[2] Fs}[12] Fi FC22{ Fs[2]}[4] Fi FC23{ m Fp[2]}}}} FC24{ m FC25{ BC26{ vd v21 v22 v23 v24 v25 v26 FC5} BC6 v15 v16 v17 v18 v19 v20 FC27{ BC8 FC28{ m FC29{ m Fp[2]} FC30{ m Fp}}}} FC31{ BC32{ BC15 vd v27 Fp[2] FC16 FC23} vd FC33{ m Fp Fi FC34{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC23}}}}


void  S15056C10 ::mf15056c10(){}

static void Test_S15056C10()
{
  {
    init_simple_test("S15056C10");
    static S15056C10 lv;
    check2(sizeof(lv), ABISELECT(584,416), "sizeof(S15056C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15056C10)");
    check_field_offset(lv, s15056c10f0, 0, "S15056C10.s15056c10f0");
    check_field_offset(lv, s15056c10f1, ABISELECT(384,304), "S15056C10.s15056c10f1");
  }
}
static Arrange_To_Call_Me vS15056C10(Test_S15056C10, "S15056C10", ABISELECT(584,416));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15056C1  {
  char s15056c1f0;
  ::S15056C2_nt s15056c1f1;
  int s15056c1f2;
  ::S15056C10 s15056c1f3;
  ::S10296C32 s15056c1f4;
  void  mf15056c1(); // _ZN8S15056C19mf15056c1Ev
};
//SIG(1 S15056C1) C1{ m Fc FC2{ m Fi[3] FC3{ m FC4{ m Fp[2]} FC5{ m Fp[2]}} Fi[3] Fc Fp FC6{ m Fp Fi FC7{ m}} Fc FC8{ m FC9{ m Fp[2]} Fi}} Fi FC10{ m FC11{ m FC12{ BC13{ vd v7 v8 v9 v10 v11 v12 FC14{ m Fp[4]}} BC15{} v1 v2 v3 v4 v5 v6 FC16{ BC17{ m Fp Fi Fp Fi[2]} FC18{ m FC19{ m FL[2]}}} FC20{ BC17 FC21{ m FC18 FC18 FC18 FC18}}} FC22{ BC23{ BC24{ vd v13} vd v14 Fp[2] FC25{ m FC26{ m Fp Fi[2] FC27{ m}}} FC5} vd FC28{ m FC29{ Fs[2] Fc[2] Fs}[12] Fi FC30{ Fs[2]}[4] Fi FC31{ m Fp[2]}}}} FC32{ m FC33{ BC34{ vd v21 v22 v23 v24 v25 v26 FC14} BC15 v15 v16 v17 v18 v19 v20 FC35{ BC17 FC36{ m FC4 FC37{ m Fp}}}} FC38{ BC39{ BC24 vd v27 Fp[2] FC25 FC31} vd FC40{ m Fp Fi FC41{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC31}}}} FC31}


void  S15056C1 ::mf15056c1(){}

static void Test_S15056C1()
{
  {
    init_simple_test("S15056C1");
    static S15056C1 lv;
    check2(sizeof(lv), ABISELECT(736,508), "sizeof(S15056C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15056C1)");
    check_field_offset(lv, s15056c1f0, 0, "S15056C1.s15056c1f0");
    check_field_offset(lv, s15056c1f1, ABISELECT(8,4), "S15056C1.s15056c1f1");
    check_field_offset(lv, s15056c1f2, ABISELECT(128,80), "S15056C1.s15056c1f2");
    check_field_offset(lv, s15056c1f3, ABISELECT(136,84), "S15056C1.s15056c1f3");
    check_field_offset(lv, s15056c1f4, ABISELECT(720,500), "S15056C1.s15056c1f4");
  }
}
static Arrange_To_Call_Me vS15056C1(Test_S15056C1, "S15056C1", ABISELECT(736,508));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16242C43  {
  ::S10296C3_nt s16242c43f0;
  ::S10296C7_nt s16242c43f1;
  int s16242c43f2[3];
  void  mf16242c43(); // _ZN9S16242C4310mf16242c43Ev
};
//SIG(1 S16242C43) C1{ m FC2{ m FC3{ m Fp[2]} FC4{ m Fp}} FC5{ m FC3 FC6{ m Fp[2]}} Fi[3]}


void  S16242C43 ::mf16242c43(){}

static void Test_S16242C43()
{
  {
    init_simple_test("S16242C43");
    S16242C43 lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S16242C43)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16242C43)");
    check_field_offset(lv, s16242c43f0, 0, "S16242C43.s16242c43f0");
    check_field_offset(lv, s16242c43f1, ABISELECT(24,12), "S16242C43.s16242c43f1");
    check_field_offset(lv, s16242c43f2, ABISELECT(56,28), "S16242C43.s16242c43f2");
  }
}
static Arrange_To_Call_Me vS16242C43(Test_S16242C43, "S16242C43", ABISELECT(72,40));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16242C42  {
  ::S16242C43 s16242c42f0[6];
  ::S9624C14_nt s16242c42f1;
  void  mf16242c42(); // _ZN9S16242C4210mf16242c42Ev
};
//SIG(-1 S16242C42) C1{ m FC2{ m FC3{ m FC4{ m Fp[2]} FC5{ m Fp}} FC6{ m FC4 FC7{ m Fp[2]}} Fi[3]}[6] FC8{ m Fp Fi FC9{ m}}}


void  S16242C42 ::mf16242c42(){}

static void Test_S16242C42()
{
  {
    init_simple_test("S16242C42");
    S16242C42 lv;
    check2(sizeof(lv), ABISELECT(448,252), "sizeof(S16242C42)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16242C42)");
    check_field_offset(lv, s16242c42f0, 0, "S16242C42.s16242c42f0");
    check_field_offset(lv, s16242c42f1, ABISELECT(432,240), "S16242C42.s16242c42f1");
  }
}
static Arrange_To_Call_Me vS16242C42(Test_S16242C42, "S16242C42", ABISELECT(448,252));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16242C4  {
  ::S15056C10 s16242c4f0;
  ::S16242C42 s16242c4f1;
  void  mf16242c4(); // _ZN8S16242C49mf16242c4Ev
};
//SIG(-1 S16242C4) C1{ m FC2{ m FC3{ m FC4{ BC5{ vd v7 v8 v9 v10 v11 v12 FC6{ m Fp[4]}} BC7{} v1 v2 v3 v4 v5 v6 FC8{ BC9{ m Fp Fi Fp Fi[2]} FC10{ m FC11{ m FL[2]}}} FC12{ BC9 FC13{ m FC10 FC10 FC10 FC10}}} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m FC22{ Fs[2] Fc[2] Fs}[12] Fi FC23{ Fs[2]}[4] Fi FC24{ m Fp[2]}}}} FC25{ m FC26{ BC27{ vd v21 v22 v23 v24 v25 v26 FC6} BC7 v15 v16 v17 v18 v19 v20 FC28{ BC9 FC29{ m FC30{ m Fp[2]} FC31{ m Fp}}}} FC32{ BC33{ BC16 vd v27 Fp[2] FC17 FC24} vd FC34{ m Fp Fi FC35{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC24}}}} FC36{ m FC37{ m FC29 FC38{ m FC30 FC20} Fi[3]}[6] FC39{ m Fp Fi FC40{ m}}}}


void  S16242C4 ::mf16242c4(){}

static void Test_S16242C4()
{
  {
    init_simple_test("S16242C4");
    static S16242C4 lv;
    check2(sizeof(lv), ABISELECT(1032,668), "sizeof(S16242C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16242C4)");
    check_field_offset(lv, s16242c4f0, 0, "S16242C4.s16242c4f0");
    check_field_offset(lv, s16242c4f1, ABISELECT(584,416), "S16242C4.s16242c4f1");
  }
}
static Arrange_To_Call_Me vS16242C4(Test_S16242C4, "S16242C4", ABISELECT(1032,668));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16242C1  {
  ::S9624C14_nt s16242c1f0;
  ::S16242C4 s16242c1f1;
  ::S10296C3_nt s16242c1f2;
  void  mf16242c1(); // _ZN8S16242C19mf16242c1Ev
};
//SIG(1 S16242C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC4{ m FC5{ m FC6{ m FC7{ BC8{ vd v7 v8 v9 v10 v11 v12 FC9{ m Fp[4]}} BC10{} v1 v2 v3 v4 v5 v6 FC11{ BC12{ m Fp Fi Fp Fi[2]} FC13{ m FC14{ m FL[2]}}} FC15{ BC12 FC16{ m FC13 FC13 FC13 FC13}}} FC17{ BC18{ BC19{ vd v13} vd v14 Fp[2] FC20{ m FC21{ m Fp Fi[2] FC22{ m}}} FC23{ m Fp[2]}} vd FC24{ m FC25{ Fs[2] Fc[2] Fs}[12] Fi FC26{ Fs[2]}[4] Fi FC27{ m Fp[2]}}}} FC28{ m FC29{ BC30{ vd v21 v22 v23 v24 v25 v26 FC9} BC10 v15 v16 v17 v18 v19 v20 FC31{ BC12 FC32{ m FC33{ m Fp[2]} FC34{ m Fp}}}} FC35{ BC36{ BC19 vd v27 Fp[2] FC20 FC27} vd FC37{ m Fp Fi FC38{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC27}}}} FC39{ m FC40{ m FC32 FC41{ m FC33 FC23} Fi[3]}[6] FC2}} FC32}


void  S16242C1 ::mf16242c1(){}

static void Test_S16242C1()
{
  {
    init_simple_test("S16242C1");
    static S16242C1 lv;
    check2(sizeof(lv), ABISELECT(1072,692), "sizeof(S16242C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16242C1)");
    check_field_offset(lv, s16242c1f0, 0, "S16242C1.s16242c1f0");
    check_field_offset(lv, s16242c1f1, ABISELECT(16,12), "S16242C1.s16242c1f1");
    check_field_offset(lv, s16242c1f2, ABISELECT(1048,680), "S16242C1.s16242c1f2");
  }
}
static Arrange_To_Call_Me vS16242C1(Test_S16242C1, "S16242C1", ABISELECT(1072,692));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9857C2_nt  {
  ::S9624C14_nt s9857c2f0;
  int s9857c2f1[2];
  char s9857c2f2;
  virtual  ~S9857C2_nt(); // _ZN10S9857C2_ntD1Ev
  virtual void  v5(); // _ZN10S9857C2_nt2v5Ev
  virtual void  v6(); // _ZN10S9857C2_nt2v6Ev
  virtual void  v7(); // _ZN10S9857C2_nt2v7Ev
  S9857C2_nt(); // tgen
};
//SIG(-1 S9857C2_nt) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9857C2_nt ::~S9857C2_nt(){ note_dtor("S9857C2_nt", this);}
void  S9857C2_nt ::v5(){vfunc_called(this, "_ZN10S9857C2_nt2v5Ev");}
void  S9857C2_nt ::v6(){vfunc_called(this, "_ZN10S9857C2_nt2v6Ev");}
void  S9857C2_nt ::v7(){vfunc_called(this, "_ZN10S9857C2_nt2v7Ev");}
S9857C2_nt ::S9857C2_nt(){ note_ctor("S9857C2_nt", this);} // tgen

//skip512 S9857C2_nt

#else // __cplusplus

extern void _ZN10S9857C2_ntC1Ev();
extern void _ZN10S9857C2_ntD1Ev();
Name_Map name_map_S9857C2_nt[] = {
  NSPAIR(_ZN10S9857C2_ntC1Ev),
  NSPAIR(_ZN10S9857C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9857C2_nt[];
extern void _ZN10S9857C2_ntD1Ev();
extern void _ZN10S9857C2_ntD0Ev();
extern void _ZN10S9857C2_nt2v5Ev();
extern void _ZN10S9857C2_nt2v6Ev();
extern void _ZN10S9857C2_nt2v7Ev();
static  VTBL_ENTRY vtc_S9857C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9857C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9857C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S9857C2_nt[];
VTBL_ENTRY *P__ZTI10S9857C2_nt = _ZTI10S9857C2_nt; 
extern  VTBL_ENTRY _ZTV10S9857C2_nt[];
Class_Descriptor cd_S9857C2_nt = {  "S9857C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9857C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI10S9857C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9857C2_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  S9857C6  {
  virtual  ~S9857C6(); // _ZN7S9857C6D1Ev
  virtual void  v8(); // _ZN7S9857C62v8Ev
  virtual void  v9(); // _ZN7S9857C62v9Ev
  virtual void  v10(); // _ZN7S9857C63v10Ev
  S9857C6(); // tgen
};
//SIG(-1 S9857C6) C1{ vd v1 v2 v3}


 S9857C6 ::~S9857C6(){ note_dtor("S9857C6", this);}
void  S9857C6 ::v8(){vfunc_called(this, "_ZN7S9857C62v8Ev");}
void  S9857C6 ::v9(){vfunc_called(this, "_ZN7S9857C62v9Ev");}
void  S9857C6 ::v10(){vfunc_called(this, "_ZN7S9857C63v10Ev");}
S9857C6 ::S9857C6(){ note_ctor("S9857C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9857C6C1Ev();
extern void _ZN7S9857C6D1Ev();
Name_Map name_map_S9857C6[] = {
  NSPAIR(_ZN7S9857C6C1Ev),
  NSPAIR(_ZN7S9857C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9857C6[];
extern void _ZN7S9857C6D1Ev();
extern void _ZN7S9857C6D0Ev();
extern void _ZN7S9857C62v8Ev();
extern void _ZN7S9857C62v9Ev();
extern void _ZN7S9857C63v10Ev();
static  VTBL_ENTRY vtc_S9857C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9857C6[0]),
  (VTBL_ENTRY)&_ZN7S9857C6D1Ev,
  (VTBL_ENTRY)&_ZN7S9857C6D0Ev,
  (VTBL_ENTRY)&_ZN7S9857C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9857C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9857C63v10Ev,
};
extern VTBL_ENTRY _ZTI7S9857C6[];
extern  VTBL_ENTRY _ZTV7S9857C6[];
Class_Descriptor cd_S9857C6 = {  "S9857C6", // class name
  0,0,//no base classes
  &(vtc_S9857C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9857C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9857C6),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  S9857C5  : S9857C6 {
  ::S9624C35 s9857c5f0;
  ::S9625C9_nt s9857c5f1;
  char s9857c5f2;
  virtual  ~S9857C5(); // _ZN7S9857C5D1Ev
  virtual void  v11(); // _ZN7S9857C53v11Ev
  virtual void  v12(); // _ZN7S9857C53v12Ev
  virtual void  v13(); // _ZN7S9857C53v13Ev
  S9857C5(); // tgen
};
//SIG(-1 S9857C5) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ FL[4]}} Fc}


 S9857C5 ::~S9857C5(){ note_dtor("S9857C5", this);}
void  S9857C5 ::v11(){vfunc_called(this, "_ZN7S9857C53v11Ev");}
void  S9857C5 ::v12(){vfunc_called(this, "_ZN7S9857C53v12Ev");}
void  S9857C5 ::v13(){vfunc_called(this, "_ZN7S9857C53v13Ev");}
S9857C5 ::S9857C5(){ note_ctor("S9857C5", this);} // tgen

static void Test_S9857C5()
{
  extern Class_Descriptor cd_S9857C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S9857C5, buf);
    S9857C5 *dp, &lv = *(dp=new (buf) S9857C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S9857C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9857C5)");
    check_base_class_offset(lv, (S9857C6*), 0, "S9857C5");
    check_field_offset(lv, s9857c5f0, ABISELECT(8,4), "S9857C5.s9857c5f0");
    check_field_offset(lv, s9857c5f1, ABISELECT(32,20), "S9857C5.s9857c5f1");
    check_field_offset(lv, s9857c5f2, ABISELECT(64,52), "S9857C5.s9857c5f2");
    test_class_info(&lv, &cd_S9857C5);
    dp->~S9857C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9857C5(Test_S9857C5, "S9857C5", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S9857C5C1Ev();
extern void _ZN7S9857C5D1Ev();
Name_Map name_map_S9857C5[] = {
  NSPAIR(_ZN7S9857C5C1Ev),
  NSPAIR(_ZN7S9857C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9857C6;
extern VTBL_ENTRY _ZTI7S9857C6[];
extern  VTBL_ENTRY _ZTV7S9857C6[];
static Base_Class bases_S9857C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9857C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9857C5[];
extern void _ZN7S9857C5D1Ev();
extern void _ZN7S9857C5D0Ev();
extern void _ZN7S9857C62v8Ev();
extern void _ZN7S9857C62v9Ev();
extern void _ZN7S9857C63v10Ev();
extern void _ZN7S9857C53v11Ev();
extern void _ZN7S9857C53v12Ev();
extern void _ZN7S9857C53v13Ev();
static  VTBL_ENTRY vtc_S9857C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9857C5[0]),
  (VTBL_ENTRY)&_ZN7S9857C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9857C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9857C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9857C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9857C63v10Ev,
  (VTBL_ENTRY)&_ZN7S9857C53v11Ev,
  (VTBL_ENTRY)&_ZN7S9857C53v12Ev,
  (VTBL_ENTRY)&_ZN7S9857C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S9857C5[];
extern  VTBL_ENTRY _ZTV7S9857C5[];
Class_Descriptor cd_S9857C5 = {  "S9857C5", // class name
  bases_S9857C5, 1,
  &(vtc_S9857C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S9857C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9857C5),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9857C11  {
  virtual  ~S9857C11(); // _ZN8S9857C11D1Ev
  virtual void  v14(); // _ZN8S9857C113v14Ev
  S9857C11(); // tgen
};
//SIG(-1 S9857C11) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S9857C11C1Ev();
extern void _ZN8S9857C11D1Ev();
Name_Map name_map_S9857C11[] = {
  NSPAIR(_ZN8S9857C11C1Ev),
  NSPAIR(_ZN8S9857C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9857C11[];
extern void _ZN8S9857C11D1Ev();
extern void _ZN8S9857C11D0Ev();
extern void _ZN8S9857C113v14Ev();
static  VTBL_ENTRY vtc_S9857C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9857C11[0]),
  (VTBL_ENTRY)&_ZN8S9857C11D1Ev,
  (VTBL_ENTRY)&_ZN8S9857C11D0Ev,
  (VTBL_ENTRY)&_ZN8S9857C113v14Ev,
};
extern VTBL_ENTRY _ZTI8S9857C11[];
extern  VTBL_ENTRY _ZTV8S9857C11[];
Class_Descriptor cd_S9857C11 = {  "S9857C11", // class name
  0,0,//no base classes
  &(vtc_S9857C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9857C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9857C11),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  S9857C15  {
  virtual  ~S9857C15(); // _ZN8S9857C15D1Ev
  virtual void  v16(); // _ZN8S9857C153v16Ev
  virtual void  v17(); // _ZN8S9857C153v17Ev
  S9857C15(); // tgen
};
//SIG(-1 S9857C15) C1{ vd v1 v2}


 S9857C15 ::~S9857C15(){ note_dtor("S9857C15", this);}
void  S9857C15 ::v16(){vfunc_called(this, "_ZN8S9857C153v16Ev");}
void  S9857C15 ::v17(){vfunc_called(this, "_ZN8S9857C153v17Ev");}
S9857C15 ::S9857C15(){ note_ctor("S9857C15", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S9857C15C1Ev();
extern void _ZN8S9857C15D1Ev();
Name_Map name_map_S9857C15[] = {
  NSPAIR(_ZN8S9857C15C1Ev),
  NSPAIR(_ZN8S9857C15D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9857C15[];
extern void _ZN8S9857C15D1Ev();
extern void _ZN8S9857C15D0Ev();
extern void _ZN8S9857C153v16Ev();
extern void _ZN8S9857C153v17Ev();
static  VTBL_ENTRY vtc_S9857C15[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9857C15[0]),
  (VTBL_ENTRY)&_ZN8S9857C15D1Ev,
  (VTBL_ENTRY)&_ZN8S9857C15D0Ev,
  (VTBL_ENTRY)&_ZN8S9857C153v16Ev,
  (VTBL_ENTRY)&_ZN8S9857C153v17Ev,
};
extern VTBL_ENTRY _ZTI8S9857C15[];
extern  VTBL_ENTRY _ZTV8S9857C15[];
Class_Descriptor cd_S9857C15 = {  "S9857C15", // class name
  0,0,//no base classes
  &(vtc_S9857C15[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9857C15),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9857C15),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  S9857C17  : S9857C15 {
  ::S9624C14_nt s9857c17f0;
  virtual  ~S9857C17(); // _ZN8S9857C17D1Ev
  virtual void  v19(); // _ZN8S9857C173v19Ev
  S9857C17(); // tgen
};
//SIG(-1 S9857C17) C1{ BC2{ vd v2 v3} vd v1 FC3{ m Fp Fi FC4{ m}}}


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

static void Test_S9857C17()
{
  extern Class_Descriptor cd_S9857C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S9857C17, buf);
    S9857C17 *dp, &lv = *(dp=new (buf) S9857C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S9857C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9857C17)");
    check_base_class_offset(lv, (S9857C15*), 0, "S9857C17");
    check_field_offset(lv, s9857c17f0, ABISELECT(8,4), "S9857C17.s9857c17f0");
    test_class_info(&lv, &cd_S9857C17);
    dp->~S9857C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9857C17(Test_S9857C17, "S9857C17", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S9857C17C1Ev();
extern void _ZN8S9857C17D1Ev();
Name_Map name_map_S9857C17[] = {
  NSPAIR(_ZN8S9857C17C1Ev),
  NSPAIR(_ZN8S9857C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9857C15;
extern VTBL_ENTRY _ZTI8S9857C15[];
extern  VTBL_ENTRY _ZTV8S9857C15[];
static Base_Class bases_S9857C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9857C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S9857C17[];
extern void _ZN8S9857C17D1Ev();
extern void _ZN8S9857C17D0Ev();
extern void _ZN8S9857C153v16Ev();
extern void _ZN8S9857C153v17Ev();
extern void _ZN8S9857C173v19Ev();
static  VTBL_ENTRY vtc_S9857C17[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9857C17[0]),
  (VTBL_ENTRY)&_ZN8S9857C17D1Ev,
  (VTBL_ENTRY)&_ZN8S9857C17D0Ev,
  (VTBL_ENTRY)&_ZN8S9857C153v16Ev,
  (VTBL_ENTRY)&_ZN8S9857C153v17Ev,
  (VTBL_ENTRY)&_ZN8S9857C173v19Ev,
};
extern VTBL_ENTRY _ZTI8S9857C17[];
extern  VTBL_ENTRY _ZTV8S9857C17[];
Class_Descriptor cd_S9857C17 = {  "S9857C17", // class name
  bases_S9857C17, 1,
  &(vtc_S9857C17[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S9857C17),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S9857C17),7, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9857C13  {
  ::S9625C16 s9857c13f0;
  ::S9624C12_nt s9857c13f1;
  ::S9857C17 s9857c13f2;
  ::S9857C17 s9857c13f3;
  ::S9857C17 s9857c13f4;
  ::S9857C17 s9857c13f5;
  ::S9624C33_nt s9857c13f6;
  ::S9624C20_nt s9857c13f7;
  ::S9624C32_nt s9857c13f8;
  int s9857c13f9;
  ::S9624C26 s9857c13f10;
  ::S9624C25 s9857c13f11;
  void  mf9857c13(); // _ZN8S9857C139mf9857c13Ev
};
//SIG(-1 S9857C13) C1{ m FC2{ BC3{ vd v2 v3} vd v1 FC4{ m Fp Fi FC5{ m}}} FC6{ BC7{ vd v5 v6} vd v4 FC4} FC8{ BC9{ vd v8 v9} vd v7 FC4} FC8 FC8 FC8 FC10{ BC7 vd v10 FC4 FC4 FC4} FC11{ BC7 vd v11 FC12{ vd v12 Fs[2] Fc[6] Fs[2] Fc[6] FC4} FC4 Fi[2] FC13{ vd v13 Fi} Fi[2]} FC14{ vd v14 Fi[2] Fs[2] Fi[3] FC4} Fi FC15{ BC7 vd v15 v16 FL} FC16{ BC7 vd v17 v18 Fi[5] FC15 FC17{ BC18{ m Fp Fi[2] FC19{ m}} BC7 vd v19 v20} FC4 FC20{ vd m FC21{ m Fs[6] Fi[2] Fc Fs}} FC20}}


void  S9857C13 ::mf9857c13(){}

static void Test_S9857C13()
{
  {
    init_simple_test("S9857C13");
    S9857C13 lv;
    check2(sizeof(lv), ABISELECT(536,392), "sizeof(S9857C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9857C13)");
    check_field_offset(lv, s9857c13f0, 0, "S9857C13.s9857c13f0");
    check_field_offset(lv, s9857c13f1, ABISELECT(24,16), "S9857C13.s9857c13f1");
    check_field_offset(lv, s9857c13f2, ABISELECT(48,32), "S9857C13.s9857c13f2");
    check_field_offset(lv, s9857c13f3, ABISELECT(72,48), "S9857C13.s9857c13f3");
    check_field_offset(lv, s9857c13f4, ABISELECT(96,64), "S9857C13.s9857c13f4");
    check_field_offset(lv, s9857c13f5, ABISELECT(120,80), "S9857C13.s9857c13f5");
    check_field_offset(lv, s9857c13f6, ABISELECT(144,96), "S9857C13.s9857c13f6");
    check_field_offset(lv, s9857c13f7, ABISELECT(200,136), "S9857C13.s9857c13f7");
    check_field_offset(lv, s9857c13f8, ABISELECT(304,212), "S9857C13.s9857c13f8");
    check_field_offset(lv, s9857c13f9, ABISELECT(352,252), "S9857C13.s9857c13f9");
    check_field_offset(lv, s9857c13f10, ABISELECT(360,256), "S9857C13.s9857c13f10");
    check_field_offset(lv, s9857c13f11, ABISELECT(376,268), "S9857C13.s9857c13f11");
  }
}
static Arrange_To_Call_Me vS9857C13(Test_S9857C13, "S9857C13", ABISELECT(536,392));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9857C33_nt  {
  ::S9625C10_nt s9857c33f0;
  void  mf9857c33(); // _ZN11S9857C33_nt9mf9857c33Ev
};
//SIG(-1 S9857C33_nt) C1{ m FC2{ FL[4]}}


void  S9857C33_nt ::mf9857c33(){}

//skip512 S9857C33_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S9857C35_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9857C34_nt  {
  void *s9857c34f0;
  ::S9857C35_nt s9857c34f1;
  void  mf9857c34(); // _ZN11S9857C34_nt9mf9857c34Ev
};
//SIG(-1 S9857C34_nt) C1{ m Fp FC2{ Fi[4]}}


void  S9857C34_nt ::mf9857c34(){}

//skip512 S9857C34_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9857C1  : S9857C2_nt , S9857C5 , S9857C11 {
  void *s9857c1f0;
  int s9857c1f1;
  ::S10296C48 s9857c1f2;
  ::S9857C13 s9857c1f3;
  ::S9857C33_nt s9857c1f4;
  ::S9857C34_nt s9857c1f5;
  int s9857c1f6;
  virtual  ~S9857C1(); // _ZN7S9857C1D1Ev
  virtual void  v1(); // _ZN7S9857C12v1Ev
  virtual void  v2(); // _ZN7S9857C12v2Ev
  virtual void  v3(); // _ZN7S9857C12v3Ev
  virtual void  v4(); // _ZN7S9857C12v4Ev
  S9857C1(); // tgen
};
//SIG(1 S9857C1) C1{ BC2{ vd v5 v6 v7 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ BC6{ vd v8 v9 v10} vd v11 v12 v13 FC7{ m Fp Fi[2] FC8{ m}} FC9{ m FC10{ FL[4]}} Fc} BC11{ vd v14} vd v1 v2 v3 v4 Fp Fi FC12{ m Fp[2]} FC13{ m FC14{ BC15{ vd v16 v17} vd v15 FC3} FC16{ BC17{ vd v19 v20} vd v18 FC3} FC18{ BC19{ vd v22 v23} vd v21 FC3} FC18 FC18 FC18 FC20{ BC17 vd v24 FC3 FC3 FC3} FC21{ BC17 vd v25 FC22{ vd v26 Fs[2] Fc[6] Fs[2] Fc[6] FC3} FC3 Fi[2] FC23{ vd v27 Fi} Fi[2]} FC24{ vd v28 Fi[2] Fs[2] Fi[3] FC3} Fi FC25{ BC17 vd v29 v30 FL} FC26{ BC17 vd v31 v32 Fi[5] FC25 FC27{ BC28{ m Fp Fi[2] FC8} BC17 vd v33 v34} FC3 FC29{ vd m FC30{ m Fs[6] Fi[2] Fc Fs}} FC29}} FC31{ m FC10} FC32{ m Fp FC33{ Fi[4]}} Fi}


 S9857C1 ::~S9857C1(){ note_dtor("S9857C1", this);}
void  S9857C1 ::v1(){vfunc_called(this, "_ZN7S9857C12v1Ev");}
void  S9857C1 ::v2(){vfunc_called(this, "_ZN7S9857C12v2Ev");}
void  S9857C1 ::v3(){vfunc_called(this, "_ZN7S9857C12v3Ev");}
void  S9857C1 ::v4(){vfunc_called(this, "_ZN7S9857C12v4Ev");}
S9857C1 ::S9857C1(){ note_ctor("S9857C1", this);} // tgen

static void Test_S9857C1()
{
  extern Class_Descriptor cd_S9857C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(95,139)];
    init_test(&cd_S9857C1, buf);
    S9857C1 *dp, &lv = *(dp=new (buf) S9857C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,552), "sizeof(S9857C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9857C1)");
    check_base_class_offset(lv, (S9857C2_nt*), 0, "S9857C1");
    check_base_class_offset(lv, (S9857C6*)(S9857C5*), ABISELECT(40,28), "S9857C1");
    check_base_class_offset(lv, (S9857C5*), ABISELECT(40,28), "S9857C1");
    check_base_class_offset(lv, (S9857C11*), ABISELECT(112,84), "S9857C1");
    check_field_offset(lv, s9857c1f0, ABISELECT(120,88), "S9857C1.s9857c1f0");
    check_field_offset(lv, s9857c1f1, ABISELECT(128,92), "S9857C1.s9857c1f1");
    check_field_offset(lv, s9857c1f2, ABISELECT(136,96), "S9857C1.s9857c1f2");
    check_field_offset(lv, s9857c1f3, ABISELECT(152,104), "S9857C1.s9857c1f3");
    check_field_offset(lv, s9857c1f4, ABISELECT(688,496), "S9857C1.s9857c1f4");
    check_field_offset(lv, s9857c1f5, ABISELECT(720,528), "S9857C1.s9857c1f5");
    check_field_offset(lv, s9857c1f6, ABISELECT(744,548), "S9857C1.s9857c1f6");
    test_class_info(&lv, &cd_S9857C1);
    dp->~S9857C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9857C1(Test_S9857C1, "S9857C1", ABISELECT(752,552));

#else // __cplusplus

extern void _ZN7S9857C1C1Ev();
extern void _ZN7S9857C1D1Ev();
Name_Map name_map_S9857C1[] = {
  NSPAIR(_ZN7S9857C1C1Ev),
  NSPAIR(_ZN7S9857C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9857C2_nt;
extern VTBL_ENTRY _ZTI10S9857C2_nt[];
extern  VTBL_ENTRY _ZTV10S9857C2_nt[];
extern Class_Descriptor cd_S9857C6;
extern VTBL_ENTRY _ZTI7S9857C6[];
extern  VTBL_ENTRY _ZTV7S9857C6[];
extern Class_Descriptor cd_S9857C5;
extern VTBL_ENTRY _ZTI7S9857C5[];
extern  VTBL_ENTRY _ZTV7S9857C5[];
extern Class_Descriptor cd_S9857C11;
extern VTBL_ENTRY _ZTI8S9857C11[];
extern  VTBL_ENTRY _ZTV8S9857C11[];
static Base_Class bases_S9857C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9857C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9857C6,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S9857C5,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9857C11,    ABISELECT(112,84), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9857C1[];
extern void _ZN7S9857C1D1Ev();
extern void _ZN7S9857C1D0Ev();
extern void _ZN10S9857C2_nt2v5Ev();
extern void _ZN10S9857C2_nt2v6Ev();
extern void _ZN10S9857C2_nt2v7Ev();
extern void _ZN7S9857C12v1Ev();
extern void _ZN7S9857C12v2Ev();
extern void _ZN7S9857C12v3Ev();
extern void _ZN7S9857C12v4Ev();
extern void ABISELECT(_ZThn40_N7S9857C1D1Ev,_ZThn28_N7S9857C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S9857C1D0Ev,_ZThn28_N7S9857C1D0Ev)();
extern void _ZN7S9857C62v8Ev();
extern void _ZN7S9857C62v9Ev();
extern void _ZN7S9857C63v10Ev();
extern void _ZN7S9857C53v11Ev();
extern void _ZN7S9857C53v12Ev();
extern void _ZN7S9857C53v13Ev();
extern void ABISELECT(_ZThn112_N7S9857C1D1Ev,_ZThn84_N7S9857C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S9857C1D0Ev,_ZThn84_N7S9857C1D0Ev)();
extern void _ZN8S9857C113v14Ev();
static  VTBL_ENTRY vtc_S9857C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9857C1[0]),
  (VTBL_ENTRY)&_ZN7S9857C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9857C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S9857C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN7S9857C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9857C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9857C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9857C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S9857C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9857C1D1Ev,_ZThn28_N7S9857C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9857C1D0Ev,_ZThn28_N7S9857C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9857C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9857C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9857C63v10Ev,
  (VTBL_ENTRY)&_ZN7S9857C53v11Ev,
  (VTBL_ENTRY)&_ZN7S9857C53v12Ev,
  (VTBL_ENTRY)&_ZN7S9857C53v13Ev,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S9857C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S9857C1D1Ev,_ZThn84_N7S9857C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S9857C1D0Ev,_ZThn84_N7S9857C1D0Ev),
  (VTBL_ENTRY)&_ZN8S9857C113v14Ev,
};
extern VTBL_ENTRY _ZTI7S9857C1[];
extern  VTBL_ENTRY _ZTV7S9857C1[];
Class_Descriptor cd_S9857C1 = {  "S9857C1", // class name
  bases_S9857C1, 4,
  &(vtc_S9857C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(752,552), // object size
  NSPAIRA(_ZTI7S9857C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S9857C1),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  S9856C2  {
  ::S9624C14_nt s9856c2f0;
  int s9856c2f1[2];
  char s9856c2f2;
  virtual  ~S9856C2(); // _ZN7S9856C2D1Ev
  virtual void  v5(); // _ZN7S9856C22v5Ev
  virtual void  v6(); // _ZN7S9856C22v6Ev
  virtual void  v7(); // _ZN7S9856C22v7Ev
  S9856C2(); // tgen
};
//SIG(-1 S9856C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9856C2 ::~S9856C2(){ note_dtor("S9856C2", this);}
void  S9856C2 ::v5(){vfunc_called(this, "_ZN7S9856C22v5Ev");}
void  S9856C2 ::v6(){vfunc_called(this, "_ZN7S9856C22v6Ev");}
void  S9856C2 ::v7(){vfunc_called(this, "_ZN7S9856C22v7Ev");}
S9856C2 ::S9856C2(){ note_ctor("S9856C2", this);} // tgen

static void Test_S9856C2()
{
  extern Class_Descriptor cd_S9856C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9856C2, buf);
    S9856C2 *dp, &lv = *(dp=new (buf) S9856C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9856C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9856C2)");
    check_field_offset(lv, s9856c2f0, ABISELECT(8,4), "S9856C2.s9856c2f0");
    check_field_offset(lv, s9856c2f1, ABISELECT(24,16), "S9856C2.s9856c2f1");
    check_field_offset(lv, s9856c2f2, ABISELECT(32,24), "S9856C2.s9856c2f2");
    test_class_info(&lv, &cd_S9856C2);
    dp->~S9856C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9856C2(Test_S9856C2, "S9856C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9856C2C1Ev();
extern void _ZN7S9856C2D1Ev();
Name_Map name_map_S9856C2[] = {
  NSPAIR(_ZN7S9856C2C1Ev),
  NSPAIR(_ZN7S9856C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9856C2[];
extern void _ZN7S9856C2D1Ev();
extern void _ZN7S9856C2D0Ev();
extern void _ZN7S9856C22v5Ev();
extern void _ZN7S9856C22v6Ev();
extern void _ZN7S9856C22v7Ev();
static  VTBL_ENTRY vtc_S9856C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9856C2[0]),
  (VTBL_ENTRY)&_ZN7S9856C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9856C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9856C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9856C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9856C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9856C2[];
extern  VTBL_ENTRY _ZTV7S9856C2[];
Class_Descriptor cd_S9856C2 = {  "S9856C2", // class name
  0,0,//no base classes
  &(vtc_S9856C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9856C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9856C2),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  S9856C6  {
  virtual  ~S9856C6(); // _ZN7S9856C6D1Ev
  virtual void  v8(); // _ZN7S9856C62v8Ev
  virtual void  v9(); // _ZN7S9856C62v9Ev
  virtual void  v10(); // _ZN7S9856C63v10Ev
  S9856C6(); // tgen
};
//SIG(-1 S9856C6) C1{ vd v1 v2 v3}


 S9856C6 ::~S9856C6(){ note_dtor("S9856C6", this);}
void  S9856C6 ::v8(){vfunc_called(this, "_ZN7S9856C62v8Ev");}
void  S9856C6 ::v9(){vfunc_called(this, "_ZN7S9856C62v9Ev");}
void  S9856C6 ::v10(){vfunc_called(this, "_ZN7S9856C63v10Ev");}
S9856C6 ::S9856C6(){ note_ctor("S9856C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9856C6C1Ev();
extern void _ZN7S9856C6D1Ev();
Name_Map name_map_S9856C6[] = {
  NSPAIR(_ZN7S9856C6C1Ev),
  NSPAIR(_ZN7S9856C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9856C6[];
extern void _ZN7S9856C6D1Ev();
extern void _ZN7S9856C6D0Ev();
extern void _ZN7S9856C62v8Ev();
extern void _ZN7S9856C62v9Ev();
extern void _ZN7S9856C63v10Ev();
static  VTBL_ENTRY vtc_S9856C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9856C6[0]),
  (VTBL_ENTRY)&_ZN7S9856C6D1Ev,
  (VTBL_ENTRY)&_ZN7S9856C6D0Ev,
  (VTBL_ENTRY)&_ZN7S9856C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9856C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9856C63v10Ev,
};
extern VTBL_ENTRY _ZTI7S9856C6[];
extern  VTBL_ENTRY _ZTV7S9856C6[];
Class_Descriptor cd_S9856C6 = {  "S9856C6", // class name
  0,0,//no base classes
  &(vtc_S9856C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9856C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9856C6),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  S9856C5  : S9856C6 {
  ::S9624C35 s9856c5f0;
  ::S9624C9_nt s9856c5f1;
  char s9856c5f2;
  virtual  ~S9856C5(); // _ZN7S9856C5D1Ev
  virtual void  v11(); // _ZN7S9856C53v11Ev
  virtual void  v12(); // _ZN7S9856C53v12Ev
  virtual void  v13(); // _ZN7S9856C53v13Ev
  S9856C5(); // tgen
};
//SIG(-1 S9856C5) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FC6{ Fl[4]}} Fc}


 S9856C5 ::~S9856C5(){ note_dtor("S9856C5", this);}
void  S9856C5 ::v11(){vfunc_called(this, "_ZN7S9856C53v11Ev");}
void  S9856C5 ::v12(){vfunc_called(this, "_ZN7S9856C53v12Ev");}
void  S9856C5 ::v13(){vfunc_called(this, "_ZN7S9856C53v13Ev");}
S9856C5 ::S9856C5(){ note_ctor("S9856C5", this);} // tgen

static void Test_S9856C5()
{
  extern Class_Descriptor cd_S9856C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S9856C5, buf);
    S9856C5 *dp, &lv = *(dp=new (buf) S9856C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S9856C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9856C5)");
    check_base_class_offset(lv, (S9856C6*), 0, "S9856C5");
    check_field_offset(lv, s9856c5f0, ABISELECT(8,4), "S9856C5.s9856c5f0");
    check_field_offset(lv, s9856c5f1, ABISELECT(32,20), "S9856C5.s9856c5f1");
    check_field_offset(lv, s9856c5f2, ABISELECT(64,36), "S9856C5.s9856c5f2");
    test_class_info(&lv, &cd_S9856C5);
    dp->~S9856C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9856C5(Test_S9856C5, "S9856C5", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S9856C5C1Ev();
extern void _ZN7S9856C5D1Ev();
Name_Map name_map_S9856C5[] = {
  NSPAIR(_ZN7S9856C5C1Ev),
  NSPAIR(_ZN7S9856C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9856C6;
extern VTBL_ENTRY _ZTI7S9856C6[];
extern  VTBL_ENTRY _ZTV7S9856C6[];
static Base_Class bases_S9856C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9856C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9856C5[];
extern void _ZN7S9856C5D1Ev();
extern void _ZN7S9856C5D0Ev();
extern void _ZN7S9856C62v8Ev();
extern void _ZN7S9856C62v9Ev();
extern void _ZN7S9856C63v10Ev();
extern void _ZN7S9856C53v11Ev();
extern void _ZN7S9856C53v12Ev();
extern void _ZN7S9856C53v13Ev();
static  VTBL_ENTRY vtc_S9856C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9856C5[0]),
  (VTBL_ENTRY)&_ZN7S9856C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9856C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9856C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9856C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9856C63v10Ev,
  (VTBL_ENTRY)&_ZN7S9856C53v11Ev,
  (VTBL_ENTRY)&_ZN7S9856C53v12Ev,
  (VTBL_ENTRY)&_ZN7S9856C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S9856C5[];
extern  VTBL_ENTRY _ZTV7S9856C5[];
Class_Descriptor cd_S9856C5 = {  "S9856C5", // class name
  bases_S9856C5, 1,
  &(vtc_S9856C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S9856C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9856C5),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9856C11  {
  virtual  ~S9856C11(); // _ZN8S9856C11D1Ev
  virtual void  v14(); // _ZN8S9856C113v14Ev
  S9856C11(); // tgen
};
//SIG(-1 S9856C11) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S9856C11C1Ev();
extern void _ZN8S9856C11D1Ev();
Name_Map name_map_S9856C11[] = {
  NSPAIR(_ZN8S9856C11C1Ev),
  NSPAIR(_ZN8S9856C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9856C11[];
extern void _ZN8S9856C11D1Ev();
extern void _ZN8S9856C11D0Ev();
extern void _ZN8S9856C113v14Ev();
static  VTBL_ENTRY vtc_S9856C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9856C11[0]),
  (VTBL_ENTRY)&_ZN8S9856C11D1Ev,
  (VTBL_ENTRY)&_ZN8S9856C11D0Ev,
  (VTBL_ENTRY)&_ZN8S9856C113v14Ev,
};
extern VTBL_ENTRY _ZTI8S9856C11[];
extern  VTBL_ENTRY _ZTV8S9856C11[];
Class_Descriptor cd_S9856C11 = {  "S9856C11", // class name
  0,0,//no base classes
  &(vtc_S9856C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9856C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9856C11),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  S9856C33_nt  {
  ::S9624C10_nt s9856c33f0;
  void  mf9856c33(); // _ZN11S9856C33_nt9mf9856c33Ev
};
//SIG(-1 S9856C33_nt) C1{ m FC2{ Fl[4]}}


void  S9856C33_nt ::mf9856c33(){}

//skip512 S9856C33_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9856C1  : S9856C2 , S9856C5 , S9856C11 {
  void *s9856c1f0;
  int s9856c1f1;
  ::S10296C48 s9856c1f2;
  ::S9857C13 s9856c1f3;
  ::S9856C33_nt s9856c1f4;
  ::S9857C34_nt s9856c1f5;
  int s9856c1f6;
  virtual  ~S9856C1(); // _ZN7S9856C1D1Ev
  virtual void  v1(); // _ZN7S9856C12v1Ev
  virtual void  v2(); // _ZN7S9856C12v2Ev
  virtual void  v3(); // _ZN7S9856C12v3Ev
  virtual void  v4(); // _ZN7S9856C12v4Ev
  S9856C1(); // tgen
};
//SIG(1 S9856C1) C1{ BC2{ vd v5 v6 v7 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ BC6{ vd v8 v9 v10} vd v11 v12 v13 FC7{ m Fp Fi[2] FC8{ m}} FC9{ m FC10{ Fl[4]}} Fc} BC11{ vd v14} vd v1 v2 v3 v4 Fp Fi FC12{ m Fp[2]} FC13{ m FC14{ BC15{ vd v16 v17} vd v15 FC3} FC16{ BC17{ vd v19 v20} vd v18 FC3} FC18{ BC19{ vd v22 v23} vd v21 FC3} FC18 FC18 FC18 FC20{ BC17 vd v24 FC3 FC3 FC3} FC21{ BC17 vd v25 FC22{ vd v26 Fs[2] Fc[6] Fs[2] Fc[6] FC3} FC3 Fi[2] FC23{ vd v27 Fi} Fi[2]} FC24{ vd v28 Fi[2] Fs[2] Fi[3] FC3} Fi FC25{ BC17 vd v29 v30 FL} FC26{ BC17 vd v31 v32 Fi[5] FC25 FC27{ BC28{ m Fp Fi[2] FC8} BC17 vd v33 v34} FC3 FC29{ vd m FC30{ m Fs[6] Fi[2] Fc Fs}} FC29}} FC31{ m FC10} FC32{ m Fp FC33{ Fi[4]}} Fi}


 S9856C1 ::~S9856C1(){ note_dtor("S9856C1", this);}
void  S9856C1 ::v1(){vfunc_called(this, "_ZN7S9856C12v1Ev");}
void  S9856C1 ::v2(){vfunc_called(this, "_ZN7S9856C12v2Ev");}
void  S9856C1 ::v3(){vfunc_called(this, "_ZN7S9856C12v3Ev");}
void  S9856C1 ::v4(){vfunc_called(this, "_ZN7S9856C12v4Ev");}
S9856C1 ::S9856C1(){ note_ctor("S9856C1", this);} // tgen

static void Test_S9856C1()
{
  extern Class_Descriptor cd_S9856C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(95,131)];
    init_test(&cd_S9856C1, buf);
    S9856C1 *dp, &lv = *(dp=new (buf) S9856C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,520), "sizeof(S9856C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9856C1)");
    check_base_class_offset(lv, (S9856C2*), 0, "S9856C1");
    check_base_class_offset(lv, (S9856C6*)(S9856C5*), ABISELECT(40,28), "S9856C1");
    check_base_class_offset(lv, (S9856C5*), ABISELECT(40,28), "S9856C1");
    check_base_class_offset(lv, (S9856C11*), ABISELECT(112,68), "S9856C1");
    check_field_offset(lv, s9856c1f0, ABISELECT(120,72), "S9856C1.s9856c1f0");
    check_field_offset(lv, s9856c1f1, ABISELECT(128,76), "S9856C1.s9856c1f1");
    check_field_offset(lv, s9856c1f2, ABISELECT(136,80), "S9856C1.s9856c1f2");
    check_field_offset(lv, s9856c1f3, ABISELECT(152,88), "S9856C1.s9856c1f3");
    check_field_offset(lv, s9856c1f4, ABISELECT(688,480), "S9856C1.s9856c1f4");
    check_field_offset(lv, s9856c1f5, ABISELECT(720,496), "S9856C1.s9856c1f5");
    check_field_offset(lv, s9856c1f6, ABISELECT(744,516), "S9856C1.s9856c1f6");
    test_class_info(&lv, &cd_S9856C1);
    dp->~S9856C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9856C1(Test_S9856C1, "S9856C1", ABISELECT(752,520));

#else // __cplusplus

extern void _ZN7S9856C1C1Ev();
extern void _ZN7S9856C1D1Ev();
Name_Map name_map_S9856C1[] = {
  NSPAIR(_ZN7S9856C1C1Ev),
  NSPAIR(_ZN7S9856C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9856C2;
extern VTBL_ENTRY _ZTI7S9856C2[];
extern  VTBL_ENTRY _ZTV7S9856C2[];
extern Class_Descriptor cd_S9856C6;
extern VTBL_ENTRY _ZTI7S9856C6[];
extern  VTBL_ENTRY _ZTV7S9856C6[];
extern Class_Descriptor cd_S9856C5;
extern VTBL_ENTRY _ZTI7S9856C5[];
extern  VTBL_ENTRY _ZTV7S9856C5[];
extern Class_Descriptor cd_S9856C11;
extern VTBL_ENTRY _ZTI8S9856C11[];
extern  VTBL_ENTRY _ZTV8S9856C11[];
static Base_Class bases_S9856C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9856C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9856C6,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S9856C5,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9856C11,    ABISELECT(112,68), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9856C1[];
extern void _ZN7S9856C1D1Ev();
extern void _ZN7S9856C1D0Ev();
extern void _ZN7S9856C22v5Ev();
extern void _ZN7S9856C22v6Ev();
extern void _ZN7S9856C22v7Ev();
extern void _ZN7S9856C12v1Ev();
extern void _ZN7S9856C12v2Ev();
extern void _ZN7S9856C12v3Ev();
extern void _ZN7S9856C12v4Ev();
extern void ABISELECT(_ZThn40_N7S9856C1D1Ev,_ZThn28_N7S9856C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S9856C1D0Ev,_ZThn28_N7S9856C1D0Ev)();
extern void _ZN7S9856C62v8Ev();
extern void _ZN7S9856C62v9Ev();
extern void _ZN7S9856C63v10Ev();
extern void _ZN7S9856C53v11Ev();
extern void _ZN7S9856C53v12Ev();
extern void _ZN7S9856C53v13Ev();
extern void ABISELECT(_ZThn112_N7S9856C1D1Ev,_ZThn68_N7S9856C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S9856C1D0Ev,_ZThn68_N7S9856C1D0Ev)();
extern void _ZN8S9856C113v14Ev();
static  VTBL_ENTRY vtc_S9856C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9856C1[0]),
  (VTBL_ENTRY)&_ZN7S9856C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9856C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9856C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9856C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9856C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9856C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9856C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9856C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9856C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S9856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9856C1D1Ev,_ZThn28_N7S9856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9856C1D0Ev,_ZThn28_N7S9856C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9856C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9856C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9856C63v10Ev,
  (VTBL_ENTRY)&_ZN7S9856C53v11Ev,
  (VTBL_ENTRY)&_ZN7S9856C53v12Ev,
  (VTBL_ENTRY)&_ZN7S9856C53v13Ev,
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S9856C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S9856C1D1Ev,_ZThn68_N7S9856C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S9856C1D0Ev,_ZThn68_N7S9856C1D0Ev),
  (VTBL_ENTRY)&_ZN8S9856C113v14Ev,
};
extern VTBL_ENTRY _ZTI7S9856C1[];
extern  VTBL_ENTRY _ZTV7S9856C1[];
Class_Descriptor cd_S9856C1 = {  "S9856C1", // class name
  bases_S9856C1, 4,
  &(vtc_S9856C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(752,520), // object size
  NSPAIRA(_ZTI7S9856C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S9856C1),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  S9859C2  {
  ::S9624C14_nt s9859c2f0;
  int s9859c2f1[2];
  char s9859c2f2;
  virtual  ~S9859C2(); // _ZN7S9859C2D1Ev
  virtual void  v5(); // _ZN7S9859C22v5Ev
  virtual void  v6(); // _ZN7S9859C22v6Ev
  virtual void  v7(); // _ZN7S9859C22v7Ev
  S9859C2(); // tgen
};
//SIG(-1 S9859C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9859C2 ::~S9859C2(){ note_dtor("S9859C2", this);}
void  S9859C2 ::v5(){vfunc_called(this, "_ZN7S9859C22v5Ev");}
void  S9859C2 ::v6(){vfunc_called(this, "_ZN7S9859C22v6Ev");}
void  S9859C2 ::v7(){vfunc_called(this, "_ZN7S9859C22v7Ev");}
S9859C2 ::S9859C2(){ note_ctor("S9859C2", this);} // tgen

static void Test_S9859C2()
{
  extern Class_Descriptor cd_S9859C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9859C2, buf);
    S9859C2 *dp, &lv = *(dp=new (buf) S9859C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9859C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9859C2)");
    check_field_offset(lv, s9859c2f0, ABISELECT(8,4), "S9859C2.s9859c2f0");
    check_field_offset(lv, s9859c2f1, ABISELECT(24,16), "S9859C2.s9859c2f1");
    check_field_offset(lv, s9859c2f2, ABISELECT(32,24), "S9859C2.s9859c2f2");
    test_class_info(&lv, &cd_S9859C2);
    dp->~S9859C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9859C2(Test_S9859C2, "S9859C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9859C2C1Ev();
extern void _ZN7S9859C2D1Ev();
Name_Map name_map_S9859C2[] = {
  NSPAIR(_ZN7S9859C2C1Ev),
  NSPAIR(_ZN7S9859C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9859C2[];
extern void _ZN7S9859C2D1Ev();
extern void _ZN7S9859C2D0Ev();
extern void _ZN7S9859C22v5Ev();
extern void _ZN7S9859C22v6Ev();
extern void _ZN7S9859C22v7Ev();
static  VTBL_ENTRY vtc_S9859C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9859C2[0]),
  (VTBL_ENTRY)&_ZN7S9859C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9859C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9859C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9859C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9859C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S9859C2[];
extern  VTBL_ENTRY _ZTV7S9859C2[];
Class_Descriptor cd_S9859C2 = {  "S9859C2", // class name
  0,0,//no base classes
  &(vtc_S9859C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9859C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9859C2),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  S9859C6  {
  virtual  ~S9859C6(); // _ZN7S9859C6D1Ev
  virtual void  v8(); // _ZN7S9859C62v8Ev
  virtual void  v9(); // _ZN7S9859C62v9Ev
  virtual void  v10(); // _ZN7S9859C63v10Ev
  S9859C6(); // tgen
};
//SIG(-1 S9859C6) C1{ vd v1 v2 v3}


 S9859C6 ::~S9859C6(){ note_dtor("S9859C6", this);}
void  S9859C6 ::v8(){vfunc_called(this, "_ZN7S9859C62v8Ev");}
void  S9859C6 ::v9(){vfunc_called(this, "_ZN7S9859C62v9Ev");}
void  S9859C6 ::v10(){vfunc_called(this, "_ZN7S9859C63v10Ev");}
S9859C6 ::S9859C6(){ note_ctor("S9859C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S9859C6C1Ev();
extern void _ZN7S9859C6D1Ev();
Name_Map name_map_S9859C6[] = {
  NSPAIR(_ZN7S9859C6C1Ev),
  NSPAIR(_ZN7S9859C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9859C6[];
extern void _ZN7S9859C6D1Ev();
extern void _ZN7S9859C6D0Ev();
extern void _ZN7S9859C62v8Ev();
extern void _ZN7S9859C62v9Ev();
extern void _ZN7S9859C63v10Ev();
static  VTBL_ENTRY vtc_S9859C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9859C6[0]),
  (VTBL_ENTRY)&_ZN7S9859C6D1Ev,
  (VTBL_ENTRY)&_ZN7S9859C6D0Ev,
  (VTBL_ENTRY)&_ZN7S9859C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9859C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9859C63v10Ev,
};
extern VTBL_ENTRY _ZTI7S9859C6[];
extern  VTBL_ENTRY _ZTV7S9859C6[];
Class_Descriptor cd_S9859C6 = {  "S9859C6", // class name
  0,0,//no base classes
  &(vtc_S9859C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S9859C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9859C6),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  S9859C5  : S9859C6 {
  ::S9624C35 s9859c5f0;
  ::S9626C9_nt s9859c5f1;
  char s9859c5f2;
  virtual  ~S9859C5(); // _ZN7S9859C5D1Ev
  virtual void  v11(); // _ZN7S9859C53v11Ev
  virtual void  v12(); // _ZN7S9859C53v12Ev
  virtual void  v13(); // _ZN7S9859C53v13Ev
  S9859C5(); // tgen
};
//SIG(-1 S9859C5) C1{ BC2{ vd v4 v5 v6} vd v1 v2 v3 FC3{ m Fp Fi[2] FC4{ m}} FC5{ m FL[4]} Fc}


 S9859C5 ::~S9859C5(){ note_dtor("S9859C5", this);}
void  S9859C5 ::v11(){vfunc_called(this, "_ZN7S9859C53v11Ev");}
void  S9859C5 ::v12(){vfunc_called(this, "_ZN7S9859C53v12Ev");}
void  S9859C5 ::v13(){vfunc_called(this, "_ZN7S9859C53v13Ev");}
S9859C5 ::S9859C5(){ note_ctor("S9859C5", this);} // tgen

static void Test_S9859C5()
{
  extern Class_Descriptor cd_S9859C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S9859C5, buf);
    S9859C5 *dp, &lv = *(dp=new (buf) S9859C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S9859C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9859C5)");
    check_base_class_offset(lv, (S9859C6*), 0, "S9859C5");
    check_field_offset(lv, s9859c5f0, ABISELECT(8,4), "S9859C5.s9859c5f0");
    check_field_offset(lv, s9859c5f1, ABISELECT(32,20), "S9859C5.s9859c5f1");
    check_field_offset(lv, s9859c5f2, ABISELECT(64,52), "S9859C5.s9859c5f2");
    test_class_info(&lv, &cd_S9859C5);
    dp->~S9859C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9859C5(Test_S9859C5, "S9859C5", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S9859C5C1Ev();
extern void _ZN7S9859C5D1Ev();
Name_Map name_map_S9859C5[] = {
  NSPAIR(_ZN7S9859C5C1Ev),
  NSPAIR(_ZN7S9859C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9859C6;
extern VTBL_ENTRY _ZTI7S9859C6[];
extern  VTBL_ENTRY _ZTV7S9859C6[];
static Base_Class bases_S9859C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9859C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9859C5[];
extern void _ZN7S9859C5D1Ev();
extern void _ZN7S9859C5D0Ev();
extern void _ZN7S9859C62v8Ev();
extern void _ZN7S9859C62v9Ev();
extern void _ZN7S9859C63v10Ev();
extern void _ZN7S9859C53v11Ev();
extern void _ZN7S9859C53v12Ev();
extern void _ZN7S9859C53v13Ev();
static  VTBL_ENTRY vtc_S9859C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9859C5[0]),
  (VTBL_ENTRY)&_ZN7S9859C5D1Ev,
  (VTBL_ENTRY)&_ZN7S9859C5D0Ev,
  (VTBL_ENTRY)&_ZN7S9859C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9859C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9859C63v10Ev,
  (VTBL_ENTRY)&_ZN7S9859C53v11Ev,
  (VTBL_ENTRY)&_ZN7S9859C53v12Ev,
  (VTBL_ENTRY)&_ZN7S9859C53v13Ev,
};
extern VTBL_ENTRY _ZTI7S9859C5[];
extern  VTBL_ENTRY _ZTV7S9859C5[];
Class_Descriptor cd_S9859C5 = {  "S9859C5", // class name
  bases_S9859C5, 1,
  &(vtc_S9859C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S9859C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9859C5),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9859C10  {
  virtual  ~S9859C10(); // _ZN8S9859C10D1Ev
  virtual void  v14(); // _ZN8S9859C103v14Ev
  S9859C10(); // tgen
};
//SIG(-1 S9859C10) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S9859C10C1Ev();
extern void _ZN8S9859C10D1Ev();
Name_Map name_map_S9859C10[] = {
  NSPAIR(_ZN8S9859C10C1Ev),
  NSPAIR(_ZN8S9859C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S9859C10[];
extern void _ZN8S9859C10D1Ev();
extern void _ZN8S9859C10D0Ev();
extern void _ZN8S9859C103v14Ev();
static  VTBL_ENTRY vtc_S9859C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S9859C10[0]),
  (VTBL_ENTRY)&_ZN8S9859C10D1Ev,
  (VTBL_ENTRY)&_ZN8S9859C10D0Ev,
  (VTBL_ENTRY)&_ZN8S9859C103v14Ev,
};
extern VTBL_ENTRY _ZTI8S9859C10[];
extern  VTBL_ENTRY _ZTV8S9859C10[];
Class_Descriptor cd_S9859C10 = {  "S9859C10", // class name
  0,0,//no base classes
  &(vtc_S9859C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S9859C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S9859C10),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  S9859C32_nt  {
  __tsi64 s9859c32f0[4];
  void  mf9859c32(); // _ZN11S9859C32_nt9mf9859c32Ev
};
//SIG(-1 S9859C32_nt) C1{ m FL[4]}


void  S9859C32_nt ::mf9859c32(){}

//skip512 S9859C32_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9859C1  : S9859C2 , S9859C5 , S9859C10 {
  void *s9859c1f0;
  int s9859c1f1;
  ::S10296C48 s9859c1f2;
  ::S9857C13 s9859c1f3;
  ::S9859C32_nt s9859c1f4;
  ::S9857C34_nt s9859c1f5;
  int s9859c1f6;
  virtual  ~S9859C1(); // _ZN7S9859C1D1Ev
  virtual void  v1(); // _ZN7S9859C12v1Ev
  virtual void  v2(); // _ZN7S9859C12v2Ev
  virtual void  v3(); // _ZN7S9859C12v3Ev
  virtual void  v4(); // _ZN7S9859C12v4Ev
  S9859C1(); // tgen
};
//SIG(1 S9859C1) C1{ BC2{ vd v5 v6 v7 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} BC5{ BC6{ vd v8 v9 v10} vd v11 v12 v13 FC7{ m Fp Fi[2] FC8{ m}} FC9{ m FL[4]} Fc} BC10{ vd v14} vd v1 v2 v3 v4 Fp Fi FC11{ m Fp[2]} FC12{ m FC13{ BC14{ vd v16 v17} vd v15 FC3} FC15{ BC16{ vd v19 v20} vd v18 FC3} FC17{ BC18{ vd v22 v23} vd v21 FC3} FC17 FC17 FC17 FC19{ BC16 vd v24 FC3 FC3 FC3} FC20{ BC16 vd v25 FC21{ vd v26 Fs[2] Fc[6] Fs[2] Fc[6] FC3} FC3 Fi[2] FC22{ vd v27 Fi} Fi[2]} FC23{ vd v28 Fi[2] Fs[2] Fi[3] FC3} Fi FC24{ BC16 vd v29 v30 FL} FC25{ BC16 vd v31 v32 Fi[5] FC24 FC26{ BC27{ m Fp Fi[2] FC8} BC16 vd v33 v34} FC3 FC28{ vd m FC29{ m Fs[6] Fi[2] Fc Fs}} FC28}} FC30{ m FL[4]} FC31{ m Fp FC32{ Fi[4]}} Fi}


 S9859C1 ::~S9859C1(){ note_dtor("S9859C1", this);}
void  S9859C1 ::v1(){vfunc_called(this, "_ZN7S9859C12v1Ev");}
void  S9859C1 ::v2(){vfunc_called(this, "_ZN7S9859C12v2Ev");}
void  S9859C1 ::v3(){vfunc_called(this, "_ZN7S9859C12v3Ev");}
void  S9859C1 ::v4(){vfunc_called(this, "_ZN7S9859C12v4Ev");}
S9859C1 ::S9859C1(){ note_ctor("S9859C1", this);} // tgen

static void Test_S9859C1()
{
  extern Class_Descriptor cd_S9859C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(95,139)];
    init_test(&cd_S9859C1, buf);
    S9859C1 *dp, &lv = *(dp=new (buf) S9859C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(752,552), "sizeof(S9859C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9859C1)");
    check_base_class_offset(lv, (S9859C2*), 0, "S9859C1");
    check_base_class_offset(lv, (S9859C6*)(S9859C5*), ABISELECT(40,28), "S9859C1");
    check_base_class_offset(lv, (S9859C5*), ABISELECT(40,28), "S9859C1");
    check_base_class_offset(lv, (S9859C10*), ABISELECT(112,84), "S9859C1");
    check_field_offset(lv, s9859c1f0, ABISELECT(120,88), "S9859C1.s9859c1f0");
    check_field_offset(lv, s9859c1f1, ABISELECT(128,92), "S9859C1.s9859c1f1");
    check_field_offset(lv, s9859c1f2, ABISELECT(136,96), "S9859C1.s9859c1f2");
    check_field_offset(lv, s9859c1f3, ABISELECT(152,104), "S9859C1.s9859c1f3");
    check_field_offset(lv, s9859c1f4, ABISELECT(688,496), "S9859C1.s9859c1f4");
    check_field_offset(lv, s9859c1f5, ABISELECT(720,528), "S9859C1.s9859c1f5");
    check_field_offset(lv, s9859c1f6, ABISELECT(744,548), "S9859C1.s9859c1f6");
    test_class_info(&lv, &cd_S9859C1);
    dp->~S9859C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9859C1(Test_S9859C1, "S9859C1", ABISELECT(752,552));

#else // __cplusplus

extern void _ZN7S9859C1C1Ev();
extern void _ZN7S9859C1D1Ev();
Name_Map name_map_S9859C1[] = {
  NSPAIR(_ZN7S9859C1C1Ev),
  NSPAIR(_ZN7S9859C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9859C2;
extern VTBL_ENTRY _ZTI7S9859C2[];
extern  VTBL_ENTRY _ZTV7S9859C2[];
extern Class_Descriptor cd_S9859C6;
extern VTBL_ENTRY _ZTI7S9859C6[];
extern  VTBL_ENTRY _ZTV7S9859C6[];
extern Class_Descriptor cd_S9859C5;
extern VTBL_ENTRY _ZTI7S9859C5[];
extern  VTBL_ENTRY _ZTV7S9859C5[];
extern Class_Descriptor cd_S9859C10;
extern VTBL_ENTRY _ZTI8S9859C10[];
extern  VTBL_ENTRY _ZTV8S9859C10[];
static Base_Class bases_S9859C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9859C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9859C6,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S9859C5,    ABISELECT(40,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9859C10,    ABISELECT(112,84), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9859C1[];
extern void _ZN7S9859C1D1Ev();
extern void _ZN7S9859C1D0Ev();
extern void _ZN7S9859C22v5Ev();
extern void _ZN7S9859C22v6Ev();
extern void _ZN7S9859C22v7Ev();
extern void _ZN7S9859C12v1Ev();
extern void _ZN7S9859C12v2Ev();
extern void _ZN7S9859C12v3Ev();
extern void _ZN7S9859C12v4Ev();
extern void ABISELECT(_ZThn40_N7S9859C1D1Ev,_ZThn28_N7S9859C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S9859C1D0Ev,_ZThn28_N7S9859C1D0Ev)();
extern void _ZN7S9859C62v8Ev();
extern void _ZN7S9859C62v9Ev();
extern void _ZN7S9859C63v10Ev();
extern void _ZN7S9859C53v11Ev();
extern void _ZN7S9859C53v12Ev();
extern void _ZN7S9859C53v13Ev();
extern void ABISELECT(_ZThn112_N7S9859C1D1Ev,_ZThn84_N7S9859C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S9859C1D0Ev,_ZThn84_N7S9859C1D0Ev)();
extern void _ZN8S9859C103v14Ev();
static  VTBL_ENTRY vtc_S9859C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9859C1[0]),
  (VTBL_ENTRY)&_ZN7S9859C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9859C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9859C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9859C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9859C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9859C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9859C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9859C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9859C12v4Ev,
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI7S9859C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9859C1D1Ev,_ZThn28_N7S9859C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N7S9859C1D0Ev,_ZThn28_N7S9859C1D0Ev),
  (VTBL_ENTRY)&_ZN7S9859C62v8Ev,
  (VTBL_ENTRY)&_ZN7S9859C62v9Ev,
  (VTBL_ENTRY)&_ZN7S9859C63v10Ev,
  (VTBL_ENTRY)&_ZN7S9859C53v11Ev,
  (VTBL_ENTRY)&_ZN7S9859C53v12Ev,
  (VTBL_ENTRY)&_ZN7S9859C53v13Ev,
  ABISELECT(-112,-84),
  (VTBL_ENTRY)&(_ZTI7S9859C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S9859C1D1Ev,_ZThn84_N7S9859C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S9859C1D0Ev,_ZThn84_N7S9859C1D0Ev),
  (VTBL_ENTRY)&_ZN8S9859C103v14Ev,
};
extern VTBL_ENTRY _ZTI7S9859C1[];
extern  VTBL_ENTRY _ZTV7S9859C1[];
Class_Descriptor cd_S9859C1 = {  "S9859C1", // class name
  bases_S9859C1, 4,
  &(vtc_S9859C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(752,552), // object size
  NSPAIRA(_ZTI7S9859C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S9859C1),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  S15658C4  {
  ::S10296C14_nt s15658c4f0;
  virtual  ~S15658C4(); // _ZN8S15658C4D1Ev
  virtual void  v7(); // _ZN8S15658C42v7Ev
  virtual void  v8(); // _ZN8S15658C42v8Ev
  virtual void  v9(); // _ZN8S15658C42v9Ev
  virtual void  v10(); // _ZN8S15658C43v10Ev
  virtual void  v11(); // _ZN8S15658C43v11Ev
  virtual void  v12(); // _ZN8S15658C43v12Ev
  S15658C4(); // tgen
};
//SIG(-1 S15658C4) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15658C4 ::~S15658C4(){ note_dtor("S15658C4", this);}
void  S15658C4 ::v7(){vfunc_called(this, "_ZN8S15658C42v7Ev");}
void  S15658C4 ::v8(){vfunc_called(this, "_ZN8S15658C42v8Ev");}
void  S15658C4 ::v9(){vfunc_called(this, "_ZN8S15658C42v9Ev");}
void  S15658C4 ::v10(){vfunc_called(this, "_ZN8S15658C43v10Ev");}
void  S15658C4 ::v11(){vfunc_called(this, "_ZN8S15658C43v11Ev");}
void  S15658C4 ::v12(){vfunc_called(this, "_ZN8S15658C43v12Ev");}
S15658C4 ::S15658C4(){ note_ctor("S15658C4", this);} // tgen

static void Test_S15658C4()
{
  extern Class_Descriptor cd_S15658C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15658C4, buf);
    S15658C4 *dp, &lv = *(dp=new (buf) S15658C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15658C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15658C4)");
    check_field_offset(lv, s15658c4f0, ABISELECT(8,4), "S15658C4.s15658c4f0");
    test_class_info(&lv, &cd_S15658C4);
    dp->~S15658C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15658C4(Test_S15658C4, "S15658C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15658C4C1Ev();
extern void _ZN8S15658C4D1Ev();
Name_Map name_map_S15658C4[] = {
  NSPAIR(_ZN8S15658C4C1Ev),
  NSPAIR(_ZN8S15658C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15658C4[];
extern void _ZN8S15658C4D1Ev();
extern void _ZN8S15658C4D0Ev();
extern void _ZN8S15658C42v7Ev();
extern void _ZN8S15658C42v8Ev();
extern void _ZN8S15658C42v9Ev();
extern void _ZN8S15658C43v10Ev();
extern void _ZN8S15658C43v11Ev();
extern void _ZN8S15658C43v12Ev();
static  VTBL_ENTRY vtc_S15658C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15658C4[0]),
  (VTBL_ENTRY)&_ZN8S15658C4D1Ev,
  (VTBL_ENTRY)&_ZN8S15658C4D0Ev,
  (VTBL_ENTRY)&_ZN8S15658C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15658C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15658C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15658C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15658C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15658C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S15658C4[];
extern  VTBL_ENTRY _ZTV8S15658C4[];
Class_Descriptor cd_S15658C4 = {  "S15658C4", // class name
  0,0,//no base classes
  &(vtc_S15658C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15658C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15658C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15658C28  : S15658C4 , S10296C15_nt {
  ::S10296C35_nt s15658c28f0;
  ::S10296C21_nt s15658c28f1;
  ::S15657C13_nt s15658c28f2;
  ::S15657C33_nt s15658c28f3;
  ::S15657C13_nt s15658c28f4;
  ::S15657C33_nt s15658c28f5;
  ::S15657C13_nt s15658c28f6;
  ::S15657C33_nt s15658c28f7;
  ::S15657C13_nt s15658c28f8;
  ::S15657C33_nt s15658c28f9;
  ::S15657C13_nt s15658c28f10;
  ::S15657C33_nt s15658c28f11;
  virtual void  v15(); // _ZN9S15658C283v15Ev
  virtual void  v16(); // _ZN9S15658C283v16Ev
  virtual void  v17(); // _ZN9S15658C283v17Ev
  virtual void  v18(); // _ZN9S15658C283v18Ev
  virtual void  v19(); // _ZN9S15658C283v19Ev
  virtual void  v20(); // _ZN9S15658C283v20Ev
  ~S15658C28(); // tgen
  S15658C28(); // tgen
};
//SIG(-1 S15658C28) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m Fp[2]} FC9{ m Fp}}} FC10{ BC6 FC11{ m FC12{ m FL[2]}}} FC13{ BC6 FC14{ m FC15{ m FL}}} FC16{ BC6 Fi} FC13 FC16 FC13 FC16 FC13 FC16 FC13 FC16}


void  S15658C28 ::v15(){vfunc_called(this, "_ZN9S15658C283v15Ev");}
void  S15658C28 ::v16(){vfunc_called(this, "_ZN9S15658C283v16Ev");}
void  S15658C28 ::v17(){vfunc_called(this, "_ZN9S15658C283v17Ev");}
void  S15658C28 ::v18(){vfunc_called(this, "_ZN9S15658C283v18Ev");}
void  S15658C28 ::v19(){vfunc_called(this, "_ZN9S15658C283v19Ev");}
void  S15658C28 ::v20(){vfunc_called(this, "_ZN9S15658C283v20Ev");}
S15658C28 ::~S15658C28(){ note_dtor("S15658C28", this);} // tgen
S15658C28 ::S15658C28(){ note_ctor("S15658C28", this);} // tgen

static void Test_S15658C28()
{
  extern Class_Descriptor cd_S15658C28;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(69,88)];
    init_test(&cd_S15658C28, buf);
    S15658C28 *dp, &lv = *(dp=new (buf) S15658C28());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(544,348), "sizeof(S15658C28)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15658C28)");
    check_base_class_offset(lv, (S15658C4*), 0, "S15658C28");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15658C28");
    check_field_offset(lv, s15658c28f0, ABISELECT(40,20), "S15658C28.s15658c28f0");
    check_field_offset(lv, s15658c28f1, ABISELECT(96,52), "S15658C28.s15658c28f1");
    check_field_offset(lv, s15658c28f2, ABISELECT(144,88), "S15658C28.s15658c28f2");
    check_field_offset(lv, s15658c28f3, ABISELECT(184,116), "S15658C28.s15658c28f3");
    check_field_offset(lv, s15658c28f4, ABISELECT(224,140), "S15658C28.s15658c28f4");
    check_field_offset(lv, s15658c28f5, ABISELECT(264,168), "S15658C28.s15658c28f5");
    check_field_offset(lv, s15658c28f6, ABISELECT(304,192), "S15658C28.s15658c28f6");
    check_field_offset(lv, s15658c28f7, ABISELECT(344,220), "S15658C28.s15658c28f7");
    check_field_offset(lv, s15658c28f8, ABISELECT(384,244), "S15658C28.s15658c28f8");
    check_field_offset(lv, s15658c28f9, ABISELECT(424,272), "S15658C28.s15658c28f9");
    check_field_offset(lv, s15658c28f10, ABISELECT(464,296), "S15658C28.s15658c28f10");
    check_field_offset(lv, s15658c28f11, ABISELECT(504,324), "S15658C28.s15658c28f11");
    test_class_info(&lv, &cd_S15658C28);
    dp->~S15658C28();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15658C28(Test_S15658C28, "S15658C28", ABISELECT(544,348));

#else // __cplusplus

extern void _ZN9S15658C28C1Ev();
extern void _ZN9S15658C28D1Ev();
Name_Map name_map_S15658C28[] = {
  NSPAIR(_ZN9S15658C28C1Ev),
  NSPAIR(_ZN9S15658C28D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15658C4;
extern VTBL_ENTRY _ZTI8S15658C4[];
extern  VTBL_ENTRY _ZTV8S15658C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15658C28[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15658C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S15658C28[];
extern void _ZN9S15658C28D1Ev();
extern void _ZN9S15658C28D0Ev();
extern void _ZN8S15658C42v7Ev();
extern void _ZN8S15658C42v8Ev();
extern void _ZN8S15658C42v9Ev();
extern void _ZN8S15658C43v10Ev();
extern void _ZN8S15658C43v11Ev();
extern void _ZN8S15658C43v12Ev();
extern void _ZN9S15658C283v15Ev();
extern void _ZN9S15658C283v16Ev();
extern void _ZN9S15658C283v17Ev();
extern void _ZN9S15658C283v18Ev();
extern void _ZN9S15658C283v19Ev();
extern void _ZN9S15658C283v20Ev();
static  VTBL_ENTRY vtc_S15658C28[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15658C28[0]),
  (VTBL_ENTRY)&_ZN9S15658C28D1Ev,
  (VTBL_ENTRY)&_ZN9S15658C28D0Ev,
  (VTBL_ENTRY)&_ZN8S15658C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15658C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15658C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15658C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15658C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15658C43v12Ev,
  (VTBL_ENTRY)&_ZN9S15658C283v15Ev,
  (VTBL_ENTRY)&_ZN9S15658C283v16Ev,
  (VTBL_ENTRY)&_ZN9S15658C283v17Ev,
  (VTBL_ENTRY)&_ZN9S15658C283v18Ev,
  (VTBL_ENTRY)&_ZN9S15658C283v19Ev,
  (VTBL_ENTRY)&_ZN9S15658C283v20Ev,
};
extern VTBL_ENTRY _ZTI9S15658C28[];
extern  VTBL_ENTRY _ZTV9S15658C28[];
Class_Descriptor cd_S15658C28 = {  "S15658C28", // class name
  bases_S15658C28, 2,
  &(vtc_S15658C28[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(544,348), // object size
  NSPAIRA(_ZTI9S15658C28),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S15658C28),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  S15658C27  {
  ::S15658C28 s15658c27f0;
  ::S10296C36_nt s15658c27f1;
  void  mf15658c27(); // _ZN9S15658C2710mf15658c27Ev
};
//SIG(-1 S15658C27) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m Fp[2]} FC10{ m Fp}}} FC11{ BC7 FC12{ m FC13{ m FL[2]}}} FC14{ BC7 FC15{ m FC16{ m FL}}} FC17{ BC7 Fi} FC14 FC17 FC14 FC17 FC14 FC17 FC14 FC17} FC18{ BC19{ BC20{ vd v13} vd v14 Fp[2] FC21{ m FC22{ m Fp Fi[2] FC23{ m}}} FC24{ m Fp[2]}} vd FC25{ m Fp Fi FC26{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC24}}}


void  S15658C27 ::mf15658c27(){}

static void Test_S15658C27()
{
  {
    init_simple_test("S15658C27");
    static S15658C27 lv;
    check2(sizeof(lv), ABISELECT(648,408), "sizeof(S15658C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15658C27)");
    check_field_offset(lv, s15658c27f0, 0, "S15658C27.s15658c27f0");
    check_field_offset(lv, s15658c27f1, ABISELECT(544,348), "S15658C27.s15658c27f1");
  }
}
static Arrange_To_Call_Me vS15658C27(Test_S15658C27, "S15658C27", ABISELECT(648,408));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15658C1  {
  ::S15657C2 s15658c1f0;
  ::S15658C27 s15658c1f1;
  void  mf15658c1(); // _ZN8S15658C19mf15658c1Ev
};
//SIG(1 S15658C1) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC10} FC13{ BC8 FC14{ m FC15{ m FL}}}} FC16{ BC17{ BC18{ vd v13} vd v14 Fp[2] FC19{ m FC20{ m Fp Fi[2] FC21{ m}}} FC22{ m Fp[2]}} vd FC23{ m FC24{ Fs[2] Fc[2] Fs}[12] Fi FC25{ Fs[2]}[4] Fi FC26{ m Fp[2]}}}} FC27{ m FC28{ BC29{ vd v21 v22 v23 v24 v25 v26 FC5} BC6 v15 v16 v17 v18 v19 v20 FC30{ BC8 FC31{ m FC32{ m Fp[2]} FC33{ m Fp}}} FC12 FC13 FC34{ BC8 Fi} FC13 FC34 FC13 FC34 FC13 FC34 FC13 FC34} FC35{ BC36{ BC18 vd v27 Fp[2] FC19 FC26} vd FC37{ m Fp Fi FC38{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC26}}}}


void  S15658C1 ::mf15658c1(){}

static void Test_S15658C1()
{
  {
    init_simple_test("S15658C1");
    static S15658C1 lv;
    check2(sizeof(lv), ABISELECT(1072,740), "sizeof(S15658C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15658C1)");
    check_field_offset(lv, s15658c1f0, 0, "S15658C1.s15658c1f0");
    check_field_offset(lv, s15658c1f1, ABISELECT(424,332), "S15658C1.s15658c1f1");
  }
}
static Arrange_To_Call_Me vS15658C1(Test_S15658C1, "S15658C1", ABISELECT(1072,740));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15661C4  {
  ::S10296C14_nt s15661c4f0;
  virtual  ~S15661C4(); // _ZN8S15661C4D1Ev
  virtual void  v7(); // _ZN8S15661C42v7Ev
  virtual void  v8(); // _ZN8S15661C42v8Ev
  virtual void  v9(); // _ZN8S15661C42v9Ev
  virtual void  v10(); // _ZN8S15661C43v10Ev
  virtual void  v11(); // _ZN8S15661C43v11Ev
  virtual void  v12(); // _ZN8S15661C43v12Ev
  S15661C4(); // tgen
};
//SIG(-1 S15661C4) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15661C4 ::~S15661C4(){ note_dtor("S15661C4", this);}
void  S15661C4 ::v7(){vfunc_called(this, "_ZN8S15661C42v7Ev");}
void  S15661C4 ::v8(){vfunc_called(this, "_ZN8S15661C42v8Ev");}
void  S15661C4 ::v9(){vfunc_called(this, "_ZN8S15661C42v9Ev");}
void  S15661C4 ::v10(){vfunc_called(this, "_ZN8S15661C43v10Ev");}
void  S15661C4 ::v11(){vfunc_called(this, "_ZN8S15661C43v11Ev");}
void  S15661C4 ::v12(){vfunc_called(this, "_ZN8S15661C43v12Ev");}
S15661C4 ::S15661C4(){ note_ctor("S15661C4", this);} // tgen

static void Test_S15661C4()
{
  extern Class_Descriptor cd_S15661C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15661C4, buf);
    S15661C4 *dp, &lv = *(dp=new (buf) S15661C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15661C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15661C4)");
    check_field_offset(lv, s15661c4f0, ABISELECT(8,4), "S15661C4.s15661c4f0");
    test_class_info(&lv, &cd_S15661C4);
    dp->~S15661C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15661C4(Test_S15661C4, "S15661C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15661C4C1Ev();
extern void _ZN8S15661C4D1Ev();
Name_Map name_map_S15661C4[] = {
  NSPAIR(_ZN8S15661C4C1Ev),
  NSPAIR(_ZN8S15661C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15661C4[];
extern void _ZN8S15661C4D1Ev();
extern void _ZN8S15661C4D0Ev();
extern void _ZN8S15661C42v7Ev();
extern void _ZN8S15661C42v8Ev();
extern void _ZN8S15661C42v9Ev();
extern void _ZN8S15661C43v10Ev();
extern void _ZN8S15661C43v11Ev();
extern void _ZN8S15661C43v12Ev();
static  VTBL_ENTRY vtc_S15661C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15661C4[0]),
  (VTBL_ENTRY)&_ZN8S15661C4D1Ev,
  (VTBL_ENTRY)&_ZN8S15661C4D0Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S15661C4[];
extern  VTBL_ENTRY _ZTV8S15661C4[];
Class_Descriptor cd_S15661C4 = {  "S15661C4", // class name
  0,0,//no base classes
  &(vtc_S15661C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15661C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15661C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15661C3  : S15661C4 , S10296C15_nt {
  ::S10296C16_nt s15661c3f0;
  ::S15657C13_nt s15661c3f1;
  ::S15657C13_nt s15661c3f2;
  ::S15657C13_nt s15661c3f3;
  virtual void  v1(); // _ZN8S15661C32v1Ev
  virtual void  v2(); // _ZN8S15661C32v2Ev
  virtual void  v3(); // _ZN8S15661C32v3Ev
  virtual void  v4(); // _ZN8S15661C32v4Ev
  virtual void  v5(); // _ZN8S15661C32v5Ev
  virtual void  v6(); // _ZN8S15661C32v6Ev
  ~S15661C3(); // tgen
  S15661C3(); // tgen
};
//SIG(-1 S15661C3) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC10{ BC6 FC11{ m FC12{ m FL}}} FC10 FC10}


void  S15661C3 ::v1(){vfunc_called(this, "_ZN8S15661C32v1Ev");}
void  S15661C3 ::v2(){vfunc_called(this, "_ZN8S15661C32v2Ev");}
void  S15661C3 ::v3(){vfunc_called(this, "_ZN8S15661C32v3Ev");}
void  S15661C3 ::v4(){vfunc_called(this, "_ZN8S15661C32v4Ev");}
void  S15661C3 ::v5(){vfunc_called(this, "_ZN8S15661C32v5Ev");}
void  S15661C3 ::v6(){vfunc_called(this, "_ZN8S15661C32v6Ev");}
S15661C3 ::~S15661C3(){ note_dtor("S15661C3", this);} // tgen
S15661C3 ::S15661C3(){ note_ctor("S15661C3", this);} // tgen

static void Test_S15661C3()
{
  extern Class_Descriptor cd_S15661C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,48)];
    init_test(&cd_S15661C3, buf);
    S15661C3 *dp, &lv = *(dp=new (buf) S15661C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,188), "sizeof(S15661C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15661C3)");
    check_base_class_offset(lv, (S15661C4*), 0, "S15661C3");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15661C3");
    check_field_offset(lv, s15661c3f0, ABISELECT(40,20), "S15661C3.s15661c3f0");
    check_field_offset(lv, s15661c3f1, ABISELECT(136,104), "S15661C3.s15661c3f1");
    check_field_offset(lv, s15661c3f2, ABISELECT(176,132), "S15661C3.s15661c3f2");
    check_field_offset(lv, s15661c3f3, ABISELECT(216,160), "S15661C3.s15661c3f3");
    test_class_info(&lv, &cd_S15661C3);
    dp->~S15661C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15661C3(Test_S15661C3, "S15661C3", ABISELECT(256,188));

#else // __cplusplus

extern void _ZN8S15661C3C1Ev();
extern void _ZN8S15661C3D1Ev();
Name_Map name_map_S15661C3[] = {
  NSPAIR(_ZN8S15661C3C1Ev),
  NSPAIR(_ZN8S15661C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15661C4;
extern VTBL_ENTRY _ZTI8S15661C4[];
extern  VTBL_ENTRY _ZTV8S15661C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15661C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15661C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15661C3[];
extern void _ZN8S15661C3D1Ev();
extern void _ZN8S15661C3D0Ev();
extern void _ZN8S15661C42v7Ev();
extern void _ZN8S15661C42v8Ev();
extern void _ZN8S15661C42v9Ev();
extern void _ZN8S15661C43v10Ev();
extern void _ZN8S15661C43v11Ev();
extern void _ZN8S15661C43v12Ev();
extern void _ZN8S15661C32v1Ev();
extern void _ZN8S15661C32v2Ev();
extern void _ZN8S15661C32v3Ev();
extern void _ZN8S15661C32v4Ev();
extern void _ZN8S15661C32v5Ev();
extern void _ZN8S15661C32v6Ev();
static  VTBL_ENTRY vtc_S15661C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15661C3[0]),
  (VTBL_ENTRY)&_ZN8S15661C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15661C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v12Ev,
  (VTBL_ENTRY)&_ZN8S15661C32v1Ev,
  (VTBL_ENTRY)&_ZN8S15661C32v2Ev,
  (VTBL_ENTRY)&_ZN8S15661C32v3Ev,
  (VTBL_ENTRY)&_ZN8S15661C32v4Ev,
  (VTBL_ENTRY)&_ZN8S15661C32v5Ev,
  (VTBL_ENTRY)&_ZN8S15661C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S15661C3[];
extern  VTBL_ENTRY _ZTV8S15661C3[];
Class_Descriptor cd_S15661C3 = {  "S15661C3", // class name
  bases_S15661C3, 2,
  &(vtc_S15661C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,188), // object size
  NSPAIRA(_ZTI8S15661C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15661C3),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  S15661C2  {
  ::S15661C3 s15661c2f0;
  ::S10296C22_nt s15661c2f1;
  void  mf15661c2(); // _ZN8S15661C29mf15661c2Ev
};
//SIG(-1 S15661C2) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC11{ BC7 FC12{ m FC13{ m FL}}} FC11 FC11} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m FC22{ Fs[2] Fc[2] Fs}[12] Fi FC23{ Fs[2]}[4] Fi FC24{ m Fp[2]}}}}


void  S15661C2 ::mf15661c2(){}

static void Test_S15661C2()
{
  {
    init_simple_test("S15661C2");
    S15661C2 lv;
    check2(sizeof(lv), ABISELECT(456,352), "sizeof(S15661C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15661C2)");
    check_field_offset(lv, s15661c2f0, 0, "S15661C2.s15661c2f0");
    check_field_offset(lv, s15661c2f1, ABISELECT(256,188), "S15661C2.s15661c2f1");
  }
}
static Arrange_To_Call_Me vS15661C2(Test_S15661C2, "S15661C2", ABISELECT(456,352));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15661C27  : S15661C4 , S10296C15_nt {
  ::S10296C21_nt s15661c27f0;
  ::S10296C35_nt s15661c27f1;
  ::S10296C35_nt s15661c27f2;
  virtual void  v15(); // _ZN9S15661C273v15Ev
  virtual void  v16(); // _ZN9S15661C273v16Ev
  virtual void  v17(); // _ZN9S15661C273v17Ev
  virtual void  v18(); // _ZN9S15661C273v18Ev
  virtual void  v19(); // _ZN9S15661C273v19Ev
  virtual void  v20(); // _ZN9S15661C273v20Ev
  ~S15661C27(); // tgen
  S15661C27(); // tgen
};
//SIG(-1 S15661C27) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC9{ BC6 FC10{ m FC11{ m Fp[2]} FC12{ m Fp}}} FC9}


void  S15661C27 ::v15(){vfunc_called(this, "_ZN9S15661C273v15Ev");}
void  S15661C27 ::v16(){vfunc_called(this, "_ZN9S15661C273v16Ev");}
void  S15661C27 ::v17(){vfunc_called(this, "_ZN9S15661C273v17Ev");}
void  S15661C27 ::v18(){vfunc_called(this, "_ZN9S15661C273v18Ev");}
void  S15661C27 ::v19(){vfunc_called(this, "_ZN9S15661C273v19Ev");}
void  S15661C27 ::v20(){vfunc_called(this, "_ZN9S15661C273v20Ev");}
S15661C27 ::~S15661C27(){ note_dtor("S15661C27", this);} // tgen
S15661C27 ::S15661C27(){ note_ctor("S15661C27", this);} // tgen

static void Test_S15661C27()
{
  extern Class_Descriptor cd_S15661C27;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,31)];
    init_test(&cd_S15661C27, buf);
    S15661C27 *dp, &lv = *(dp=new (buf) S15661C27());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,120), "sizeof(S15661C27)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15661C27)");
    check_base_class_offset(lv, (S15661C4*), 0, "S15661C27");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15661C27");
    check_field_offset(lv, s15661c27f0, ABISELECT(40,20), "S15661C27.s15661c27f0");
    check_field_offset(lv, s15661c27f1, ABISELECT(88,56), "S15661C27.s15661c27f1");
    check_field_offset(lv, s15661c27f2, ABISELECT(144,88), "S15661C27.s15661c27f2");
    test_class_info(&lv, &cd_S15661C27);
    dp->~S15661C27();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15661C27(Test_S15661C27, "S15661C27", ABISELECT(200,120));

#else // __cplusplus

extern void _ZN9S15661C27C1Ev();
extern void _ZN9S15661C27D1Ev();
Name_Map name_map_S15661C27[] = {
  NSPAIR(_ZN9S15661C27C1Ev),
  NSPAIR(_ZN9S15661C27D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15661C4;
extern VTBL_ENTRY _ZTI8S15661C4[];
extern  VTBL_ENTRY _ZTV8S15661C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15661C27[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15661C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S15661C27[];
extern void _ZN9S15661C27D1Ev();
extern void _ZN9S15661C27D0Ev();
extern void _ZN8S15661C42v7Ev();
extern void _ZN8S15661C42v8Ev();
extern void _ZN8S15661C42v9Ev();
extern void _ZN8S15661C43v10Ev();
extern void _ZN8S15661C43v11Ev();
extern void _ZN8S15661C43v12Ev();
extern void _ZN9S15661C273v15Ev();
extern void _ZN9S15661C273v16Ev();
extern void _ZN9S15661C273v17Ev();
extern void _ZN9S15661C273v18Ev();
extern void _ZN9S15661C273v19Ev();
extern void _ZN9S15661C273v20Ev();
static  VTBL_ENTRY vtc_S15661C27[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S15661C27[0]),
  (VTBL_ENTRY)&_ZN9S15661C27D1Ev,
  (VTBL_ENTRY)&_ZN9S15661C27D0Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15661C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15661C43v12Ev,
  (VTBL_ENTRY)&_ZN9S15661C273v15Ev,
  (VTBL_ENTRY)&_ZN9S15661C273v16Ev,
  (VTBL_ENTRY)&_ZN9S15661C273v17Ev,
  (VTBL_ENTRY)&_ZN9S15661C273v18Ev,
  (VTBL_ENTRY)&_ZN9S15661C273v19Ev,
  (VTBL_ENTRY)&_ZN9S15661C273v20Ev,
};
extern VTBL_ENTRY _ZTI9S15661C27[];
extern  VTBL_ENTRY _ZTV9S15661C27[];
Class_Descriptor cd_S15661C27 = {  "S15661C27", // class name
  bases_S15661C27, 2,
  &(vtc_S15661C27[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(200,120), // object size
  NSPAIRA(_ZTI9S15661C27),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S15661C27),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  S15661C26  {
  ::S15661C27 s15661c26f0;
  ::S10296C36_nt s15661c26f1;
  void  mf15661c26(); // _ZN9S15661C2610mf15661c26Ev
};
//SIG(-1 S15661C26) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC10{ BC7 FC11{ m FC12{ m Fp[2]} FC13{ m Fp}}} FC10} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m Fp Fi FC22{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC20}}}


void  S15661C26 ::mf15661c26(){}

static void Test_S15661C26()
{
  {
    init_simple_test("S15661C26");
    static S15661C26 lv;
    check2(sizeof(lv), ABISELECT(304,180), "sizeof(S15661C26)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15661C26)");
    check_field_offset(lv, s15661c26f0, 0, "S15661C26.s15661c26f0");
    check_field_offset(lv, s15661c26f1, ABISELECT(200,120), "S15661C26.s15661c26f1");
  }
}
static Arrange_To_Call_Me vS15661C26(Test_S15661C26, "S15661C26", ABISELECT(304,180));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15661C1  {
  ::S15661C2 s15661c1f0;
  ::S15661C26 s15661c1f1;
  void  mf15661c1(); // _ZN8S15661C19mf15661c1Ev
};
//SIG(1 S15661C1) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC13{ m FC14{ m FL}}} FC12 FC12} FC15{ BC16{ BC17{ vd v13} vd v14 Fp[2] FC18{ m FC19{ m Fp Fi[2] FC20{ m}}} FC21{ m Fp[2]}} vd FC22{ m FC23{ Fs[2] Fc[2] Fs}[12] Fi FC24{ Fs[2]}[4] Fi FC25{ m Fp[2]}}}} FC26{ m FC27{ BC4 BC6 v15 v16 v17 v18 v19 v20 FC28{ BC8 FC10} FC29{ BC8 FC30{ m FC31{ m Fp[2]} FC32{ m Fp}}} FC29} FC33{ BC34{ BC17 vd v21 Fp[2] FC18 FC25} vd FC35{ m Fp Fi FC36{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC25}}}}


void  S15661C1 ::mf15661c1(){}

static void Test_S15661C1()
{
  {
    init_simple_test("S15661C1");
    static S15661C1 lv;
    check2(sizeof(lv), ABISELECT(760,532), "sizeof(S15661C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15661C1)");
    check_field_offset(lv, s15661c1f0, 0, "S15661C1.s15661c1f0");
    check_field_offset(lv, s15661c1f1, ABISELECT(456,352), "S15661C1.s15661c1f1");
  }
}
static Arrange_To_Call_Me vS15661C1(Test_S15661C1, "S15661C1", ABISELECT(760,532));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15662C4  {
  ::S10296C14_nt s15662c4f0;
  virtual  ~S15662C4(); // _ZN8S15662C4D1Ev
  virtual void  v7(); // _ZN8S15662C42v7Ev
  virtual void  v8(); // _ZN8S15662C42v8Ev
  virtual void  v9(); // _ZN8S15662C42v9Ev
  virtual void  v10(); // _ZN8S15662C43v10Ev
  virtual void  v11(); // _ZN8S15662C43v11Ev
  virtual void  v12(); // _ZN8S15662C43v12Ev
  S15662C4(); // tgen
};
//SIG(-1 S15662C4) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15662C4 ::~S15662C4(){ note_dtor("S15662C4", this);}
void  S15662C4 ::v7(){vfunc_called(this, "_ZN8S15662C42v7Ev");}
void  S15662C4 ::v8(){vfunc_called(this, "_ZN8S15662C42v8Ev");}
void  S15662C4 ::v9(){vfunc_called(this, "_ZN8S15662C42v9Ev");}
void  S15662C4 ::v10(){vfunc_called(this, "_ZN8S15662C43v10Ev");}
void  S15662C4 ::v11(){vfunc_called(this, "_ZN8S15662C43v11Ev");}
void  S15662C4 ::v12(){vfunc_called(this, "_ZN8S15662C43v12Ev");}
S15662C4 ::S15662C4(){ note_ctor("S15662C4", this);} // tgen

static void Test_S15662C4()
{
  extern Class_Descriptor cd_S15662C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15662C4, buf);
    S15662C4 *dp, &lv = *(dp=new (buf) S15662C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15662C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15662C4)");
    check_field_offset(lv, s15662c4f0, ABISELECT(8,4), "S15662C4.s15662c4f0");
    test_class_info(&lv, &cd_S15662C4);
    dp->~S15662C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15662C4(Test_S15662C4, "S15662C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15662C4C1Ev();
extern void _ZN8S15662C4D1Ev();
Name_Map name_map_S15662C4[] = {
  NSPAIR(_ZN8S15662C4C1Ev),
  NSPAIR(_ZN8S15662C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15662C4[];
extern void _ZN8S15662C4D1Ev();
extern void _ZN8S15662C4D0Ev();
extern void _ZN8S15662C42v7Ev();
extern void _ZN8S15662C42v8Ev();
extern void _ZN8S15662C42v9Ev();
extern void _ZN8S15662C43v10Ev();
extern void _ZN8S15662C43v11Ev();
extern void _ZN8S15662C43v12Ev();
static  VTBL_ENTRY vtc_S15662C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15662C4[0]),
  (VTBL_ENTRY)&_ZN8S15662C4D1Ev,
  (VTBL_ENTRY)&_ZN8S15662C4D0Ev,
  (VTBL_ENTRY)&_ZN8S15662C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15662C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15662C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15662C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15662C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15662C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S15662C4[];
extern  VTBL_ENTRY _ZTV8S15662C4[];
Class_Descriptor cd_S15662C4 = {  "S15662C4", // class name
  0,0,//no base classes
  &(vtc_S15662C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15662C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15662C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15662C27_nt  : S15662C4 , S10296C15_nt {
  ::S10296C21_nt s15662c27f0;
  ::S10296C35_nt s15662c27f1;
  virtual void  v15(); // _ZN12S15662C27_nt3v15Ev
  virtual void  v16(); // _ZN12S15662C27_nt3v16Ev
  virtual void  v17(); // _ZN12S15662C27_nt3v17Ev
  virtual void  v18(); // _ZN12S15662C27_nt3v18Ev
  virtual void  v19(); // _ZN12S15662C27_nt3v19Ev
  virtual void  v20(); // _ZN12S15662C27_nt3v20Ev
  ~S15662C27_nt(); // tgen
  S15662C27_nt(); // tgen
};
//SIG(-1 S15662C27_nt) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC9{ BC6 FC10{ m FC11{ m Fp[2]} FC12{ m Fp}}}}


void  S15662C27_nt ::v15(){vfunc_called(this, "_ZN12S15662C27_nt3v15Ev");}
void  S15662C27_nt ::v16(){vfunc_called(this, "_ZN12S15662C27_nt3v16Ev");}
void  S15662C27_nt ::v17(){vfunc_called(this, "_ZN12S15662C27_nt3v17Ev");}
void  S15662C27_nt ::v18(){vfunc_called(this, "_ZN12S15662C27_nt3v18Ev");}
void  S15662C27_nt ::v19(){vfunc_called(this, "_ZN12S15662C27_nt3v19Ev");}
void  S15662C27_nt ::v20(){vfunc_called(this, "_ZN12S15662C27_nt3v20Ev");}
S15662C27_nt ::~S15662C27_nt(){ note_dtor("S15662C27_nt", this);} // tgen
S15662C27_nt ::S15662C27_nt(){ note_ctor("S15662C27_nt", this);} // tgen

//skip512 S15662C27_nt

#else // __cplusplus

extern void _ZN12S15662C27_ntC1Ev();
extern void _ZN12S15662C27_ntD1Ev();
Name_Map name_map_S15662C27_nt[] = {
  NSPAIR(_ZN12S15662C27_ntC1Ev),
  NSPAIR(_ZN12S15662C27_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15662C4;
extern VTBL_ENTRY _ZTI8S15662C4[];
extern  VTBL_ENTRY _ZTV8S15662C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15662C27_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15662C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S15662C27_nt[];
extern void _ZN12S15662C27_ntD1Ev();
extern void _ZN12S15662C27_ntD0Ev();
extern void _ZN8S15662C42v7Ev();
extern void _ZN8S15662C42v8Ev();
extern void _ZN8S15662C42v9Ev();
extern void _ZN8S15662C43v10Ev();
extern void _ZN8S15662C43v11Ev();
extern void _ZN8S15662C43v12Ev();
extern void _ZN12S15662C27_nt3v15Ev();
extern void _ZN12S15662C27_nt3v16Ev();
extern void _ZN12S15662C27_nt3v17Ev();
extern void _ZN12S15662C27_nt3v18Ev();
extern void _ZN12S15662C27_nt3v19Ev();
extern void _ZN12S15662C27_nt3v20Ev();
static  VTBL_ENTRY vtc_S15662C27_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S15662C27_nt[0]),
  (VTBL_ENTRY)&_ZN12S15662C27_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S15662C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15662C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15662C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15662C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15662C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15662C43v12Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_nt3v16Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_nt3v18Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_nt3v19Ev,
  (VTBL_ENTRY)&_ZN12S15662C27_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI12S15662C27_nt[];
VTBL_ENTRY *P__ZTI12S15662C27_nt = _ZTI12S15662C27_nt; 
extern  VTBL_ENTRY _ZTV12S15662C27_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15662C26_nt  {
  ::S15662C27_nt s15662c26f0;
  ::S10296C36_nt s15662c26f1;
  void  mf15662c26(); // _ZN12S15662C26_nt10mf15662c26Ev
};
//SIG(-1 S15662C26_nt) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC10{ BC7 FC11{ m FC12{ m Fp[2]} FC13{ m Fp}}}} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m Fp Fi FC22{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC20}}}


void  S15662C26_nt ::mf15662c26(){}

//skip512 S15662C26_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15662C1  {
  ::S15661C2 s15662c1f0;
  ::S15662C26_nt s15662c1f1;
  void  mf15662c1(); // _ZN8S15662C19mf15662c1Ev
};
//SIG(1 S15662C1) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC13{ m FC14{ m FL}}} FC12 FC12} FC15{ BC16{ BC17{ vd v13} vd v14 Fp[2] FC18{ m FC19{ m Fp Fi[2] FC20{ m}}} FC21{ m Fp[2]}} vd FC22{ m FC23{ Fs[2] Fc[2] Fs}[12] Fi FC24{ Fs[2]}[4] Fi FC25{ m Fp[2]}}}} FC26{ m FC27{ BC28{ vd v21 v22 v23 v24 v25 v26 FC5} BC6 v15 v16 v17 v18 v19 v20 FC29{ BC8 FC10} FC30{ BC8 FC31{ m FC32{ m Fp[2]} FC33{ m Fp}}}} FC34{ BC35{ BC17 vd v27 Fp[2] FC18 FC25} vd FC36{ m Fp Fi FC37{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC25}}}}


void  S15662C1 ::mf15662c1(){}

static void Test_S15662C1()
{
  {
    init_simple_test("S15662C1");
    static S15662C1 lv;
    check2(sizeof(lv), ABISELECT(704,500), "sizeof(S15662C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15662C1)");
    check_field_offset(lv, s15662c1f0, 0, "S15662C1.s15662c1f0");
    check_field_offset(lv, s15662c1f1, ABISELECT(456,352), "S15662C1.s15662c1f1");
  }
}
static Arrange_To_Call_Me vS15662C1(Test_S15662C1, "S15662C1", ABISELECT(704,500));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15659C4  {
  ::S10296C14_nt s15659c4f0;
  virtual  ~S15659C4(); // _ZN8S15659C4D1Ev
  virtual void  v7(); // _ZN8S15659C42v7Ev
  virtual void  v8(); // _ZN8S15659C42v8Ev
  virtual void  v9(); // _ZN8S15659C42v9Ev
  virtual void  v10(); // _ZN8S15659C43v10Ev
  virtual void  v11(); // _ZN8S15659C43v11Ev
  virtual void  v12(); // _ZN8S15659C43v12Ev
  S15659C4(); // tgen
};
//SIG(-1 S15659C4) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15659C4 ::~S15659C4(){ note_dtor("S15659C4", this);}
void  S15659C4 ::v7(){vfunc_called(this, "_ZN8S15659C42v7Ev");}
void  S15659C4 ::v8(){vfunc_called(this, "_ZN8S15659C42v8Ev");}
void  S15659C4 ::v9(){vfunc_called(this, "_ZN8S15659C42v9Ev");}
void  S15659C4 ::v10(){vfunc_called(this, "_ZN8S15659C43v10Ev");}
void  S15659C4 ::v11(){vfunc_called(this, "_ZN8S15659C43v11Ev");}
void  S15659C4 ::v12(){vfunc_called(this, "_ZN8S15659C43v12Ev");}
S15659C4 ::S15659C4(){ note_ctor("S15659C4", this);} // tgen

static void Test_S15659C4()
{
  extern Class_Descriptor cd_S15659C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15659C4, buf);
    S15659C4 *dp, &lv = *(dp=new (buf) S15659C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15659C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15659C4)");
    check_field_offset(lv, s15659c4f0, ABISELECT(8,4), "S15659C4.s15659c4f0");
    test_class_info(&lv, &cd_S15659C4);
    dp->~S15659C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15659C4(Test_S15659C4, "S15659C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15659C4C1Ev();
extern void _ZN8S15659C4D1Ev();
Name_Map name_map_S15659C4[] = {
  NSPAIR(_ZN8S15659C4C1Ev),
  NSPAIR(_ZN8S15659C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15659C4[];
extern void _ZN8S15659C4D1Ev();
extern void _ZN8S15659C4D0Ev();
extern void _ZN8S15659C42v7Ev();
extern void _ZN8S15659C42v8Ev();
extern void _ZN8S15659C42v9Ev();
extern void _ZN8S15659C43v10Ev();
extern void _ZN8S15659C43v11Ev();
extern void _ZN8S15659C43v12Ev();
static  VTBL_ENTRY vtc_S15659C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15659C4[0]),
  (VTBL_ENTRY)&_ZN8S15659C4D1Ev,
  (VTBL_ENTRY)&_ZN8S15659C4D0Ev,
  (VTBL_ENTRY)&_ZN8S15659C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15659C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15659C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15659C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15659C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15659C43v12Ev,
};
extern VTBL_ENTRY _ZTI8S15659C4[];
extern  VTBL_ENTRY _ZTV8S15659C4[];
Class_Descriptor cd_S15659C4 = {  "S15659C4", // class name
  0,0,//no base classes
  &(vtc_S15659C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15659C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15659C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15659C28_nt  : S15659C4 , S10296C15_nt {
  ::S10296C35_nt s15659c28f0;
  ::S10296C21_nt s15659c28f1;
  virtual void  v15(); // _ZN12S15659C28_nt3v15Ev
  virtual void  v16(); // _ZN12S15659C28_nt3v16Ev
  virtual void  v17(); // _ZN12S15659C28_nt3v17Ev
  virtual void  v18(); // _ZN12S15659C28_nt3v18Ev
  virtual void  v19(); // _ZN12S15659C28_nt3v19Ev
  virtual void  v20(); // _ZN12S15659C28_nt3v20Ev
  ~S15659C28_nt(); // tgen
  S15659C28_nt(); // tgen
};
//SIG(-1 S15659C28_nt) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m Fp[2]} FC9{ m Fp}}} FC10{ BC6 FC11{ m FC12{ m FL[2]}}}}


void  S15659C28_nt ::v15(){vfunc_called(this, "_ZN12S15659C28_nt3v15Ev");}
void  S15659C28_nt ::v16(){vfunc_called(this, "_ZN12S15659C28_nt3v16Ev");}
void  S15659C28_nt ::v17(){vfunc_called(this, "_ZN12S15659C28_nt3v17Ev");}
void  S15659C28_nt ::v18(){vfunc_called(this, "_ZN12S15659C28_nt3v18Ev");}
void  S15659C28_nt ::v19(){vfunc_called(this, "_ZN12S15659C28_nt3v19Ev");}
void  S15659C28_nt ::v20(){vfunc_called(this, "_ZN12S15659C28_nt3v20Ev");}
S15659C28_nt ::~S15659C28_nt(){ note_dtor("S15659C28_nt", this);} // tgen
S15659C28_nt ::S15659C28_nt(){ note_ctor("S15659C28_nt", this);} // tgen

//skip512 S15659C28_nt

#else // __cplusplus

extern void _ZN12S15659C28_ntC1Ev();
extern void _ZN12S15659C28_ntD1Ev();
Name_Map name_map_S15659C28_nt[] = {
  NSPAIR(_ZN12S15659C28_ntC1Ev),
  NSPAIR(_ZN12S15659C28_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15659C4;
extern VTBL_ENTRY _ZTI8S15659C4[];
extern  VTBL_ENTRY _ZTV8S15659C4[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15659C28_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15659C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S15659C28_nt[];
extern void _ZN12S15659C28_ntD1Ev();
extern void _ZN12S15659C28_ntD0Ev();
extern void _ZN8S15659C42v7Ev();
extern void _ZN8S15659C42v8Ev();
extern void _ZN8S15659C42v9Ev();
extern void _ZN8S15659C43v10Ev();
extern void _ZN8S15659C43v11Ev();
extern void _ZN8S15659C43v12Ev();
extern void _ZN12S15659C28_nt3v15Ev();
extern void _ZN12S15659C28_nt3v16Ev();
extern void _ZN12S15659C28_nt3v17Ev();
extern void _ZN12S15659C28_nt3v18Ev();
extern void _ZN12S15659C28_nt3v19Ev();
extern void _ZN12S15659C28_nt3v20Ev();
static  VTBL_ENTRY vtc_S15659C28_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S15659C28_nt[0]),
  (VTBL_ENTRY)&_ZN12S15659C28_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_ntD0Ev,
  (VTBL_ENTRY)&_ZN8S15659C42v7Ev,
  (VTBL_ENTRY)&_ZN8S15659C42v8Ev,
  (VTBL_ENTRY)&_ZN8S15659C42v9Ev,
  (VTBL_ENTRY)&_ZN8S15659C43v10Ev,
  (VTBL_ENTRY)&_ZN8S15659C43v11Ev,
  (VTBL_ENTRY)&_ZN8S15659C43v12Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_nt3v15Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_nt3v16Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_nt3v17Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_nt3v18Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_nt3v19Ev,
  (VTBL_ENTRY)&_ZN12S15659C28_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI12S15659C28_nt[];
VTBL_ENTRY *P__ZTI12S15659C28_nt = _ZTI12S15659C28_nt; 
extern  VTBL_ENTRY _ZTV12S15659C28_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15659C27_nt  {
  ::S15659C28_nt s15659c27f0;
  ::S10296C36_nt s15659c27f1;
  void  mf15659c27(); // _ZN12S15659C27_nt10mf15659c27Ev
};
//SIG(-1 S15659C27_nt) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m Fp[2]} FC10{ m Fp}}} FC11{ BC7 FC12{ m FC13{ m FL[2]}}}} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m Fp Fi FC22{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC20}}}


void  S15659C27_nt ::mf15659c27(){}

//skip512 S15659C27_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15659C1  {
  ::S15657C2 s15659c1f0;
  ::S15659C27_nt s15659c1f1;
  void  mf15659c1(); // _ZN8S15659C19mf15659c1Ev
};
//SIG(1 S15659C1) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC10} FC13{ BC8 FC14{ m FC15{ m FL}}}} FC16{ BC17{ BC18{ vd v13} vd v14 Fp[2] FC19{ m FC20{ m Fp Fi[2] FC21{ m}}} FC22{ m Fp[2]}} vd FC23{ m FC24{ Fs[2] Fc[2] Fs}[12] Fi FC25{ Fs[2]}[4] Fi FC26{ m Fp[2]}}}} FC27{ m FC28{ BC29{ vd v21 v22 v23 v24 v25 v26 FC5} BC6 v15 v16 v17 v18 v19 v20 FC30{ BC8 FC31{ m FC32{ m Fp[2]} FC33{ m Fp}}} FC12} FC34{ BC35{ BC18 vd v27 Fp[2] FC19 FC26} vd FC36{ m Fp Fi FC37{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC26}}}}


void  S15659C1 ::mf15659c1(){}

static void Test_S15659C1()
{
  {
    init_simple_test("S15659C1");
    static S15659C1 lv;
    check2(sizeof(lv), ABISELECT(672,480), "sizeof(S15659C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15659C1)");
    check_field_offset(lv, s15659c1f0, 0, "S15659C1.s15659c1f0");
    check_field_offset(lv, s15659c1f1, ABISELECT(424,332), "S15659C1.s15659c1f1");
  }
}
static Arrange_To_Call_Me vS15659C1(Test_S15659C1, "S15659C1", ABISELECT(672,480));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15660C1  {
  ::S15657C2 s15660c1f0;
  ::S10296C33_nt s15660c1f1;
  void  mf15660c1(); // _ZN8S15660C19mf15660c1Ev
};
//SIG(1 S15660C1) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6 FC7{ BC8{ m Fp Fi Fp Fi[2]} FC9{ m FC10{ m FC11{ m FL[2]}} FC10 FC10 FC10}} FC12{ BC8 FC10} FC13{ BC8 FC14{ m FC15{ m FL}}}} FC16{ BC17{ BC18{ vd v13} vd v14 Fp[2] FC19{ m FC20{ m Fp Fi[2] FC21{ m}}} FC22{ m Fp[2]}} vd FC23{ m FC24{ Fs[2] Fc[2] Fs}[12] Fi FC25{ Fs[2]}[4] Fi FC26{ m Fp[2]}}}} FC27{ m FC28{ BC29{ vd v21 v22 v23 v24 v25 v26 FC5} BC6 v15 v16 v17 v18 v19 v20 FC30{ BC8 FC31{ m FC32{ m Fp[2]} FC33{ m Fp}}}} FC34{ BC35{ BC18 vd v27 Fp[2] FC19 FC26} vd FC36{ m Fp Fi FC37{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC26}}}}


void  S15660C1 ::mf15660c1(){}

static void Test_S15660C1()
{
  {
    init_simple_test("S15660C1");
    static S15660C1 lv;
    check2(sizeof(lv), ABISELECT(624,444), "sizeof(S15660C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15660C1)");
    check_field_offset(lv, s15660c1f0, 0, "S15660C1.s15660c1f0");
    check_field_offset(lv, s15660c1f1, ABISELECT(424,332), "S15660C1.s15660c1f1");
  }
}
static Arrange_To_Call_Me vS15660C1(Test_S15660C1, "S15660C1", ABISELECT(624,444));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16395C10  {
  ::S10296C14_nt s16395c10f0;
  virtual  ~S16395C10(); // _ZN9S16395C10D1Ev
  virtual void  v7(); // _ZN9S16395C102v7Ev
  virtual void  v8(); // _ZN9S16395C102v8Ev
  virtual void  v9(); // _ZN9S16395C102v9Ev
  virtual void  v10(); // _ZN9S16395C103v10Ev
  virtual void  v11(); // _ZN9S16395C103v11Ev
  virtual void  v12(); // _ZN9S16395C103v12Ev
  S16395C10(); // tgen
};
//SIG(-1 S16395C10) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S16395C10 ::~S16395C10(){ note_dtor("S16395C10", this);}
void  S16395C10 ::v7(){vfunc_called(this, "_ZN9S16395C102v7Ev");}
void  S16395C10 ::v8(){vfunc_called(this, "_ZN9S16395C102v8Ev");}
void  S16395C10 ::v9(){vfunc_called(this, "_ZN9S16395C102v9Ev");}
void  S16395C10 ::v10(){vfunc_called(this, "_ZN9S16395C103v10Ev");}
void  S16395C10 ::v11(){vfunc_called(this, "_ZN9S16395C103v11Ev");}
void  S16395C10 ::v12(){vfunc_called(this, "_ZN9S16395C103v12Ev");}
S16395C10 ::S16395C10(){ note_ctor("S16395C10", this);} // tgen

static void Test_S16395C10()
{
  extern Class_Descriptor cd_S16395C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S16395C10, buf);
    S16395C10 *dp, &lv = *(dp=new (buf) S16395C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S16395C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16395C10)");
    check_field_offset(lv, s16395c10f0, ABISELECT(8,4), "S16395C10.s16395c10f0");
    test_class_info(&lv, &cd_S16395C10);
    dp->~S16395C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS16395C10(Test_S16395C10, "S16395C10", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN9S16395C10C1Ev();
extern void _ZN9S16395C10D1Ev();
Name_Map name_map_S16395C10[] = {
  NSPAIR(_ZN9S16395C10C1Ev),
  NSPAIR(_ZN9S16395C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S16395C10[];
extern void _ZN9S16395C10D1Ev();
extern void _ZN9S16395C10D0Ev();
extern void _ZN9S16395C102v7Ev();
extern void _ZN9S16395C102v8Ev();
extern void _ZN9S16395C102v9Ev();
extern void _ZN9S16395C103v10Ev();
extern void _ZN9S16395C103v11Ev();
extern void _ZN9S16395C103v12Ev();
static  VTBL_ENTRY vtc_S16395C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S16395C10[0]),
  (VTBL_ENTRY)&_ZN9S16395C10D1Ev,
  (VTBL_ENTRY)&_ZN9S16395C10D0Ev,
  (VTBL_ENTRY)&_ZN9S16395C102v7Ev,
  (VTBL_ENTRY)&_ZN9S16395C102v8Ev,
  (VTBL_ENTRY)&_ZN9S16395C102v9Ev,
  (VTBL_ENTRY)&_ZN9S16395C103v10Ev,
  (VTBL_ENTRY)&_ZN9S16395C103v11Ev,
  (VTBL_ENTRY)&_ZN9S16395C103v12Ev,
};
extern VTBL_ENTRY _ZTI9S16395C10[];
extern  VTBL_ENTRY _ZTV9S16395C10[];
Class_Descriptor cd_S16395C10 = {  "S16395C10", // class name
  0,0,//no base classes
  &(vtc_S16395C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI9S16395C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S16395C10),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16395C9_nt  : S16395C10 , S10296C15_nt {
  virtual void  v1(); // _ZN11S16395C9_nt2v1Ev
  virtual void  v2(); // _ZN11S16395C9_nt2v2Ev
  virtual void  v3(); // _ZN11S16395C9_nt2v3Ev
  virtual void  v4(); // _ZN11S16395C9_nt2v4Ev
  virtual void  v5(); // _ZN11S16395C9_nt2v5Ev
  virtual void  v6(); // _ZN11S16395C9_nt2v6Ev
  ~S16395C9_nt(); // tgen
  S16395C9_nt(); // tgen
};
//SIG(-1 S16395C9_nt) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6}


void  S16395C9_nt ::v1(){vfunc_called(this, "_ZN11S16395C9_nt2v1Ev");}
void  S16395C9_nt ::v2(){vfunc_called(this, "_ZN11S16395C9_nt2v2Ev");}
void  S16395C9_nt ::v3(){vfunc_called(this, "_ZN11S16395C9_nt2v3Ev");}
void  S16395C9_nt ::v4(){vfunc_called(this, "_ZN11S16395C9_nt2v4Ev");}
void  S16395C9_nt ::v5(){vfunc_called(this, "_ZN11S16395C9_nt2v5Ev");}
void  S16395C9_nt ::v6(){vfunc_called(this, "_ZN11S16395C9_nt2v6Ev");}
S16395C9_nt ::~S16395C9_nt(){ note_dtor("S16395C9_nt", this);} // tgen
S16395C9_nt ::S16395C9_nt(){ note_ctor("S16395C9_nt", this);} // tgen

//skip512 S16395C9_nt

#else // __cplusplus

extern void _ZN11S16395C9_ntC1Ev();
extern void _ZN11S16395C9_ntD1Ev();
Name_Map name_map_S16395C9_nt[] = {
  NSPAIR(_ZN11S16395C9_ntC1Ev),
  NSPAIR(_ZN11S16395C9_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S16395C10;
extern VTBL_ENTRY _ZTI9S16395C10[];
extern  VTBL_ENTRY _ZTV9S16395C10[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S16395C9_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S16395C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI11S16395C9_nt[];
extern void _ZN11S16395C9_ntD1Ev();
extern void _ZN11S16395C9_ntD0Ev();
extern void _ZN9S16395C102v7Ev();
extern void _ZN9S16395C102v8Ev();
extern void _ZN9S16395C102v9Ev();
extern void _ZN9S16395C103v10Ev();
extern void _ZN9S16395C103v11Ev();
extern void _ZN9S16395C103v12Ev();
extern void _ZN11S16395C9_nt2v1Ev();
extern void _ZN11S16395C9_nt2v2Ev();
extern void _ZN11S16395C9_nt2v3Ev();
extern void _ZN11S16395C9_nt2v4Ev();
extern void _ZN11S16395C9_nt2v5Ev();
extern void _ZN11S16395C9_nt2v6Ev();
static  VTBL_ENTRY vtc_S16395C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S16395C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S16395C9_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_ntD0Ev,
  (VTBL_ENTRY)&_ZN9S16395C102v7Ev,
  (VTBL_ENTRY)&_ZN9S16395C102v8Ev,
  (VTBL_ENTRY)&_ZN9S16395C102v9Ev,
  (VTBL_ENTRY)&_ZN9S16395C103v10Ev,
  (VTBL_ENTRY)&_ZN9S16395C103v11Ev,
  (VTBL_ENTRY)&_ZN9S16395C103v12Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_nt2v2Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_nt2v3Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_nt2v4Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_nt2v5Ev,
  (VTBL_ENTRY)&_ZN11S16395C9_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI11S16395C9_nt[];
VTBL_ENTRY *P__ZTI11S16395C9_nt = _ZTI11S16395C9_nt; 
extern  VTBL_ENTRY _ZTV11S16395C9_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16395C8_nt  {
  ::S16395C9_nt s16395c8f0;
  ::S10296C22_nt s16395c8f1;
  void  mf16395c8(); // _ZN11S16395C8_nt9mf16395c8Ev
};
//SIG(-1 S16395C8_nt) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6} FC6{ BC7{ BC8{ vd v13} vd v14 Fp[2] FC9{ m FC10{ m Fp Fi[2] FC11{ m}}} FC12{ m Fp[2]}} vd FC13{ m FC14{ Fs[2] Fc[2] Fs}[12] Fi FC15{ Fs[2]}[4] Fi FC16{ m Fp[2]}}}}


void  S16395C8_nt ::mf16395c8(){}

//skip512 S16395C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16395C7  {
  ::S16395C8_nt s16395c7f0;
  ::S10296C33_nt s16395c7f1;
  void  mf16395c7(); // _ZN8S16395C79mf16395c7Ev
};
//SIG(-1 S16395C7) C1{ m FC2{ m FC3{ BC4{ vd v7 v8 v9 v10 v11 v12 FC5{ m Fp[4]}} BC6{} v1 v2 v3 v4 v5 v6} FC7{ BC8{ BC9{ vd v13} vd v14 Fp[2] FC10{ m FC11{ m Fp Fi[2] FC12{ m}}} FC13{ m Fp[2]}} vd FC14{ m FC15{ Fs[2] Fc[2] Fs}[12] Fi FC16{ Fs[2]}[4] Fi FC17{ m Fp[2]}}}} FC18{ m FC19{ BC20{ vd v21 v22 v23 v24 v25 v26 FC5} BC6 v15 v16 v17 v18 v19 v20 FC21{ BC22{ m Fp Fi Fp Fi[2]} FC23{ m FC24{ m Fp[2]} FC25{ m Fp}}}} FC26{ BC27{ BC9 vd v27 Fp[2] FC10 FC17} vd FC28{ m Fp Fi FC29{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC17}}}}


void  S16395C7 ::mf16395c7(){}

static void Test_S16395C7()
{
  {
    init_simple_test("S16395C7");
    static S16395C7 lv;
    check2(sizeof(lv), ABISELECT(440,296), "sizeof(S16395C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16395C7)");
    check_field_offset(lv, s16395c7f0, 0, "S16395C7.s16395c7f0");
    check_field_offset(lv, s16395c7f1, ABISELECT(240,184), "S16395C7.s16395c7f1");
  }
}
static Arrange_To_Call_Me vS16395C7(Test_S16395C7, "S16395C7", ABISELECT(440,296));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16395C1  {
  ::S10296C48 s16395c1f0[2];
  ::S10296C32 s16395c1f1;
  ::S10296C7_nt s16395c1f2;
  ::S16395C7 s16395c1f3;
  char s16395c1f4;
  void  mf16395c1(); // _ZN8S16395C19mf16395c1Ev
};
//SIG(1 S16395C1) C1{ m FC2{ m Fp[2]}[2] FC3{ m Fp[2]} FC4{ m FC5{ m Fp[2]} FC6{ m Fp[2]}} FC7{ m FC8{ m FC9{ BC10{ vd v7 v8 v9 v10 v11 v12 FC11{ m Fp[4]}} BC12{} v1 v2 v3 v4 v5 v6} FC13{ BC14{ BC15{ vd v13} vd v14 Fp[2] FC16{ m FC17{ m Fp Fi[2] FC18{ m}}} FC6} vd FC19{ m FC20{ Fs[2] Fc[2] Fs}[12] Fi FC21{ Fs[2]}[4] Fi FC3}}} FC22{ m FC23{ BC24{ vd v21 v22 v23 v24 v25 v26 FC11} BC12 v15 v16 v17 v18 v19 v20 FC25{ BC26{ m Fp Fi Fp Fi[2]} FC27{ m FC5 FC28{ m Fp}}}} FC29{ BC30{ BC15 vd v27 Fp[2] FC16 FC3} vd FC31{ m Fp Fi FC32{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC3}}}} Fc}


void  S16395C1 ::mf16395c1(){}

static void Test_S16395C1()
{
  {
    init_simple_test("S16395C1");
    static S16395C1 lv;
    check2(sizeof(lv), ABISELECT(528,340), "sizeof(S16395C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16395C1)");
    check_field_offset(lv, s16395c1f0, 0, "S16395C1.s16395c1f0");
    check_field_offset(lv, s16395c1f1, ABISELECT(32,16), "S16395C1.s16395c1f1");
    check_field_offset(lv, s16395c1f2, ABISELECT(48,24), "S16395C1.s16395c1f2");
    check_field_offset(lv, s16395c1f3, ABISELECT(80,40), "S16395C1.s16395c1f3");
    check_field_offset(lv, s16395c1f4, ABISELECT(520,336), "S16395C1.s16395c1f4");
  }
}
static Arrange_To_Call_Me vS16395C1(Test_S16395C1, "S16395C1", ABISELECT(528,340));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C7_nt  {
  long double s20948c7f0;
  void  mf20948c7(); // _ZN11S20948C7_nt9mf20948c7Ev
  virtual  ~S20948C7_nt(); // _ZN11S20948C7_ntD1Ev
  S20948C7_nt(); // tgen
};
//SIG(-1 S20948C7_nt) C1{ vd m FD}


void  S20948C7_nt ::mf20948c7(){}
 S20948C7_nt ::~S20948C7_nt(){ note_dtor("S20948C7_nt", this);}
S20948C7_nt ::S20948C7_nt(){ note_ctor("S20948C7_nt", this);} // tgen

//skip512 S20948C7_nt

#else // __cplusplus

extern void _ZN11S20948C7_ntC1Ev();
extern void _ZN11S20948C7_ntD1Ev();
Name_Map name_map_S20948C7_nt[] = {
  NSPAIR(_ZN11S20948C7_ntC1Ev),
  NSPAIR(_ZN11S20948C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern void _ZN11S20948C7_ntD1Ev();
extern void _ZN11S20948C7_ntD0Ev();
static  VTBL_ENTRY vtc_S20948C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20948C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S20948C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S20948C7_ntD0Ev,
};
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
VTBL_ENTRY *P__ZTI11S20948C7_nt = _ZTI11S20948C7_nt; 
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
Class_Descriptor cd_S20948C7_nt = {  "S20948C7_nt", // class name
  0,0,//no base classes
  &(vtc_S20948C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI11S20948C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20948C7_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  S20948C5  : S9624C48 , virtual S20948C7_nt {
  virtual  ~S20948C5(); // _ZN8S20948C5D2Ev
  S20948C5(); // tgen
};
//SIG(-1 S20948C5) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S20948C5()
{
  extern Class_Descriptor cd_S20948C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20948C5, buf);
    S20948C5 *dp, &lv = *(dp=new (buf) S20948C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20948C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20948C5");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S20948C5");
    test_class_info(&lv, &cd_S20948C5);
    dp->~S20948C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C5(Test_S20948C5, "S20948C5", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20948C5C1Ev();
extern void _ZN8S20948C5D2Ev();
Name_Map name_map_S20948C5[] = {
  NSPAIR(_ZN8S20948C5C1Ev),
  NSPAIR(_ZN8S20948C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S20948C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20948C5[];
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C5D1Ev,_ZThn4_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C5D0Ev,_ZThn4_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C5[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20948C5[];
static  VTT_ENTRY vtt_S20948C5[] = {
  {&(_ZTV8S20948C5[3]),  3,10},
  {&(_ZTV8S20948C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
static VTBL_ENTRY alt_thunk_names1[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C5D0Ev,_ZThn4_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C5D1Ev,_ZThn4_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C5 = {  "S20948C5", // class name
  bases_S20948C5, 2,
  &(vtc_S20948C5[0]), // expected_vtbl_contents
  &(vtt_S20948C5[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20948C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20948C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20948C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names1,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C8  {
  char s20948c8f0[7];
  void  mf20948c8(); // _ZN8S20948C89mf20948c8Ev
};
//SIG(-1 S20948C8) C1{ m Fc[7]}


void  S20948C8 ::mf20948c8(){}

static void Test_S20948C8()
{
  {
    init_simple_test("S20948C8");
    S20948C8 lv;
    check2(sizeof(lv), 7, "sizeof(S20948C8)");
    check2(__alignof__(lv), 1, "__alignof__(S20948C8)");
    check_field_offset(lv, s20948c8f0, 0, "S20948C8.s20948c8f0");
  }
}
static Arrange_To_Call_Me vS20948C8(Test_S20948C8, "S20948C8", 7);

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20948C8[];
VTBL_ENTRY *P__ZTI8S20948C8 = _ZTI8S20948C8; 
Class_Descriptor cd_S20948C8 = {  "S20948C8", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  7, // object size
  NSPAIRA(_ZTI8S20948C8),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  S20948C9_nt  {
  virtual void  v1(); // _ZN11S20948C9_nt2v1Ev
  ~S20948C9_nt(); // tgen
  S20948C9_nt(); // tgen
};
//SIG(-1 S20948C9_nt) C1{ v1}


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

//skip512 S20948C9_nt

#else // __cplusplus

extern void _ZN11S20948C9_ntC1Ev();
extern void _ZN11S20948C9_ntD1Ev();
Name_Map name_map_S20948C9_nt[] = {
  NSPAIR(_ZN11S20948C9_ntC1Ev),
  NSPAIR(_ZN11S20948C9_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY vtc_S20948C9_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20948C9_nt[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
VTBL_ENTRY *P__ZTI11S20948C9_nt = _ZTI11S20948C9_nt; 
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
Class_Descriptor cd_S20948C9_nt = {  "S20948C9_nt", // class name
  0,0,//no base classes
  &(vtc_S20948C9_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S20948C9_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20948C9_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  S20948C4  : S20948C5 , S20948C8 , S20948C9_nt , virtual S9624C48 {
  ~S20948C4(); // tgen
  S20948C4(); // tgen
};
//SIG(-1 S20948C4) C1{ BC2{ BC3{ m} VBC4{ vd m FD} vd} BC5{ m Fc[7]} BC6{ v1} VBC3}


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

static void Test_S20948C4()
{
  extern Class_Descriptor cd_S20948C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20948C4, buf);
    S20948C4 *dp, &lv = *(dp=new (buf) S20948C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20948C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C4)");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*), 0, "S20948C4");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(32,16), "S20948C4");
    check_base_class_offset(lv, (S20948C5*), 0, "S20948C4");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20948C4");
    check_base_class_offset(lv, (S20948C9_nt*), ABISELECT(16,12), "S20948C4");
    /*is_ambiguous_... S20948C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(64,32), "S20948C4");
    test_class_info(&lv, &cd_S20948C4);
    dp->~S20948C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C4(Test_S20948C4, "S20948C4", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20948C4C1Ev();
extern void _ZN8S20948C4D1Ev();
Name_Map name_map_S20948C4[] = {
  NSPAIR(_ZN8S20948C4C1Ev),
  NSPAIR(_ZN8S20948C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20948C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20948C5,    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_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C9_nt,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20948C4[];
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C4[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20948C4[];
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__8S20948C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__8S20948C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
static  VTT_ENTRY vtt_S20948C4[] = {
  {&(_ZTV8S20948C4[4]),  4,14},
  {&(_tg__ZTV8S20948C5__8S20948C4[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__8S20948C4[3]),  3,5},
  {&(_ZTV8S20948C4[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
static VTBL_ENTRY alt_thunk_names2[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C4 = {  "S20948C4", // class name
  bases_S20948C4, 6,
  &(vtc_S20948C4[0]), // expected_vtbl_contents
  &(vtt_S20948C4[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20948C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20948C4),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20948C4),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names2,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C10  : S20948C9_nt , virtual S9624C39 {
  int s20948c10f0:23;
  virtual  ~S20948C10(); // _ZN9S20948C10D2Ev
  S20948C10(); // tgen
};
//SIG(-1 S20948C10) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S20948C10()
{
  extern Class_Descriptor cd_S20948C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20948C10, buf);
    S20948C10 *dp, &lv = *(dp=new (buf) S20948C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20948C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20948C10)");
    check_base_class_offset(lv, (S20948C9_nt*), 0, "S20948C10");
    check_base_class_offset(lv, (S9624C39*), 0, "S20948C10");
    set_bf_and_test(lv, s20948c10f0, ABISELECT(8,4), 0, 23, 1, "S20948C10");
    set_bf_and_test(lv, s20948c10f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S20948C10");
    test_class_info(&lv, &cd_S20948C10);
    dp->~S20948C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C10(Test_S20948C10, "S20948C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20948C10C1Ev();
extern void _ZN9S20948C10D2Ev();
Name_Map name_map_S20948C10[] = {
  NSPAIR(_ZN9S20948C10C1Ev),
  NSPAIR(_ZN9S20948C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20948C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20948C10[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY vtc_S20948C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S20948C10[];
static  VTT_ENTRY vtt_S20948C10[] = {
  {&(_ZTV9S20948C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
Class_Descriptor cd_S20948C10 = {  "S20948C10", // class name
  bases_S20948C10, 2,
  &(vtc_S20948C10[0]), // expected_vtbl_contents
  &(vtt_S20948C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20948C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20948C10),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C10),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  S20948C12  : S20948C8 , virtual S20948C5 , virtual S9624C48 {
  virtual  ~S20948C12(); // _ZN9S20948C12D2Ev
  S20948C12(); // tgen
};
//SIG(-1 S20948C12) C1{ BC2{ m Fc[7]} VBC3{ BC4{ m} VBC5{ vd m FD} vd} VBC4 vd}


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

static void Test_S20948C12()
{
  extern Class_Descriptor cd_S20948C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20948C12, buf);
    S20948C12 *dp, &lv = *(dp=new (buf) S20948C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20948C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C12)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20948C12");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*), 0, "S20948C12");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(16,12), "S20948C12");
    check_base_class_offset(lv, (S20948C5*), 0, "S20948C12");
    /*is_ambiguous_... S20948C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(48,28), "S20948C12");
    test_class_info(&lv, &cd_S20948C12);
    dp->~S20948C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C12(Test_S20948C12, "S20948C12", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S20948C12C1Ev();
extern void _ZN9S20948C12D2Ev();
Name_Map name_map_S20948C12[] = {
  NSPAIR(_ZN9S20948C12C1Ev),
  NSPAIR(_ZN9S20948C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20948C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20948C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C12[];
extern void _ZN9S20948C12D1Ev();
extern void _ZN9S20948C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C12D1Ev,_ZThn12_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C12D0Ev,_ZThn12_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C12[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&_ZN9S20948C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C12[];
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C12[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C5D1Ev,_ZThn12_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C5D0Ev,_ZThn12_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__9S20948C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
static  VTT_ENTRY vtt_S20948C12[] = {
  {&(_ZTV9S20948C12[6]),  6,13},
  {&(_ZTV9S20948C12[6]),  6,13},
  {&(_ZTV9S20948C12[11]),  11,13},
  {&(_tg__ZTV8S20948C5__9S20948C12[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__9S20948C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
static VTBL_ENTRY alt_thunk_names3[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C5D0Ev,_ZThn12_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C5D1Ev,_ZThn12_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C12D0Ev,_ZThn12_N9S20948C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C12D1Ev,_ZThn12_N9S20948C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C12 = {  "S20948C12", // class name
  bases_S20948C12, 5,
  &(vtc_S20948C12[0]), // expected_vtbl_contents
  &(vtt_S20948C12[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S20948C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20948C12),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names3,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C15  : S9624C39 {
  ::S9624C48 s20948c15f0;
  ::S9624C39 s20948c15f1;
};
//SIG(-1 S20948C15) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S20948C15()
{
  extern Class_Descriptor cd_S20948C15;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S20948C15, buf);
    S20948C15 &lv = *(new (buf) S20948C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S20948C15)");
    check2(__alignof__(lv), 1, "__alignof__(S20948C15)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20948C15");
    check_field_offset(lv, s20948c15f0, 0, "S20948C15.s20948c15f0");
    check_field_offset(lv, s20948c15f1, 1, "S20948C15.s20948c15f1");
    test_class_info(&lv, &cd_S20948C15);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C15(Test_S20948C15, "S20948C15", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20948C14  : S9624C48 , S20948C15 , virtual S20948C5 , virtual S20948C9_nt {
  void *s20948c14f0;
  ~S20948C14(); // tgen
  S20948C14(); // tgen
};
//SIG(-1 S20948C14) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S20948C14()
{
  extern Class_Descriptor cd_S20948C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20948C14, buf);
    S20948C14 *dp, &lv = *(dp=new (buf) S20948C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S20948C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C14)");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S20948C14");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(9,5), "S20948C14");
    check_base_class_offset(lv, (S20948C15*), ABISELECT(9,5), "S20948C14");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*), 0, "S20948C14");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(32,12), "S20948C14");
    check_base_class_offset(lv, (S20948C5*), 0, "S20948C14");
    check_base_class_offset(lv, (S20948C9_nt*), ABISELECT(64,28), "S20948C14");
    check_field_offset(lv, s20948c14f0, ABISELECT(16,8), "S20948C14.s20948c14f0");
    test_class_info(&lv, &cd_S20948C14);
    dp->~S20948C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C14(Test_S20948C14, "S20948C14", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN9S20948C14C1Ev();
extern void _ZN9S20948C14D1Ev();
Name_Map name_map_S20948C14[] = {
  NSPAIR(_ZN9S20948C14C1Ev),
  NSPAIR(_ZN9S20948C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
static Base_Class bases_S20948C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20948C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C9_nt,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C14[];
extern void _ZN9S20948C14D1Ev();
extern void _ZN9S20948C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C14D1Ev,_ZThn12_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20948C14D0Ev,_ZThn12_N9S20948C14D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY vtc_S20948C14[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C14D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern VTBL_ENTRY _ZTV9S20948C14[];
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C14[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn12_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn12_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__9S20948C14[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
static  VTT_ENTRY vtt_S20948C14[] = {
  {&(_ZTV9S20948C14[6]),  6,17},
  {&(_ZTV9S20948C14[6]),  6,17},
  {&(_ZTV9S20948C14[11]),  11,17},
  {&(_ZTV9S20948C14[16]),  16,17},
  {&(_tg__ZTV8S20948C5__9S20948C14[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__9S20948C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
static VTBL_ENTRY alt_thunk_names4[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn12_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn12_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C14D0Ev,_ZThn12_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C14D1Ev,_ZThn12_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C14 = {  "S20948C14", // class name
  bases_S20948C14, 7,
  &(vtc_S20948C14[0]), // expected_vtbl_contents
  &(vtt_S20948C14[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI9S20948C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20948C14),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C14),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names4,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C17  : virtual S20948C9_nt {
  virtual  ~S20948C17(); // _ZN9S20948C17D2Ev
  S20948C17(); // tgen
};
//SIG(-1 S20948C17) C1{ VBC2{ v1} vd}


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

static void Test_S20948C17()
{
  extern Class_Descriptor cd_S20948C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20948C17, buf);
    S20948C17 *dp, &lv = *(dp=new (buf) S20948C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20948C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20948C17)");
    check_base_class_offset(lv, (S20948C9_nt*), 0, "S20948C17");
    test_class_info(&lv, &cd_S20948C17);
    dp->~S20948C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C17(Test_S20948C17, "S20948C17", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20948C17C1Ev();
extern void _ZN9S20948C17D2Ev();
Name_Map name_map_S20948C17[] = {
  NSPAIR(_ZN9S20948C17C1Ev),
  NSPAIR(_ZN9S20948C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
static Base_Class bases_S20948C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C17[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY vtc_S20948C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern VTBL_ENTRY _ZTV9S20948C17[];
static  VTT_ENTRY vtt_S20948C17[] = {
  {&(_ZTV9S20948C17[4]),  4,7},
  {&(_ZTV9S20948C17[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
Class_Descriptor cd_S20948C17 = {  "S20948C17", // class name
  bases_S20948C17, 1,
  &(vtc_S20948C17[0]), // expected_vtbl_contents
  &(vtt_S20948C17[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20948C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20948C17),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C17),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  S20948C16  : S20948C17 , virtual S9624C48 {
  ::S20948C8 s20948c16f0;
  virtual  ~S20948C16(); // _ZN9S20948C16D2Ev
  S20948C16(); // tgen
};
//SIG(-1 S20948C16) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S20948C16()
{
  extern Class_Descriptor cd_S20948C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20948C16, buf);
    S20948C16 *dp, &lv = *(dp=new (buf) S20948C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20948C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20948C16)");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*), 0, "S20948C16");
    check_base_class_offset(lv, (S20948C17*), 0, "S20948C16");
    check_base_class_offset(lv, (S9624C48*), 0, "S20948C16");
    check_field_offset(lv, s20948c16f0, ABISELECT(8,4), "S20948C16.s20948c16f0");
    test_class_info(&lv, &cd_S20948C16);
    dp->~S20948C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C16(Test_S20948C16, "S20948C16", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S20948C16C1Ev();
extern void _ZN9S20948C16D2Ev();
Name_Map name_map_S20948C16[] = {
  NSPAIR(_ZN9S20948C16C1Ev),
  NSPAIR(_ZN9S20948C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20948C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20948C17,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20948C16[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY vtc_S20948C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S20948C16[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C17__9S20948C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
static  VTT_ENTRY vtt_S20948C16[] = {
  {&(_ZTV9S20948C16[5]),  5,8},
  {&(_tg__ZTV9S20948C17__9S20948C16[4]),  4,7},
  {&(_tg__ZTV9S20948C17__9S20948C16[4]),  4,7},
  {&(_ZTV9S20948C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
Class_Descriptor cd_S20948C16 = {  "S20948C16", // class name
  bases_S20948C16, 3,
  &(vtc_S20948C16[0]), // expected_vtbl_contents
  &(vtt_S20948C16[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S20948C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20948C16),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C13  : S20948C14 , S20948C15 , S20948C7_nt , S20948C16 {
  ~S20948C13(); // tgen
  S20948C13(); // tgen
};
//SIG(-1 S20948C13) C1{ BC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} BC4 BC7 BC9{ BC10{ VBC8 vd} VBC3 vd FC11{ m Fc[7]}}}


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

static void Test_S20948C13()
{
  extern Class_Descriptor cd_S20948C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20948C13, buf);
    S20948C13 *dp, &lv = *(dp=new (buf) S20948C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20948C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C13)");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*), ABISELECT(8,4), "S20948C13");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*), ABISELECT(9,5), "S20948C13");
    check_base_class_offset(lv, (S20948C15*)(S20948C14*), ABISELECT(9,5), "S20948C13");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*), 0, "S20948C13");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(80,44), "S20948C13");
    check_base_class_offset(lv, (S20948C5*)(S20948C14*), 0, "S20948C13");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*), ABISELECT(64,32), "S20948C13");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*), ABISELECT(64,32), "S20948C13");
    check_base_class_offset(lv, (S20948C14*), 0, "S20948C13");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(24,12), "S20948C13");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*), ABISELECT(24,12), "S20948C13");
    /*is_ambiguous_... S20948C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,16), "S20948C13");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*), ABISELECT(64,32), "S20948C13");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*), ABISELECT(112,60), "S20948C13");
    check_base_class_offset(lv, (S20948C16*), ABISELECT(64,32), "S20948C13");
    test_class_info(&lv, &cd_S20948C13);
    dp->~S20948C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C13(Test_S20948C13, "S20948C13", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN9S20948C13C1Ev();
extern void _ZN9S20948C13D1Ev();
Name_Map name_map_S20948C13[] = {
  NSPAIR(_ZN9S20948C13C1Ev),
  NSPAIR(_ZN9S20948C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
static Base_Class bases_S20948C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20948C5,    0, //bcp->offset
    -1, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20948C9_nt,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20948C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20948C15,    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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C17,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20948C16,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C13[];
extern void _ZN9S20948C13D1Ev();
extern void _ZN9S20948C13D0Ev();
extern void ABISELECT(_ZThn32_N9S20948C13D1Ev,_ZThn16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C13D0Ev,_ZThn16_N9S20948C13D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C13D1Ev,_ZThn44_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C13D0Ev,_ZThn44_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C13[] = {
  ABISELECT(112,60),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C13D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20948C13D1Ev,_ZThn16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20948C13D0Ev,_ZThn16_N9S20948C13D0Ev),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C13[];
extern void _ZN9S20948C14D1Ev();
extern void _ZN9S20948C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C14__9S20948C13[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C14D1Ev,_ZThn44_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C14D0Ev,_ZThn44_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C14__9S20948C13[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C14__9S20948C13[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C16__9S20948C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C13[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C5D1Ev,_ZThn44_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S20948C5D0Ev,_ZThn44_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__9S20948C13[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
static  VTT_ENTRY vtt_S20948C13[] = {
  {&(_ZTV9S20948C13[7]),  7,26},
  {&(_tg__ZTV9S20948C14__9S20948C13[6]),  6,8},
  {&(_tg__ZTV9S20948C14__9S20948C13[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C14__9S20948C13[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C14__9S20948C13[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C13[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C16__9S20948C13[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C16__9S20948C13[4]),  4,7},
  {&(_tg__ZTV9S20948C16__9S20948C13[5]),  5,8},
  {&(_ZTV9S20948C13[7]),  7,26},
  {&(_ZTV9S20948C13[24]),  24,26},
  {&(_ZTV9S20948C13[18]),  18,26},
  {&(_ZTV9S20948C13[18]),  18,26},
  {&(_tg__ZTV8S20948C5__9S20948C13[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__9S20948C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
static VTBL_ENTRY alt_thunk_names5[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20948C5D0Ev,_ZThn44_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20948C5D1Ev,_ZThn44_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C14D0Ev,_ZThn44_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C14D1Ev,_ZThn44_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C13D0Ev,_ZThn44_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C13D1Ev,_ZThn44_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C13 = {  "S20948C13", // class name
  bases_S20948C13, 14,
  &(vtc_S20948C13[0]), // expected_vtbl_contents
  &(vtt_S20948C13[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI9S20948C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20948C13),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C13),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names5,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C3  : virtual S20948C4 , virtual S20948C10 , virtual S20948C9_nt , S20948C12 , S20948C13 {
  virtual  ~S20948C3(); // _ZN8S20948C3D2Ev
  S20948C3(); // tgen
};
//SIG(-1 S20948C3) C1{ VBC2{ BC3{ BC4{ m} VBC5{ vd m FD} vd} BC6{ m Fc[7]} BC7{ v1} VBC4} VBC8{ BC7 VBC9{ m} vd Fi:23} VBC7 BC10{ BC6 VBC3 VBC4 vd} BC11{ BC12{ BC4 BC13{ BC9 FC4 FC9} VBC3 VBC7 Fp} BC13 BC5 BC14{ BC15{ VBC7 vd} VBC4 vd FC6}} vd}


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

static void Test_S20948C3()
{
  extern Class_Descriptor cd_S20948C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S20948C3, buf);
    S20948C3 *dp, &lv = *(dp=new (buf) S20948C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S20948C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C3)");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*), ABISELECT(96,56), "S20948C3");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*), ABISELECT(128,72), "S20948C3");
    /*is_ambiguous_... S20948C3::S20948C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(128,72), "S20948C3");
    check_base_class_offset(lv, (S20948C5*)(S20948C4*), ABISELECT(96,56), "S20948C3");
    check_base_class_offset(lv, (S20948C8*)(S20948C4*), ABISELECT(104,60), "S20948C3");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*), ABISELECT(112,68), "S20948C3");
    /*is_ambiguous_... S20948C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*), ABISELECT(160,88), "S20948C3");
    /*is_ambiguous_... S20948C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C12*), ABISELECT(160,88), "S20948C3");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*), ABISELECT(160,88), "S20948C3");
    check_base_class_offset(lv, (S20948C4*), ABISELECT(96,56), "S20948C3");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C10*), ABISELECT(160,88), "S20948C3");
    check_base_class_offset(lv, (S9624C39*)(S20948C10*), 0, "S20948C3");
    check_base_class_offset(lv, (S20948C10*), ABISELECT(160,88), "S20948C3");
    /*is_ambiguous_... S20948C3::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*), ABISELECT(80,44), "S20948C3");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*), ABISELECT(80,44), "S20948C3");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(80,44), "S20948C3");
    check_base_class_offset(lv, (S20948C8*)(S20948C12*), ABISELECT(8,4), "S20948C3");
    /*is_ambiguous_... S20948C3::S20948C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*), 0, "S20948C3");
    check_base_class_offset(lv, (S20948C5*)(S20948C12*), 0, "S20948C3");
    check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*), 0, "S20948C3");
    check_base_class_offset(lv, (S20948C12*), 0, "S20948C3");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*), ABISELECT(24,16), "S20948C3");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(25,17), "S20948C3");
    check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(25,17), "S20948C3");
    check_base_class_offset(lv, (S20948C14*)(S20948C13*), ABISELECT(16,12), "S20948C3");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*), ABISELECT(40,24), "S20948C3");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*), ABISELECT(40,24), "S20948C3");
    /*is_ambiguous_... S20948C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*), ABISELECT(48,28), "S20948C3");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(80,44), "S20948C3");
    check_base_class_offset(lv, (S20948C16*)(S20948C13*), ABISELECT(80,44), "S20948C3");
    check_base_class_offset(lv, (S20948C13*), ABISELECT(16,12), "S20948C3");
    test_class_info(&lv, &cd_S20948C3);
    dp->~S20948C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C3(Test_S20948C3, "S20948C3", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S20948C3C1Ev();
extern void _ZN8S20948C3D2Ev();
Name_Map name_map_S20948C3[] = {
  NSPAIR(_ZN8S20948C3C1Ev),
  NSPAIR(_ZN8S20948C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C10;
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C12;
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
static Base_Class bases_S20948C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20948C5,    ABISELECT(96,56), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(112,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    6, //immediately_derived
  0, 1},
  {&cd_S20948C4,    ABISELECT(96,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C9_nt,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C10,    ABISELECT(160,88), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C9_nt,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20948C12,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20948C15,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20948C3[];
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void _ZN8S20948C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void _ZN8S20948C3D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S20948C3D1Ev,_ZThn28_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20948C3D0Ev,_ZThn28_N8S20948C3D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C3D1Ev,_ZThn56_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C3D0Ev,_ZThn56_N8S20948C3D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C3D1Ev,_ZThn72_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S20948C3D0Ev,_ZThn72_N8S20948C3D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20948C3D1Ev,_ZThn88_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20948C3D0Ev,_ZThn88_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C3[] = {
  ABISELECT(80,44),
  0,
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20948C3D1Ev,_ZThn28_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20948C3D0Ev,_ZThn28_N8S20948C3D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev),
  ABISELECT(-160,-88),
  0,
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20948C3[];
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void _ZN9S20948C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void _ZN9S20948C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C12__8S20948C3[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S20948C12D1Ev,_ZThn72_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S20948C12D0Ev,_ZThn72_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C12__8S20948C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__8S20948C3[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C13__8S20948C3[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C13__8S20948C3[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn60_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn60_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C13__8S20948C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C13__8S20948C3[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__8S20948C3[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C13__8S20948C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C13__8S20948C3[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn60_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn60_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C13__8S20948C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13__8S20948C3[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C3[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C4__8S20948C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C4__8S20948C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C4__8S20948C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C3[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__8S20948C3[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C5D1Ev,_ZThn72_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20948C5D0Ev,_ZThn72_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__A1__8S20948C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
static  VTT_ENTRY vtt_S20948C3[] = {
  {&(_ZTV8S20948C3[10]),  10,57},
  {&(_tg__ZTV9S20948C12__8S20948C3[6]),  6,8},
  {&(_tg__ZTV9S20948C12__8S20948C3[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C12__8S20948C3[3]),  3,5},
  {&(_tg__ZTV9S20948C13__8S20948C3[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C13__8S20948C3[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C13__8S20948C3[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C13__8S20948C3[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C13__8S20948C3[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__8S20948C3[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__8S20948C3[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3[5]),  5,8},
  {&(_tg__ZTV8S20948C5__9S20948C13__8S20948C3[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C13__8S20948C3[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C13__8S20948C3[5]),  5,8},
  {&(_tg__ZTV9S20948C16__9S20948C13__8S20948C3[5]),  5,8},
  {&(_ZTV8S20948C3[39]),  39,57},
  {&(_ZTV8S20948C3[47]),  47,57},
  {&(_ZTV8S20948C3[43]),  43,57},
  {&(_ZTV8S20948C3[54]),  54,57},
  {&(_ZTV8S20948C3[30]),  30,57},
  {&(_ZTV8S20948C3[10]),  10,57},
  {&(_ZTV8S20948C3[19]),  19,57},
  {&(_ZTV8S20948C3[30]),  30,57},
  {&(_tg__ZTV8S20948C4__8S20948C3[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C4__8S20948C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C4__8S20948C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C4__8S20948C3[3]),  3,5},
  {&(_tg__ZTV9S20948C10__8S20948C3[3]),  3,6},
  {&(_tg__ZTV8S20948C5__A1__8S20948C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__A1__8S20948C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20948C3[];
extern  VTBL_ENTRY _ZTV8S20948C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C3[];
static VTBL_ENTRY alt_thunk_names6[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C5D0Ev,_ZThn72_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C5D1Ev,_ZThn72_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn60_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn60_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn60_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn60_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C12D0Ev,_ZThn72_N9S20948C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C12D1Ev,_ZThn72_N9S20948C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C3D0Ev,_ZThn72_N8S20948C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C3D1Ev,_ZThn72_N8S20948C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20948C3D0Ev,_ZThn88_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C3D0Ev,_ZThn56_N8S20948C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20948C3D1Ev,_ZThn88_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C3D1Ev,_ZThn56_N8S20948C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev),
  (VTBL_ENTRY)_ZN8S20948C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev),
  (VTBL_ENTRY)_ZN8S20948C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C3 = {  "S20948C3", // class name
  bases_S20948C3, 25,
  &(vtc_S20948C3[0]), // expected_vtbl_contents
  &(vtt_S20948C3[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S20948C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20948C3),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20948C3),32, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names6,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C20  : S9624C48 , virtual S20948C7_nt , S20948C9_nt , S20948C16 {
  int s20948c20f0;
  virtual  ~S20948C20(); // _ZN9S20948C20D2Ev
  S20948C20(); // tgen
};
//SIG(-1 S20948C20) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


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

static void Test_S20948C20()
{
  extern Class_Descriptor cd_S20948C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20948C20, buf);
    S20948C20 *dp, &lv = *(dp=new (buf) S20948C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20948C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C20)");
    /*is_ambiguous_... S20948C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20948C20");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S20948C20");
    /*is_ambiguous_... S20948C20::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*), 0, "S20948C20");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*), ABISELECT(8,4), "S20948C20");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*), ABISELECT(8,4), "S20948C20");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*), ABISELECT(64,36), "S20948C20");
    check_base_class_offset(lv, (S20948C16*), ABISELECT(8,4), "S20948C20");
    check_field_offset(lv, s20948c20f0, ABISELECT(24,16), "S20948C20.s20948c20f0");
    test_class_info(&lv, &cd_S20948C20);
    dp->~S20948C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C20(Test_S20948C20, "S20948C20", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN9S20948C20C1Ev();
extern void _ZN9S20948C20D2Ev();
Name_Map name_map_S20948C20[] = {
  NSPAIR(_ZN9S20948C20C1Ev),
  NSPAIR(_ZN9S20948C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
static Base_Class bases_S20948C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20948C17,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20948C16,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S20948C20[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C20D1Ev();
extern void _ZN9S20948C20D0Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C20D1Ev,_ZThn20_N9S20948C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S20948C20D0Ev,_ZThn20_N9S20948C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C20[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C20[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C20[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C16__9S20948C20[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
static  VTT_ENTRY vtt_S20948C20[] = {
  {&(_ZTV9S20948C20[5]),  5,21},
  {&(_tg__ZTV9S20948C16__9S20948C20[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C16__9S20948C20[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C16__9S20948C20[4]),  4,7},
  {&(_tg__ZTV9S20948C16__9S20948C20[5]),  5,8},
  {&(_ZTV9S20948C20[19]),  19,21},
  {&(_ZTV9S20948C20[13]),  13,21},
  {&(_ZTV9S20948C20[13]),  13,21},
};
extern VTBL_ENTRY _ZTI9S20948C20[];
extern  VTBL_ENTRY _ZTV9S20948C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C20[];
static VTBL_ENTRY alt_thunk_names7[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C20D0Ev,_ZThn20_N9S20948C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C20D1Ev,_ZThn20_N9S20948C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C20 = {  "S20948C20", // class name
  bases_S20948C20, 7,
  &(vtc_S20948C20[0]), // expected_vtbl_contents
  &(vtt_S20948C20[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI9S20948C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20948C20),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C20),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names7,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C19  : virtual S20948C9_nt , S20948C4 , virtual S20948C20 , S20948C8 {
  int s20948c19f0;
  virtual  ~S20948C19(); // _ZN9S20948C19D2Ev
  S20948C19(); // tgen
};
//SIG(-1 S20948C19) C1{ VBC2{ v1} BC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC2 VBC5} VBC8{ BC5 VBC6 BC2 BC9{ BC10{ VBC2 vd} VBC5 vd FC7} vd Fi} BC7 vd Fi}


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

static void Test_S20948C19()
{
  extern Class_Descriptor cd_S20948C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,18)];
    init_test(&cd_S20948C19, buf);
    S20948C19 *dp, &lv = *(dp=new (buf) S20948C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S20948C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C19)");
    /*is_ambiguous_... S20948C19::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*), ABISELECT(96,52), "S20948C19");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(96,52), "S20948C19");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*), 0, "S20948C19");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*), ABISELECT(48,28), "S20948C19");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C20*), ABISELECT(48,28), "S20948C19");
    check_base_class_offset(lv, (S20948C5*)(S20948C4*), 0, "S20948C19");
    check_base_class_offset(lv, (S20948C8*)(S20948C4*), ABISELECT(8,4), "S20948C19");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*), ABISELECT(16,12), "S20948C19");
    /*is_ambiguous_... S20948C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*), ABISELECT(80,44), "S20948C19");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C20*), ABISELECT(80,44), "S20948C19");
    check_base_class_offset(lv, (S20948C4*), 0, "S20948C19");
    /*is_ambiguous_... S20948C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C20*), ABISELECT(88,48), "S20948C19");
    /*is_ambiguous_... S20948C20::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C20*), ABISELECT(88,48), "S20948C19");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(96,52), "S20948C19");
    check_base_class_offset(lv, (S20948C16*)(S20948C20*), ABISELECT(96,52), "S20948C19");
    check_base_class_offset(lv, (S20948C20*), ABISELECT(88,48), "S20948C19");
    /*is_ambiguous_... S20948C19::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(24,16), "S20948C19");
    check_field_offset(lv, s20948c19f0, ABISELECT(32,24), "S20948C19.s20948c19f0");
    test_class_info(&lv, &cd_S20948C19);
    dp->~S20948C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C19(Test_S20948C19, "S20948C19", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN9S20948C19C1Ev();
extern void _ZN9S20948C19D2Ev();
Name_Map name_map_S20948C19[] = {
  NSPAIR(_ZN9S20948C19C1Ev),
  NSPAIR(_ZN9S20948C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C20;
extern VTBL_ENTRY _ZTI9S20948C20[];
extern  VTBL_ENTRY _ZTV9S20948C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S20948C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20948C5,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C9_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20948C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20948C9_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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(96,52), //bcp->offset
    26, //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20948C20,    ABISELECT(88,48), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C19[];
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20948C19D1Ev,_ZThn28_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20948C19D0Ev,_ZThn28_N9S20948C19D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn88_N9S20948C19D1Ev,_ZThn48_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn88_N9S20948C19D0Ev,_ZThn48_N9S20948C19D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY vtc_S20948C19[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C19[];
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C4__9S20948C19[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C4__9S20948C19[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20948C5D1Ev,_ZThn28_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S20948C5D0Ev,_ZThn28_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C4__9S20948C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20948C4D1Ev,_ZThn28_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20948C4D0Ev,_ZThn28_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C4__9S20948C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C20D1Ev();
extern void _ZN9S20948C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C19[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C20__9S20948C19[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C20__9S20948C19[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C20__9S20948C19[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev),
};
static  VTT_ENTRY vtt_S20948C19[] = {
  {&(_ZTV9S20948C19[6]),  6,34},
  {&(_tg__ZTV8S20948C4__9S20948C19[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C4__9S20948C19[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C4__9S20948C19[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C4__9S20948C19[3]),  3,5},
  {&(_ZTV9S20948C19[31]),  31,34},
  {&(_ZTV9S20948C19[14]),  14,34},
  {&(_ZTV9S20948C19[23]),  23,34},
  {&(_ZTV9S20948C19[31]),  31,34},
  {&(_tg__ZTV9S20948C20__9S20948C19[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C19[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__9S20948C19[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__9S20948C19[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C19[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C20__9S20948C19[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C20__9S20948C19[5]),  5,8},
  {&(_tg__ZTV9S20948C16__9S20948C20__9S20948C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
static VTBL_ENTRY alt_thunk_names8[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20948C4D0Ev,_ZThn28_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20948C4D1Ev,_ZThn28_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20948C5D0Ev,_ZThn28_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20948C5D1Ev,_ZThn28_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20948C19D0Ev,_ZThn48_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20948C19D1Ev,_ZThn48_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20948C19D0Ev,_ZThn28_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20948C19D1Ev,_ZThn28_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C19 = {  "S20948C19", // class name
  bases_S20948C19, 14,
  &(vtc_S20948C19[0]), // expected_vtbl_contents
  &(vtt_S20948C19[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI9S20948C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20948C19),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C19),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names8,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C21  : virtual S20948C10 , S20948C16 , S20948C13 , S20948C17 {
  virtual  ~S20948C21(); // _ZN9S20948C21D2Ev
  virtual void  v2(); // _ZN9S20948C212v2Ev
  S20948C21(); // tgen
};
//SIG(-1 S20948C21) C1{ VBC2{ BC3{ v2} VBC4{ m} vd Fi:23} BC5{ BC6{ VBC3 vd} VBC7{ m} vd FC8{ m Fc[7]}} BC9{ BC10{ BC7 BC11{ BC4 FC7 FC4} VBC12{ BC7 VBC13{ vd m FD} vd} VBC3 Fp} BC11 BC13 BC5} BC6 vd v1}


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

static void Test_S20948C21()
{
  extern Class_Descriptor cd_S20948C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S20948C21, buf);
    S20948C21 *dp, &lv = *(dp=new (buf) S20948C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S20948C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C21)");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C10*), ABISELECT(104,60), "S20948C21");
    check_base_class_offset(lv, (S9624C39*)(S20948C10*), 0, "S20948C21");
    check_base_class_offset(lv, (S20948C10*), ABISELECT(104,60), "S20948C21");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*), 0, "S20948C21");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*), 0, "S20948C21");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*), 0, "S20948C21");
    /*is_ambiguous_... S20948C21::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*), 0, "S20948C21");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*), 0, "S20948C21");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*), 0, "S20948C21");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*), 0, "S20948C21");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C16*), 0, "S20948C21");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*), ABISELECT(24,16), "S20948C21");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(25,17), "S20948C21");
    check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(25,17), "S20948C21");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*), ABISELECT(16,12), "S20948C21");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(128,68), "S20948C21");
    check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*), ABISELECT(16,12), "S20948C21");
    check_base_class_offset(lv, (S20948C14*)(S20948C13*), ABISELECT(16,12), "S20948C21");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*), ABISELECT(40,24), "S20948C21");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*), ABISELECT(40,24), "S20948C21");
    /*is_ambiguous_... S20948C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*), ABISELECT(48,28), "S20948C21");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(80,44), "S20948C21");
    check_base_class_offset(lv, (S20948C16*)(S20948C13*), ABISELECT(80,44), "S20948C21");
    check_base_class_offset(lv, (S20948C13*), ABISELECT(16,12), "S20948C21");
    /*is_ambiguous_... S20948C21::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C17*), ABISELECT(96,56), "S20948C21");
    test_class_info(&lv, &cd_S20948C21);
    dp->~S20948C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C21(Test_S20948C21, "S20948C21", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN9S20948C21C1Ev();
extern void _ZN9S20948C21D2Ev();
Name_Map name_map_S20948C21[] = {
  NSPAIR(_ZN9S20948C21C1Ev),
  NSPAIR(_ZN9S20948C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C10;
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
static Base_Class bases_S20948C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    ABISELECT(104,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C10,    ABISELECT(104,60), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20948C17,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(128,68), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20948C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20948C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(80,44), //bcp->offset
    26, //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
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C17,    ABISELECT(96,56), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C21[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N9S20948C21D1Ev,_ZThn28_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn48_N9S20948C21D0Ev,_ZThn28_N9S20948C21D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn104_N9S20948C21D1Ev,_ZThn60_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn104_N9S20948C21D0Ev,_ZThn60_N9S20948C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S20948C21D1Ev,_ZThn68_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S20948C21D0Ev,_ZThn68_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C21[] = {
  ABISELECT(128,68),
  ABISELECT(16,12),
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20948C21D1Ev,_ZThn28_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20948C21D0Ev,_ZThn28_N9S20948C21D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C21[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C21[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C16__9S20948C21[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C13__9S20948C21[] = {
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn56_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn56_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C13__9S20948C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C13__9S20948C21[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C13__A1__9S20948C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A1__9S20948C21[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A1__9S20948C21[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn56_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn56_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C13__9S20948C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C13__9S20948C21[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13__9S20948C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C21[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C17__A2__9S20948C21[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C21[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C21[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S20948C5D1Ev,_ZThn56_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S20948C5D0Ev,_ZThn56_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__9S20948C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
static  VTT_ENTRY vtt_S20948C21[] = {
  {&(_ZTV9S20948C21[9]),  9,54},
  {&(_tg__ZTV9S20948C16__9S20948C21[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C16__9S20948C21[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C16__9S20948C21[4]),  4,7},
  {&(_tg__ZTV9S20948C16__9S20948C21[5]),  5,8},
  {&(_tg__ZTV9S20948C13__9S20948C21[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C13__9S20948C21[6]),  6,8},
  {&(_tg__ZTV9S20948C149S20948C13__9S20948C21[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C13__9S20948C21[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C13__9S20948C21[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C21[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__A1__9S20948C21[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A1__9S20948C21[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A1__9S20948C21[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C21[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20948C13__9S20948C21[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C13__9S20948C21[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C13__9S20948C21[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C21[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C17__A2__9S20948C21[3]),  3,4},
  {&(_ZTV9S20948C21[46]),  46,54},
  {&(_ZTV9S20948C21[9]),  9,54},
  {&(_ZTV9S20948C21[20]),  20,54},
  {&(_ZTV9S20948C21[20]),  20,54},
  {&(_ZTV9S20948C21[52]),  52,54},
  {&(_ZTV9S20948C21[31]),  31,54},
  {&(_ZTV9S20948C21[38]),  38,54},
  {&(_tg__ZTV9S20948C10__9S20948C21[3]),  3,6},
  {&(_tg__ZTV8S20948C5__9S20948C21[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__9S20948C21[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
static VTBL_ENTRY alt_thunk_names9[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20948C5D0Ev,_ZThn56_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20948C5D1Ev,_ZThn56_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn56_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn56_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn56_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn56_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C21D0Ev,_ZThn68_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C21D1Ev,_ZThn68_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20948C21D0Ev,_ZThn60_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20948C21D1Ev,_ZThn60_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C21 = {  "S20948C21", // class name
  bases_S20948C21, 21,
  &(vtc_S20948C21[0]), // expected_vtbl_contents
  &(vtt_S20948C21[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI9S20948C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20948C21),54, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C21),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names9,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C18  : virtual S20948C15 , S20948C19 , S20948C16 , S20948C21 , virtual S20948C13 {
  virtual  ~S20948C18(); // _ZN9S20948C18D2Ev
  virtual void  v3(); // _ZN9S20948C182v3Ev
  S20948C18(); // tgen
};
//SIG(-1 S20948C18) C1{ VBC2{ BC3{ m} FC4{ m} FC3} BC5{ VBC6{ v2} BC7{ BC8{ BC4 VBC9{ vd m FD} vd} BC10{ m Fc[7]} BC6 VBC4} VBC11{ BC4 VBC9 BC6 BC12{ BC13{ VBC6 vd} VBC4 vd FC10} vd Fi} BC10 vd Fi} BC12 BC14{ VBC15{ BC6 VBC3 vd Fi:23} BC12 BC16{ BC17{ BC4 BC2 VBC8 VBC6 Fp} BC2 BC9 BC12} BC13 vd v3} VBC16 vd v1}


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

static void Test_S20948C18()
{
  extern Class_Descriptor cd_S20948C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,50)];
    init_test(&cd_S20948C18, buf);
    S20948C18 *dp, &lv = *(dp=new (buf) S20948C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,196), "sizeof(S20948C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C18)");
    /*is_ambiguous_... S20948C18::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(168,100), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*), ABISELECT(168,100), "S20948C18");
    /*is_ambiguous_... S20948C19::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C19*), ABISELECT(224,128), "S20948C18");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(224,128), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*), ABISELECT(224,128), "S20948C18");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C21*), ABISELECT(224,128), "S20948C18");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C21*), ABISELECT(224,128), "S20948C18");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*), ABISELECT(224,128), "S20948C18");
    /*is_ambiguous_... S20948C21::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C21*), ABISELECT(224,128), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*), ABISELECT(224,128), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(224,128), "S20948C18");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*)(S20948C19*), 0, "S20948C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*)(S20948C19*), ABISELECT(176,104), "S20948C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C20*), ABISELECT(176,104), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(176,104), "S20948C18");
    check_base_class_offset(lv, (S20948C5*)(S20948C4*)(S20948C19*), 0, "S20948C18");
    check_base_class_offset(lv, (S20948C8*)(S20948C4*)(S20948C19*), ABISELECT(8,4), "S20948C18");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*)(S20948C19*), ABISELECT(16,12), "S20948C18");
    /*is_ambiguous_... S20948C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*)(S20948C19*), ABISELECT(208,120), "S20948C18");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C20*), ABISELECT(208,120), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*), ABISELECT(208,120), "S20948C18");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C21*), ABISELECT(208,120), "S20948C18");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C21*), ABISELECT(208,120), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*), ABISELECT(208,120), "S20948C18");
    check_base_class_offset(lv, (S20948C4*)(S20948C19*), 0, "S20948C18");
    /*is_ambiguous_... S20948C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C20*), ABISELECT(216,124), "S20948C18");
    /*is_ambiguous_... S20948C20::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C20*), ABISELECT(216,124), "S20948C18");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(224,128), "S20948C18");
    check_base_class_offset(lv, (S20948C16*)(S20948C20*), ABISELECT(224,128), "S20948C18");
    check_base_class_offset(lv, (S20948C20*)(S20948C19*), ABISELECT(216,124), "S20948C18");
    /*is_ambiguous_... S20948C19::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C19*), ABISELECT(24,16), "S20948C18");
    check_base_class_offset(lv, (S20948C19*), 0, "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*), ABISELECT(40,28), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C16*), ABISELECT(40,28), "S20948C18");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C10*), ABISELECT(248,144), "S20948C18");
    check_base_class_offset(lv, (S9624C39*)(S20948C10*), 0, "S20948C18");
    check_base_class_offset(lv, (S20948C10*)(S20948C21*), ABISELECT(248,144), "S20948C18");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C21*), ABISELECT(64,40), "S20948C18");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C21*), ABISELECT(64,40), "S20948C18");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C21*), ABISELECT(88,56), "S20948C18");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*), ABISELECT(89,57), "S20948C18");
    check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*), ABISELECT(89,57), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*), ABISELECT(80,52), "S20948C18");
    check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C21*), ABISELECT(80,52), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*), ABISELECT(80,52), "S20948C18");
    check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C21*), ABISELECT(80,52), "S20948C18");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C21*), ABISELECT(104,64), "S20948C18");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C21*), ABISELECT(104,64), "S20948C18");
    /*is_ambiguous_... S20948C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C21*), ABISELECT(112,68), "S20948C18");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*), ABISELECT(144,84), "S20948C18");
    check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C21*), ABISELECT(144,84), "S20948C18");
    check_base_class_offset(lv, (S20948C13*)(S20948C21*), ABISELECT(80,52), "S20948C18");
    /*is_ambiguous_... S20948C21::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C21*), ABISELECT(160,96), "S20948C18");
    check_base_class_offset(lv, (S20948C21*), ABISELECT(64,40), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*), ABISELECT(280,156), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(281,157), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(281,157), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*), ABISELECT(272,152), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*), ABISELECT(296,164), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*), ABISELECT(296,164), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*), ABISELECT(304,168), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(336,184), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*), ABISELECT(336,184), "S20948C18");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C13*), ABISELECT(272,152), "S20948C18");
    test_class_info(&lv, &cd_S20948C18);
    dp->~S20948C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C18(Test_S20948C18, "S20948C18", ABISELECT(352,196));

#else // __cplusplus

extern void _ZN9S20948C18C1Ev();
extern void _ZN9S20948C18D2Ev();
Name_Map name_map_S20948C18[] = {
  NSPAIR(_ZN9S20948C18C1Ev),
  NSPAIR(_ZN9S20948C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C20;
extern VTBL_ENTRY _ZTI9S20948C20[];
extern  VTBL_ENTRY _ZTV9S20948C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C19;
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C10;
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C21;
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
static Base_Class bases_S20948C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(168,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
  0, 0},
  {&cd_S20948C15,    ABISELECT(168,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_S20948C9_nt,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(176,104), //bcp->offset
    66, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20948C5,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C9_nt,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(208,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
    9, //immediately_derived
  0, 1},
  {&cd_S20948C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(224,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20948C20,    ABISELECT(216,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20948C19,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C9_nt,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20948C10,    ABISELECT(248,144), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20948C17,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20948C16,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20948C14,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C21,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(296,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(304,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(336,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(272,152), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C18[];
extern void _ZN9S20948C18D1Ev();
extern void _ZN9S20948C18D0Ev();
extern void _ZN9S20948C182v3Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev)();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N9S20948C18D1Ev,_ZThn68_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C18D0Ev,_ZThn68_N9S20948C18D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20948C18D1Ev,_ZThn104_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20948C18D0Ev,_ZThn104_N9S20948C18D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn216_N9S20948C18D1Ev,_ZThn124_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn216_N9S20948C18D0Ev,_ZThn124_N9S20948C18D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn248_N9S20948C18D1Ev,_ZThn144_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn248_N9S20948C18D0Ev,_ZThn144_N9S20948C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn272_N9S20948C18D1Ev,_ZThn152_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn272_N9S20948C18D0Ev,_ZThn152_N9S20948C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY vtc_S20948C18[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN9S20948C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20948C18D1Ev,_ZThn68_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20948C18D0Ev,_ZThn68_N9S20948C18D0Ev),
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev),
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C18[];
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C19__9S20948C18[] = {
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C49S20948C19__9S20948C18[] = {
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C49S20948C19__9S20948C18[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S20948C5D1Ev,_ZThn104_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S20948C5D0Ev,_ZThn104_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C19__9S20948C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20948C4D1Ev,_ZThn104_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20948C4D0Ev,_ZThn104_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C49S20948C19__9S20948C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C19__9S20948C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn176_N9S20948C19D1Ev,_ZThn104_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn176_N9S20948C19D0Ev,_ZThn104_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C19__9S20948C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn216_N9S20948C19D1Ev,_ZThn124_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn216_N9S20948C19D0Ev,_ZThn124_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C19__9S20948C18[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C16__A1__9S20948C18[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C16__A1__9S20948C18[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C16__A1__9S20948C18[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C16__A1__9S20948C18[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C21__9S20948C18[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C21__A2__9S20948C18[] = {
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C21__A2__9S20948C18[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C21__A2__9S20948C18[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C21__A2__9S20948C18[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C21__9S20948C18[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C139S20948C21__9S20948C18[] = {
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C14D1Ev,_ZThn52_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S20948C14D0Ev,_ZThn52_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C21__9S20948C18[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C21__9S20948C18[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C139S20948C21__A3__9S20948C18[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C21__A3__9S20948C18[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C21__A3__9S20948C18[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C13D1Ev,_ZThn52_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20948C13D0Ev,_ZThn52_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C139S20948C21__9S20948C18[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C139S20948C21__9S20948C18[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C139S20948C21__9S20948C18[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C21__A4__9S20948C18[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C21__A4__9S20948C18[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn184_N9S20948C21D1Ev,_ZThn104_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn184_N9S20948C21D0Ev,_ZThn104_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C21__9S20948C18[] = {
  ABISELECT(-184,-104),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C21__9S20948C18[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C21__9S20948C18[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C21D1Ev,_ZThn64_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C21D0Ev,_ZThn64_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C21__9S20948C18[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C21__9S20948C18[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C21__9S20948C18[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C20D1Ev();
extern void _ZN9S20948C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C18[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C20__9S20948C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C20__9S20948C18[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C20__9S20948C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C18[] = {
  ABISELECT(-248,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C18[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C5D1Ev,_ZThn52_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C5D0Ev,_ZThn52_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__A1__9S20948C18[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C18[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C13__A1__9S20948C18[] = {
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C13__A1__9S20948C18[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A1__9S20948C18[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A1__9S20948C18[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C18[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C13__A5__9S20948C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A5__9S20948C18[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A4__9S20948C18[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C13__A1__9S20948C18[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C13__A1__9S20948C18[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C13__A1__9S20948C18[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13__A1__9S20948C18[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
static  VTT_ENTRY vtt_S20948C18[] = {
  {&(_ZTV9S20948C18[11]),  11,118},
  {&(_tg__ZTV9S20948C19__9S20948C18[6]),  6,8},
  {&(_tg__ZTV8S20948C49S20948C19__9S20948C18[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C49S20948C19__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C19__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C49S20948C19__9S20948C18[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C19__9S20948C18[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C19__9S20948C18[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C19__9S20948C18[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C19__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C16__A1__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C16__A1__9S20948C18[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C16__A1__9S20948C18[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C16__A1__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C21__9S20948C18[9]),  9,13},
  {&(_tg__ZTV9S20948C169S20948C21__A2__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C21__A2__9S20948C18[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C21__A2__9S20948C18[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C21__A2__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C139S20948C21__9S20948C18[6]),  6,8},
  {&(_tg__ZTV9S20948C149S20948C139S20948C21__9S20948C18[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C21__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C21__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C139S20948C21__A3__9S20948C18[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C21__A3__9S20948C18[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C21__A3__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20948C139S20948C21__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C139S20948C21__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C139S20948C21__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C21__A4__9S20948C18[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C21__A4__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C10__9S20948C21__9S20948C18[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C21__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C21__9S20948C18[7]),  7,9},
  {&(_tg__ZTV9S20948C13__9S20948C21__9S20948C18[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20948C21__9S20948C18[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C21__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C21__9S20948C18[4]),  4,7},
  {&(_ZTV9S20948C18[86]),  86,118},
  {&(_ZTV9S20948C18[69]),  69,118},
  {&(_ZTV9S20948C18[78]),  78,118},
  {&(_ZTV9S20948C18[86]),  86,118},
  {&(_ZTV9S20948C18[22]),  22,118},
  {&(_ZTV9S20948C18[34]),  34,118},
  {&(_ZTV9S20948C18[94]),  94,118},
  {&(_ZTV9S20948C18[45]),  45,118},
  {&(_ZTV9S20948C18[45]),  45,118},
  {&(_ZTV9S20948C18[56]),  56,118},
  {&(_ZTV9S20948C18[63]),  63,118},
  {&(_ZTV9S20948C18[104]),  104,118},
  {&(_ZTV9S20948C18[108]),  108,118},
  {&(_ZTV9S20948C18[115]),  115,118},
  {&(_tg__ZTV9S20948C20__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__9S20948C18[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__9S20948C18[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C20__9S20948C18[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C20__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C16__9S20948C20__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C10__9S20948C18[3]),  3,6},
  {&(_tg__ZTV8S20948C5__A1__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__A1__9S20948C18[3]),  3,5},
  {&(_tg__ZTV9S20948C13__A1__9S20948C18[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C13__A1__9S20948C18[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C13__A1__9S20948C18[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A1__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A1__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C18[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__A5__9S20948C18[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A5__9S20948C18[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A4__9S20948C18[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C13__A1__9S20948C18[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C13__A1__9S20948C18[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C13__A1__9S20948C18[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C13__A1__9S20948C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20948C18[];
extern  VTBL_ENTRY _ZTV9S20948C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C18[];
static VTBL_ENTRY alt_thunk_names10[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C21D0Ev,_ZThn64_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C21D1Ev,_ZThn64_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20948C21D0Ev,_ZThn104_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20948C21D1Ev,_ZThn104_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C13D0Ev,_ZThn52_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C13D1Ev,_ZThn52_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C14D0Ev,_ZThn52_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C14D1Ev,_ZThn52_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20948C19D0Ev,_ZThn124_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20948C19D1Ev,_ZThn124_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C19D0Ev,_ZThn104_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C19D1Ev,_ZThn104_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C4D0Ev,_ZThn104_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C4D1Ev,_ZThn104_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C5D0Ev,_ZThn52_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C5D0Ev,_ZThn104_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C5D1Ev,_ZThn52_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C5D1Ev,_ZThn104_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20948C18D0Ev,_ZThn144_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20948C18D1Ev,_ZThn144_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20948C18D0Ev,_ZThn124_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20948C18D1Ev,_ZThn124_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C18D0Ev,_ZThn104_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C18D1Ev,_ZThn104_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20948C18D0Ev,_ZThn152_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20948C18D1Ev,_ZThn152_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C18 = {  "S20948C18", // class name
  bases_S20948C18, 48,
  &(vtc_S20948C18[0]), // expected_vtbl_contents
  &(vtt_S20948C18[0]), // expected_vtt_contents
  ABISELECT(352,196), // object size
  NSPAIRA(_ZTI9S20948C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20948C18),118, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C18),79, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names10,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C22  : virtual S20948C15 , virtual S20948C4 , S20948C8 , S20948C9_nt {
  void *s20948c22f0;
  ~S20948C22(); // tgen
  S20948C22(); // tgen
};
//SIG(-1 S20948C22) C1{ VBC2{ BC3{ m} FC4{ m} FC3} VBC5{ BC6{ BC4 VBC7{ vd m FD} vd} BC8{ m Fc[7]} BC9{ v1} VBC4} BC8 BC9 Fp}


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

static void Test_S20948C22()
{
  extern Class_Descriptor cd_S20948C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S20948C22, buf);
    S20948C22 *dp, &lv = *(dp=new (buf) S20948C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S20948C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C22)");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(24,16), "S20948C22");
    check_base_class_offset(lv, (S20948C15*), ABISELECT(24,16), "S20948C22");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*), ABISELECT(32,20), "S20948C22");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*), ABISELECT(64,36), "S20948C22");
    check_base_class_offset(lv, (S20948C5*)(S20948C4*), ABISELECT(32,20), "S20948C22");
    check_base_class_offset(lv, (S20948C8*)(S20948C4*), ABISELECT(40,24), "S20948C22");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*), ABISELECT(48,32), "S20948C22");
    /*is_ambiguous_... S20948C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*), 0, "S20948C22");
    check_base_class_offset(lv, (S20948C4*), ABISELECT(32,20), "S20948C22");
    /*is_ambiguous_... S20948C22::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20948C22");
    /*is_ambiguous_... S20948C22::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*), 0, "S20948C22");
    check_field_offset(lv, s20948c22f0, ABISELECT(16,12), "S20948C22.s20948c22f0");
    test_class_info(&lv, &cd_S20948C22);
    dp->~S20948C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C22(Test_S20948C22, "S20948C22", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN9S20948C22C1Ev();
extern void _ZN9S20948C22D1Ev();
Name_Map name_map_S20948C22[] = {
  NSPAIR(_ZN9S20948C22C1Ev),
  NSPAIR(_ZN9S20948C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
static Base_Class bases_S20948C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20948C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C4,    ABISELECT(32,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S20948C22[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C22D1Ev();
extern void _ZN9S20948C22D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C22D1Ev,_ZThn20_N9S20948C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev)();
extern void ABISELECT(_ZThn32_N9S20948C22D0Ev,_ZThn20_N9S20948C22D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C22D1Ev,_ZThn36_N9S20948C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev)();
extern void ABISELECT(_ZThn64_N9S20948C22D0Ev,_ZThn36_N9S20948C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20948C22[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C22D0Ev,
  ABISELECT(16,12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C22[];
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C4__9S20948C22[] = {
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C4__9S20948C22[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C4__9S20948C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C4__9S20948C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
static  VTT_ENTRY vtt_S20948C22[] = {
  {&(_ZTV9S20948C22[6]),  6,25},
  {&(_ZTV9S20948C22[15]),  15,25},
  {&(_ZTV9S20948C22[23]),  23,25},
  {&(_ZTV9S20948C22[19]),  19,25},
  {&(_tg__ZTV8S20948C4__9S20948C22[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C4__9S20948C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C4__9S20948C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C4__9S20948C22[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20948C22[];
extern  VTBL_ENTRY _ZTV9S20948C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C22[];
static VTBL_ENTRY alt_thunk_names11[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20948C22D0Ev,_ZThn36_N9S20948C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20948C22D1Ev,_ZThn36_N9S20948C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C22D0Ev,_ZThn20_N9S20948C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C22D1Ev,_ZThn20_N9S20948C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C22 = {  "S20948C22", // class name
  bases_S20948C22, 11,
  &(vtc_S20948C22[0]), // expected_vtbl_contents
  &(vtt_S20948C22[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI9S20948C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20948C22),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C22),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names11,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C24_nt  : S20948C9_nt {
  ~S20948C24_nt(); // tgen
  S20948C24_nt(); // tgen
};
//SIG(-1 S20948C24_nt) C1{ BC2{ v1}}


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

//skip512 S20948C24_nt

#else // __cplusplus

extern void _ZN12S20948C24_ntC1Ev();
extern void _ZN12S20948C24_ntD1Ev();
Name_Map name_map_S20948C24_nt[] = {
  NSPAIR(_ZN12S20948C24_ntC1Ev),
  NSPAIR(_ZN12S20948C24_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
static Base_Class bases_S20948C24_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI12S20948C24_nt[];
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY vtc_S20948C24_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S20948C24_nt[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern VTBL_ENTRY _ZTI12S20948C24_nt[];
VTBL_ENTRY *P__ZTI12S20948C24_nt = _ZTI12S20948C24_nt; 
extern  VTBL_ENTRY _ZTV12S20948C24_nt[];
Class_Descriptor cd_S20948C24_nt = {  "S20948C24_nt", // class name
  bases_S20948C24_nt, 1,
  &(vtc_S20948C24_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20948C24_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV12S20948C24_nt),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C23  : virtual S20948C24_nt , virtual S20948C9_nt , virtual S20948C18 {
  long s20948c23f0[2];
  ~S20948C23(); // tgen
  S20948C23(); // tgen
};
//SIG(-1 S20948C23) C1{ VBC2{ BC3{ v1}} VBC3 VBC4{ VBC5{ BC6{ m} FC7{ m} FC6} BC8{ VBC3 BC9{ BC10{ BC7 VBC11{ vd m FD} vd} BC12{ m Fc[7]} BC3 VBC7} VBC13{ BC7 VBC11 BC3 BC14{ BC15{ VBC3 vd} VBC7 vd FC12} vd Fi} BC12 vd Fi} BC14 BC16{ VBC17{ BC3 VBC6 vd Fi:23} BC14 BC18{ BC19{ BC7 BC5 VBC10 VBC3 Fp} BC5 BC11 BC14} BC15 vd v2} VBC18 vd v3} Fl[2]}


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

static void Test_S20948C23()
{
  extern Class_Descriptor cd_S20948C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,52)];
    init_test(&cd_S20948C23, buf);
    S20948C23 *dp, &lv = *(dp=new (buf) S20948C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,204), "sizeof(S20948C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C23)");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C24_nt*), 0, "S20948C23");
    check_base_class_offset(lv, (S20948C24_nt*), 0, "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C19::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C19*)(S20948C18*), ABISELECT(248,136), "S20948C23");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(248,136), "S20948C23");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(248,136), "S20948C23");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C21::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(248,136), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(200,112), "S20948C23");
    /*is_ambiguous_... S20948C18::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C18*), ABISELECT(200,112), "S20948C23");
    check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(32,12), "S20948C23");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(208,116), "S20948C23");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C20*), ABISELECT(208,116), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(208,116), "S20948C23");
    check_base_class_offset(lv, (S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(32,12), "S20948C23");
    check_base_class_offset(lv, (S20948C8*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(40,16), "S20948C23");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(48,24), "S20948C23");
    /*is_ambiguous_... S20948C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*)(S20948C19*)(S20948C18*), 0, "S20948C23");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C20*), 0, "S20948C23");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C18*), 0, "S20948C23");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C21*)(S20948C18*), 0, "S20948C23");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), 0, "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*), 0, "S20948C23");
    check_base_class_offset(lv, (S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(32,12), "S20948C23");
    /*is_ambiguous_... S20948C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C20*), ABISELECT(240,132), "S20948C23");
    /*is_ambiguous_... S20948C20::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C20*), ABISELECT(240,132), "S20948C23");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(248,136), "S20948C23");
    check_base_class_offset(lv, (S20948C16*)(S20948C20*), ABISELECT(248,136), "S20948C23");
    check_base_class_offset(lv, (S20948C20*)(S20948C19*)(S20948C18*), ABISELECT(240,132), "S20948C23");
    /*is_ambiguous_... S20948C19::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C19*)(S20948C18*), ABISELECT(56,28), "S20948C23");
    check_base_class_offset(lv, (S20948C19*)(S20948C18*), ABISELECT(32,12), "S20948C23");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(72,40), "S20948C23");
    /*is_ambiguous_... S20948C18::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C18*), ABISELECT(72,40), "S20948C23");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C10*), ABISELECT(272,152), "S20948C23");
    check_base_class_offset(lv, (S9624C39*)(S20948C10*), 0, "S20948C23");
    check_base_class_offset(lv, (S20948C10*)(S20948C21*)(S20948C18*), ABISELECT(272,152), "S20948C23");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(96,52), "S20948C23");
    /*is_ambiguous_... S20948C21::S20948C16 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(96,52), "S20948C23");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(120,68), "S20948C23");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(121,69), "S20948C23");
    check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(121,69), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*), ABISELECT(112,64), "S20948C23");
    check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(112,64), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*), ABISELECT(112,64), "S20948C23");
    check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(112,64), "S20948C23");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(136,76), "S20948C23");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(136,76), "S20948C23");
    /*is_ambiguous_... S20948C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(144,80), "S20948C23");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(176,96), "S20948C23");
    check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(176,96), "S20948C23");
    check_base_class_offset(lv, (S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(112,64), "S20948C23");
    /*is_ambiguous_... S20948C21::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(192,108), "S20948C23");
    check_base_class_offset(lv, (S20948C21*)(S20948C18*), ABISELECT(96,52), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*), ABISELECT(296,164), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(297,165), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(297,165), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*), ABISELECT(288,160), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*), ABISELECT(312,172), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*), ABISELECT(312,172), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*), ABISELECT(320,176), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(352,192), "S20948C23");
    /*is_ambiguous_... S20948C23::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*), ABISELECT(352,192), "S20948C23");
    /*is_ambiguous_... S20948C18::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C18*), ABISELECT(288,160), "S20948C23");
    check_base_class_offset(lv, (S20948C18*), ABISELECT(32,12), "S20948C23");
    check_field_offset(lv, s20948c23f0, ABISELECT(8,4), "S20948C23.s20948c23f0");
    test_class_info(&lv, &cd_S20948C23);
    dp->~S20948C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C23(Test_S20948C23, "S20948C23", ABISELECT(368,204));

#else // __cplusplus

extern void _ZN9S20948C23C1Ev();
extern void _ZN9S20948C23D1Ev();
Name_Map name_map_S20948C23[] = {
  NSPAIR(_ZN9S20948C23C1Ev),
  NSPAIR(_ZN9S20948C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C24_nt;
extern VTBL_ENTRY _ZTI12S20948C24_nt[];
extern  VTBL_ENTRY _ZTV12S20948C24_nt[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C20;
extern VTBL_ENTRY _ZTI9S20948C20[];
extern  VTBL_ENTRY _ZTV9S20948C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C19;
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C10;
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C21;
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C18;
extern VTBL_ENTRY _ZTI9S20948C18[];
extern  VTBL_ENTRY _ZTV9S20948C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C18[];
static Base_Class bases_S20948C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20948C24_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C9_nt,    ABISELECT(248,136), //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20948C15,    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
    50, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(208,116), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20948C5,    ABISELECT(32,12), //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
    17, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(48,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C4,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20948C9_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
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(248,136), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20948C20,    ABISELECT(240,132), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    18, //immediately_derived
  0, 0},
  {&cd_S20948C19,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(72,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    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
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C10,    ABISELECT(272,152), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20948C17,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(121,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
    28, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(121,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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    30, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20948C14,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    33, //immediately_derived
  0, 0},
  {&cd_S20948C15,    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
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(144,80), //bcp->offset
    68, //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
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(176,96), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(112,64), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(192,108), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C21,    ABISELECT(96,52), //bcp->offset
    46, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(297,165), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(297,165), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C14,    ABISELECT(288,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(312,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(312,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(320,176), //bcp->offset
    127, //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
    13, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(352,192), //bcp->offset
    131, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(288,160), //bcp->offset
    118, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S20948C18,    ABISELECT(32,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20948C23[];
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C23D1Ev();
extern void _ZN9S20948C23D0Ev();
extern void ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C23D1Ev,_ZThn12_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S20948C23D0Ev,_ZThn12_N9S20948C23D0Ev)() __attribute__((weak));
extern void _ZN9S20948C182v3Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20948C23D1Ev,_ZTvn28_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20948C23D0Ev,_ZTvn28_n48_N9S20948C23D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20948C23D1Ev,_ZTvn40_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20948C23D0Ev,_ZTvn40_n48_N9S20948C23D0Ev)();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C23D1Ev,_ZThn64_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C23D0Ev,_ZThn64_N9S20948C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N9S20948C23D1Ev,_ZTvn68_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20948C23D0Ev,_ZTvn68_n48_N9S20948C23D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20948C23D1Ev,_ZTvn84_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20948C23D0Ev,_ZTvn84_n48_N9S20948C23D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20948C23D1Ev,_ZTvn96_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20948C23D0Ev,_ZTvn96_n48_N9S20948C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20948C23D1Ev,_ZThn116_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20948C23D0Ev,_ZThn116_N9S20948C23D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn240_N9S20948C23D1Ev,_ZThn132_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn240_N9S20948C23D0Ev,_ZThn132_N9S20948C23D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C23D1Ev,_ZTvn4_n28_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C23D0Ev,_ZTvn4_n28_N9S20948C23D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn272_N9S20948C23D1Ev,_ZThn152_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn272_N9S20948C23D0Ev,_ZThn152_N9S20948C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn288_N9S20948C23D1Ev,_ZThn160_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn288_N9S20948C23D0Ev,_ZThn160_N9S20948C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20948C23D1Ev,_ZTvn16_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C23D0Ev,_ZTvn16_n16_N9S20948C23D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C23D1Ev,_ZTvn32_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C23D0Ev,_ZTvn32_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY vtc_S20948C23[] = {
  ABISELECT(288,160),
  ABISELECT(112,64),
  0,
  ABISELECT(272,152),
  ABISELECT(240,132),
  0,
  ABISELECT(208,116),
  ABISELECT(200,112),
  ABISELECT(32,12),
  ABISELECT(248,136),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C23D0Ev,
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-12),
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-12),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-72,-40),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20948C23D1Ev,_ZTvn28_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20948C23D0Ev,_ZTvn28_n48_N9S20948C23D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-52),
  ABISELECT(176,100),
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20948C23D1Ev,_ZTvn40_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20948C23D0Ev,_ZTvn40_n48_N9S20948C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  ABISELECT(-112,-64),
  ABISELECT(96,52),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20948C23D1Ev,_ZTvn68_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20948C23D0Ev,_ZTvn68_n48_N9S20948C23D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20948C23D1Ev,_ZTvn84_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20948C23D0Ev,_ZTvn84_n48_N9S20948C23D0Ev),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20948C23D1Ev,_ZTvn96_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20948C23D0Ev,_ZTvn96_n48_N9S20948C23D0Ev),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev),
  ABISELECT(-240,-132),
  0,
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev),
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C23D1Ev,_ZTvn4_n28_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C23D0Ev,_ZTvn4_n28_N9S20948C23D0Ev),
  ABISELECT(-272,-152),
  0,
  ABISELECT(-272,-152),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev),
  ABISELECT(-288,-160),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-288,-160),
  ABISELECT(-80,-44),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C23D1Ev,_ZTvn16_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C23D0Ev,_ZTvn16_n16_N9S20948C23D0Ev),
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C23D1Ev,_ZTvn32_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C23D0Ev,_ZTvn32_n16_N9S20948C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20948C23[];
extern void _ZN9S20948C18D1Ev();
extern void _ZN9S20948C18D0Ev();
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__9S20948C23[] = {
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-12),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN9S20948C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C49S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C49S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S20948C5D1Ev,_ZThn104_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S20948C5D0Ev,_ZThn104_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20948C4D1Ev,_ZThn104_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20948C4D0Ev,_ZThn104_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn176_N9S20948C19D1Ev,_ZThn104_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn176_N9S20948C19D0Ev,_ZThn104_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S20948C19D1Ev,_ZThn120_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn208_N9S20948C19D0Ev,_ZThn120_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C199S20948C18__9S20948C23[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A1__9S20948C23[] = {
  ABISELECT(-72,-40),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C18__A1__9S20948C23[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A1__9S20948C23[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A1__9S20948C23[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-52),
  ABISELECT(176,100),
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C219S20948C18__A2__9S20948C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A2__9S20948C23[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A2__9S20948C23[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A2__9S20948C23[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C139S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C14D1Ev,_ZThn52_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S20948C14D0Ev,_ZThn52_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__9S20948C23[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C13D1Ev,_ZThn52_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20948C13D0Ev,_ZThn52_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__9S20948C23[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A4__9S20948C23[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A4__9S20948C23[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn176_N9S20948C21D1Ev,_ZThn100_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn176_N9S20948C21D0Ev,_ZThn100_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-176,-100),
  0,
  ABISELECT(-272,-152),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__9S20948C23[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C21D1Ev,_ZThn64_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C21D0Ev,_ZThn64_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C219S20948C18__9S20948C23[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C18__9S20948C23[] = {
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20948C18D1Ev,_ZThn104_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20948C18D0Ev,_ZThn104_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C18__9S20948C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn208_N9S20948C18D1Ev,_ZThn120_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn208_N9S20948C18D0Ev,_ZThn120_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C18__9S20948C23[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__A1__9S20948C18__9S20948C23[] = {
  ABISELECT(-72,-40),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C21__9S20948C18__9S20948C23[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-52),
  ABISELECT(176,100),
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn240_N9S20948C18D1Ev,_ZThn140_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn240_N9S20948C18D0Ev,_ZThn140_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C18__9S20948C23[] = {
  ABISELECT(-240,-140),
  0,
  ABISELECT(-272,-152),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C21__9S20948C18__9S20948C23[] = {
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__9S20948C23[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C21__A4__9S20948C18__9S20948C23[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn256_N9S20948C18D1Ev,_ZThn148_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn256_N9S20948C18D0Ev,_ZThn148_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C18__9S20948C23[] = {
  ABISELECT(-288,-160),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-256,-148),
  ABISELECT(-80,-44),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__9S20948C23[] = {
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C18__9S20948C23[] = {
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C20D1Ev();
extern void _ZN9S20948C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C23[] = {
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C23[] = {
  ABISELECT(-248,-136),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C20__9S20948C23[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C20__9S20948C23[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C20__9S20948C23[] = {
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C23[] = {
  ABISELECT(-272,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C23[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C5D1Ev,_ZThn52_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C5D0Ev,_ZThn52_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__A1__9S20948C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C23[] = {
  ABISELECT(-288,-160),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C13__A1__9S20948C23[] = {
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C13__A1__9S20948C23[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A1__9S20948C23[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A1__9S20948C23[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C23[] = {
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C13__A5__9S20948C23[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A5__9S20948C23[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A4__9S20948C23[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C13__A1__9S20948C23[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C13__A1__9S20948C23[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C13__A1__9S20948C23[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13__A1__9S20948C23[] = {
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
static  VTT_ENTRY vtt_S20948C23[] = {
  {&(_ZTV9S20948C23[14]),  14,139},
  {&(_ZTV9S20948C23[14]),  14,139},
  {&(_ZTV9S20948C23[107]),  107,139},
  {&(_ZTV9S20948C23[32]),  32,139},
  {&(_ZTV9S20948C23[90]),  90,139},
  {&(_ZTV9S20948C23[37]),  37,139},
  {&(_ZTV9S20948C23[99]),  99,139},
  {&(_ZTV9S20948C23[107]),  107,139},
  {&(_ZTV9S20948C23[43]),  43,139},
  {&(_ZTV9S20948C23[55]),  55,139},
  {&(_ZTV9S20948C23[115]),  115,139},
  {&(_ZTV9S20948C23[66]),  66,139},
  {&(_ZTV9S20948C23[66]),  66,139},
  {&(_ZTV9S20948C23[70]),  70,139},
  {&(_ZTV9S20948C23[77]),  77,139},
  {&(_ZTV9S20948C23[84]),  84,139},
  {&(_ZTV9S20948C23[125]),  125,139},
  {&(_ZTV9S20948C23[129]),  129,139},
  {&(_ZTV9S20948C23[136]),  136,139},
  {&(_tg__ZTV9S20948C18__9S20948C23[11]),  11,14},
  {&(_tg__ZTV9S20948C199S20948C18__9S20948C23[6]),  6,8},
  {&(_tg__ZTV8S20948C49S20948C199S20948C18__9S20948C23[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C49S20948C199S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C199S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C199S20948C18__9S20948C23[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A1__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C18__A1__9S20948C23[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A1__9S20948C23[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A1__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C219S20948C18__9S20948C23[9]),  9,13},
  {&(_tg__ZTV9S20948C169S20948C219S20948C18__A2__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A2__9S20948C23[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A2__9S20948C23[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A2__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C139S20948C219S20948C18__9S20948C23[6]),  6,8},
  {&(_tg__ZTV9S20948C149S20948C139S20948C219S20948C18__9S20948C23[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A4__9S20948C23[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A4__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C10__9S20948C219S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C219S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV9S20948C13__9S20948C219S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20948C219S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C219S20948C18__9S20948C23[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C18__9S20948C23[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C18__9S20948C23[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C16__A1__9S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C21__9S20948C18__9S20948C23[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C21__A4__9S20948C18__9S20948C23[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C18__9S20948C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__9S20948C23[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C18__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C20__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__9S20948C23[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__9S20948C23[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C23[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C20__9S20948C23[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C20__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C16__9S20948C20__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C10__9S20948C23[3]),  3,6},
  {&(_tg__ZTV8S20948C5__A1__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__A1__9S20948C23[3]),  3,5},
  {&(_tg__ZTV9S20948C13__A1__9S20948C23[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C13__A1__9S20948C23[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C13__A1__9S20948C23[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A1__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A1__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C23[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__A5__9S20948C23[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A5__9S20948C23[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A4__9S20948C23[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C13__A1__9S20948C23[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C13__A1__9S20948C23[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C13__A1__9S20948C23[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C13__A1__9S20948C23[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20948C23[];
extern  VTBL_ENTRY _ZTV9S20948C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C23[];
static VTBL_ENTRY alt_thunk_names12[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20948C18D0Ev,_ZThn148_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20948C18D1Ev,_ZThn148_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C18D0Ev,_ZThn140_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C18D1Ev,_ZThn140_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C18D0Ev,_ZThn120_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C18D1Ev,_ZThn120_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C18D0Ev,_ZThn104_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C18D1Ev,_ZThn104_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C21D0Ev,_ZThn64_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C21D1Ev,_ZThn64_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C21D0Ev,_ZThn100_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C21D1Ev,_ZThn100_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C13D0Ev,_ZThn52_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C13D1Ev,_ZThn52_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C14D0Ev,_ZThn52_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20948C14D1Ev,_ZThn52_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C19D0Ev,_ZThn120_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C19D1Ev,_ZThn120_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C19D0Ev,_ZThn104_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20948C19D1Ev,_ZThn104_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C4D0Ev,_ZThn104_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C4D1Ev,_ZThn104_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C5D0Ev,_ZThn52_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C5D0Ev,_ZThn104_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C5D1Ev,_ZThn52_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20948C5D1Ev,_ZThn104_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20948C23D0Ev,_ZThn152_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20948C23D1Ev,_ZThn152_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C23D0Ev,_ZThn132_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C23D1Ev,_ZThn132_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C23D0Ev,_ZThn116_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C23D1Ev,_ZThn116_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20948C23D0Ev,_ZThn160_N9S20948C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C23D0Ev,_ZThn64_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20948C23D1Ev,_ZThn160_N9S20948C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C23D1Ev,_ZThn64_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C23D0Ev,_ZThn12_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C23D1Ev,_ZThn12_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C23 = {  "S20948C23", // class name
  bases_S20948C23, 51,
  &(vtc_S20948C23[0]), // expected_vtbl_contents
  &(vtt_S20948C23[0]), // expected_vtt_contents
  ABISELECT(368,204), // object size
  NSPAIRA(_ZTI9S20948C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20948C23),139, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20948C23),98, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names12,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C2  : virtual S20948C3 , S20948C12 , S20948C18 , S20948C22 , virtual S20948C23 {
  ~S20948C2(); // tgen
  S20948C2(); // tgen
};
//SIG(-1 S20948C2) C1{ VBC2{ VBC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC8{ v1} VBC5} VBC9{ BC8 VBC10{ m} vd Fi:23} VBC8 BC11{ BC7 VBC4 VBC5 vd} BC12{ BC13{ BC5 BC14{ BC10 FC5 FC10} VBC4 VBC8 Fp} BC14 BC6 BC15{ BC16{ VBC8 vd} VBC5 vd FC7}} vd} BC11 BC17{ VBC14 BC18{ VBC8 BC3 VBC19{ BC5 VBC6 BC8 BC15 vd Fi} BC7 vd Fi} BC15 BC20{ VBC9 BC15 BC12 BC16 vd v2} VBC12 vd v3} BC21{ VBC14 VBC3 BC7 BC8 Fp} VBC22{ VBC23{ BC8} VBC8 VBC17 Fl[2]}}


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

static void Test_S20948C2()
{
  extern Class_Descriptor cd_S20948C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,102)];
    init_test(&cd_S20948C2, buf);
    S20948C2 *dp, &lv = *(dp=new (buf) S20948C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,404), "sizeof(S20948C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C2)");
    /*is_ambiguous_... S20948C2::S20948C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*), ABISELECT(304,184), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*), ABISELECT(336,200), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(336,200), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(336,200), "S20948C2");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C20*), ABISELECT(336,200), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(336,200), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C4*), ABISELECT(304,184), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C4*), ABISELECT(312,188), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*), ABISELECT(320,196), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*), 0, "S20948C2");
    /*is_ambiguous_... S20948C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C12*)(S20948C3*), 0, "S20948C2");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C3*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C12*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*)(S20948C19*)(S20948C18*), 0, "S20948C2");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C20*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C18*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C21*)(S20948C18*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*)(S20948C19*)(S20948C18*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C18*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C21*)(S20948C18*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), 0, "S20948C2");
    check_base_class_offset(lv, (S20948C4*)(S20948C3*), ABISELECT(304,184), "S20948C2");
    check_base_class_offset(lv, (S20948C4*)(S20948C22*), ABISELECT(304,184), "S20948C2");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C10*), ABISELECT(368,216), "S20948C2");
    check_base_class_offset(lv, (S9624C39*)(S20948C10*), 0, "S20948C2");
    check_base_class_offset(lv, (S20948C10*)(S20948C3*), ABISELECT(368,216), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C10*)(S20948C21*)(S20948C18*), ABISELECT(368,216), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C10*)(S20948C21*)(S20948C18*), ABISELECT(368,216), "S20948C2");
    /*is_ambiguous_... S20948C3::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C3*), ABISELECT(288,172), "S20948C2");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(288,172), "S20948C2");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C19*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C23::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C23*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C19*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(288,172), "S20948C2");
    check_base_class_offset(lv, (S20948C8*)(S20948C12*)(S20948C3*), ABISELECT(216,132), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*), ABISELECT(208,128), "S20948C2");
    check_base_class_offset(lv, (S20948C5*)(S20948C12*)(S20948C3*), ABISELECT(208,128), "S20948C2");
    check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(208,128), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C12*), ABISELECT(208,128), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(208,128), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*), ABISELECT(208,128), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(208,128), "S20948C2");
    check_base_class_offset(lv, (S20948C12*)(S20948C3*), ABISELECT(208,128), "S20948C2");
    /*is_ambiguous_... S20948C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(232,144), "S20948C2");
    check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(233,145), "S20948C2");
    check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(233,145), "S20948C2");
    check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(224,140), "S20948C2");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C3*), ABISELECT(248,152), "S20948C2");
    /*is_ambiguous_... S20948C13::S20948C15 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C3*), ABISELECT(248,152), "S20948C2");
    /*is_ambiguous_... S20948C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C3*), ABISELECT(256,156), "S20948C2");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(288,172), "S20948C2");
    check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(288,172), "S20948C2");
    check_base_class_offset(lv, (S20948C13*)(S20948C3*), ABISELECT(224,140), "S20948C2");
    check_base_class_offset(lv, (S20948C3*), ABISELECT(208,128), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C12*), ABISELECT(8,4), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S20948C12*), 0, "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(379,223), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C18*), ABISELECT(379,223), "S20948C2");
    check_base_class_offset(lv, (S20948C15*)(S20948C22*), ABISELECT(379,223), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C18*), ABISELECT(379,223), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(16,12), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(16,12), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(24,16), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(32,24), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(16,12), "S20948C2");
    /*is_ambiguous_... S20948C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C20*), ABISELECT(384,228), "S20948C2");
    /*is_ambiguous_... S20948C20::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C20*), ABISELECT(384,228), "S20948C2");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(392,232), "S20948C2");
    check_base_class_offset(lv, (S20948C16*)(S20948C20*), ABISELECT(392,232), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C20*)(S20948C19*)(S20948C18*), ABISELECT(384,228), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C20*)(S20948C19*)(S20948C18*), ABISELECT(384,228), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C19*)(S20948C18*), ABISELECT(40,28), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C19*)(S20948C18*), ABISELECT(16,12), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(56,40), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C18*), ABISELECT(56,40), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(80,52), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(80,52), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(104,68), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(105,69), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(105,69), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(96,64), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(120,76), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(120,76), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(128,80), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(160,96), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(160,96), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(96,64), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(176,108), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C21*)(S20948C18*), ABISELECT(80,52), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*), ABISELECT(424,252), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(425,253), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(425,253), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*), ABISELECT(416,248), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*), ABISELECT(440,260), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*), ABISELECT(440,260), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*), ABISELECT(448,264), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(480,280), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*), ABISELECT(480,280), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C18*), ABISELECT(416,248), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C18*), ABISELECT(416,248), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C18*), ABISELECT(16,12), "S20948C2");
    /*is_ambiguous_... S20948C22::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C22*), ABISELECT(192,116), "S20948C2");
    /*is_ambiguous_... S20948C22::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C22*), ABISELECT(184,112), "S20948C2");
    check_base_class_offset(lv, (S20948C22*), ABISELECT(184,112), "S20948C2");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C24_nt*), ABISELECT(496,292), "S20948C2");
    check_base_class_offset(lv, (S20948C24_nt*)(S20948C23*), ABISELECT(496,292), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(528,304), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(528,304), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(536,308), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(544,316), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(528,304), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C19*)(S20948C18*), ABISELECT(552,320), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C19*)(S20948C18*), ABISELECT(528,304), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(568,332), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C18*), ABISELECT(568,332), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(592,344), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(592,344), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(616,360), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(617,361), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(617,361), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(608,356), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(632,368), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(632,368), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(640,372), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(672,388), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(672,388), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(608,356), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(688,400), "S20948C2");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C21*)(S20948C18*), ABISELECT(592,344), "S20948C2");
    check_base_class_offset(lv, (S20948C18*)(S20948C23*), ABISELECT(528,304), "S20948C2");
    check_base_class_offset(lv, (S20948C23*), ABISELECT(496,292), "S20948C2");
    test_class_info(&lv, &cd_S20948C2);
    dp->~S20948C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C2(Test_S20948C2, "S20948C2", ABISELECT(704,404));

#else // __cplusplus

extern void _ZN8S20948C2C1Ev();
extern void _ZN8S20948C2D1Ev();
Name_Map name_map_S20948C2[] = {
  NSPAIR(_ZN8S20948C2C1Ev),
  NSPAIR(_ZN8S20948C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C10;
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C12;
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C3;
extern VTBL_ENTRY _ZTI8S20948C3[];
extern  VTBL_ENTRY _ZTV8S20948C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C12;
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C20;
extern VTBL_ENTRY _ZTI9S20948C20[];
extern  VTBL_ENTRY _ZTV9S20948C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C19;
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C21;
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C18;
extern VTBL_ENTRY _ZTI9S20948C18[];
extern  VTBL_ENTRY _ZTV9S20948C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C18[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C22;
extern VTBL_ENTRY _ZTI9S20948C22[];
extern  VTBL_ENTRY _ZTV9S20948C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C22[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C24_nt;
extern VTBL_ENTRY _ZTI12S20948C24_nt[];
extern  VTBL_ENTRY _ZTV12S20948C24_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C19;
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C21;
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
extern Class_Descriptor cd_S20948C18;
extern VTBL_ENTRY _ZTI9S20948C18[];
extern  VTBL_ENTRY _ZTV9S20948C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C18[];
extern Class_Descriptor cd_S20948C23;
extern VTBL_ENTRY _ZTI9S20948C23[];
extern  VTBL_ENTRY _ZTV9S20948C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C23[];
static Base_Class bases_S20948C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(304,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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(336,200), //bcp->offset
    138, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20948C5,    ABISELECT(304,184), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(312,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
    6, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(320,196), //bcp->offset
    135, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C4,    ABISELECT(304,184), //bcp->offset
    127, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20948C9_nt,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C10,    ABISELECT(368,216), //bcp->offset
    143, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20948C9_nt,    ABISELECT(288,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20948C12,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(233,145), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(233,145), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C14,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(248,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
    20, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(248,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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(256,156), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(288,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(288,172), //bcp->offset
    119, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(224,140), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20948C3,    ABISELECT(208,128), //bcp->offset
    94, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C12,    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
    44, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(379,223), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(379,223), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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
    31, //immediately_derived
  0, 0},
  {&cd_S20948C5,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    34, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(32,24), //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
    46, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C4,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(384,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
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(392,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(392,232), //bcp->offset
    161, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C20,    ABISELECT(384,228), //bcp->offset
    151, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    41, //immediately_derived
  0, 0},
  {&cd_S20948C19,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(56,40), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(105,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
    48, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(105,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
    49, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,80), //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
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(160,96), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(96,64), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(176,108), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20948C21,    ABISELECT(80,52), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(424,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
    61, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(425,253), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(425,253), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(440,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
    63, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(440,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
    67, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(448,264), //bcp->offset
    178, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(480,280), //bcp->offset
    182, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(416,248), //bcp->offset
    169, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S20948C18,    ABISELECT(16,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C8,    ABISELECT(192,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
    71, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20948C22,    ABISELECT(184,112), //bcp->offset
    85, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C9_nt,    ABISELECT(496,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
    25, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S20948C24_nt,    ABISELECT(496,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(536,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
    78, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(544,316), //bcp->offset
    226, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20948C4,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    170, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(552,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
    80, //immediately_derived
  0, 0},
  {&cd_S20948C19,    ABISELECT(528,304), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(568,332), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(568,332), //bcp->offset
    229, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(592,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(592,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(616,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
    88, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(617,361), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(617,361), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(608,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(632,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
    90, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(632,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
    94, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(640,372), //bcp->offset
    259, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(672,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    193, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(672,388), //bcp->offset
    263, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(608,356), //bcp->offset
    250, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(688,400), //bcp->offset
    271, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    200, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20948C21,    ABISELECT(592,344), //bcp->offset
    237, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20948C18,    ABISELECT(528,304), //bcp->offset
    208, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S20948C23,    ABISELECT(496,292), //bcp->offset
    190, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20948C2[];
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void _ZN8S20948C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void _ZN8S20948C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn16_N8S20948C2D1Ev,_ZThn12_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C2D0Ev,_ZThn12_N8S20948C2D0Ev)();
extern void _ZN9S20948C182v3Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn56_N8S20948C2D1Ev,_ZThn40_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20948C2D0Ev,_ZThn40_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C2D1Ev,_ZThn52_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C2D0Ev,_ZThn52_N8S20948C2D0Ev)();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C2D1Ev,_ZThn64_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C2D0Ev,_ZThn64_N8S20948C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn128_N8S20948C2D1Ev,_ZThn80_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C2D0Ev,_ZThn80_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N8S20948C2D1Ev,_ZThn96_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20948C2D0Ev,_ZThn96_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn176_N8S20948C2D1Ev,_ZThn108_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20948C2D0Ev,_ZThn108_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn184_N8S20948C2D1Ev,_ZThn112_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S20948C2D0Ev,_ZThn112_N8S20948C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20948C2D1Ev,_ZThn128_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20948C2D0Ev,_ZThn128_N8S20948C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S20948C2D1Ev,_ZThn140_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S20948C2D0Ev,_ZThn140_N8S20948C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N8S20948C2D1Ev,_ZTvn28_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20948C2D0Ev,_ZTvn28_n16_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20948C2D1Ev,_ZTvn44_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20948C2D0Ev,_ZTvn44_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S20948C2D1Ev,_ZThn184_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S20948C2D0Ev,_ZThn184_N8S20948C2D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20948C2D1Ev,_ZTv0_n12_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20948C2D1Ev,_ZThn200_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C2D0Ev,_ZTv0_n12_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20948C2D0Ev,_ZThn200_N8S20948C2D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S20948C2D1Ev,_ZThn216_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S20948C2D0Ev,_ZThn216_N8S20948C2D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20948C2D1Ev,_ZTv0_n28_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S20948C2D1Ev,_ZThn228_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20948C2D0Ev,_ZTv0_n28_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S20948C2D0Ev,_ZThn228_N8S20948C2D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20948C2D1Ev,_ZTvn4_n28_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20948C2D0Ev,_ZTvn4_n28_N8S20948C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn416_N8S20948C2D1Ev,_ZThn248_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn416_N8S20948C2D0Ev,_ZThn248_N8S20948C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S20948C2D1Ev,_ZTvn16_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20948C2D0Ev,_ZTvn16_n16_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20948C2D1Ev,_ZTvn32_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20948C2D0Ev,_ZTvn32_n16_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20948C2D1Ev,_ZTv0_n60_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn496_N8S20948C2D1Ev,_ZThn292_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20948C2D0Ev,_ZTv0_n60_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn496_N8S20948C2D0Ev,_ZThn292_N8S20948C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20948C2D1Ev,_ZTv0_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S20948C2D1Ev,_ZThn304_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20948C2D0Ev,_ZTv0_n48_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S20948C2D0Ev,_ZThn304_N8S20948C2D0Ev)() __attribute__((weak));
extern void _ZN9S20948C182v3Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20948C2D1Ev,_ZTvn28_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20948C2D0Ev,_ZTvn28_n48_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20948C2D1Ev,_ZTvn40_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20948C2D0Ev,_ZTvn40_n48_N8S20948C2D0Ev)();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20948C2D1Ev,_ZThn356_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20948C2D0Ev,_ZThn356_N8S20948C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N8S20948C2D1Ev,_ZTvn68_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20948C2D0Ev,_ZTvn68_n48_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20948C2D1Ev,_ZTvn84_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20948C2D0Ev,_ZTvn84_n48_N8S20948C2D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20948C2D1Ev,_ZTvn96_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20948C2D0Ev,_ZTvn96_n48_N8S20948C2D0Ev)();
static  VTBL_ENTRY vtc_S20948C2[] = {
  ABISELECT(528,304),
  ABISELECT(496,292),
  ABISELECT(496,292),
  ABISELECT(416,248),
  ABISELECT(384,228),
  ABISELECT(379,223),
  ABISELECT(288,172),
  0,
  ABISELECT(368,216),
  ABISELECT(304,184),
  ABISELECT(208,128),
  0,
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-16,-12),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20948C2D1Ev,_ZThn12_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20948C2D0Ev,_ZThn12_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-56,-40),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20948C2D1Ev,_ZThn40_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20948C2D0Ev,_ZThn40_N8S20948C2D0Ev),
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-80,-52),
  ABISELECT(288,164),
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C2D1Ev,_ZThn52_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C2D0Ev,_ZThn52_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-96,-64),
  ABISELECT(240,136),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S20948C2D1Ev,_ZThn80_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S20948C2D0Ev,_ZThn80_N8S20948C2D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20948C2D1Ev,_ZThn96_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20948C2D0Ev,_ZThn96_N8S20948C2D0Ev),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20948C2D1Ev,_ZThn108_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20948C2D0Ev,_ZThn108_N8S20948C2D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20948C2D1Ev,_ZThn112_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20948C2D0Ev,_ZThn112_N8S20948C2D0Ev),
  ABISELECT(80,44),
  ABISELECT(-208,-128),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-208,-128),
  0,
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-224,-140),
  ABISELECT(112,60),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20948C2D1Ev,_ZTvn28_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20948C2D0Ev,_ZTvn28_n16_N8S20948C2D0Ev),
  ABISELECT(-288,-172),
  0,
  0,
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C2D1Ev,_ZTvn44_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C2D0Ev,_ZTvn44_n16_N8S20948C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C2D1Ev,_ZTv0_n12_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C2D0Ev,_ZTv0_n12_N8S20948C2D0Ev),
  ABISELECT(-368,-216),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev),
  ABISELECT(-384,-228),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20948C2D1Ev,_ZTv0_n28_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20948C2D0Ev,_ZTv0_n28_N8S20948C2D0Ev),
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20948C2D1Ev,_ZTvn4_n28_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20948C2D0Ev,_ZTvn4_n28_N8S20948C2D0Ev),
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-416,-248),
  ABISELECT(-80,-48),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20948C2D1Ev,_ZTvn16_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20948C2D0Ev,_ZTvn16_n16_N8S20948C2D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20948C2D1Ev,_ZTvn32_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20948C2D0Ev,_ZTvn32_n16_N8S20948C2D0Ev),
  ABISELECT(-496,-292),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-496,-292),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-496,-292),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,12),
  ABISELECT(-208,-120),
  0,
  0,
  ABISELECT(-496,-292),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20948C2D1Ev,_ZTv0_n60_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20948C2D0Ev,_ZTv0_n60_N8S20948C2D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-528,-304),
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-528,-304),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-528,-304),
  ABISELECT(-192,-104),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20948C2D1Ev,_ZTv0_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20948C2D0Ev,_ZTv0_n48_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
  ABISELECT(-544,-316),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-568,-332),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-568,-332),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20948C2D1Ev,_ZTvn28_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20948C2D0Ev,_ZTvn28_n48_N8S20948C2D0Ev),
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-592,-344),
  ABISELECT(-224,-128),
  ABISELECT(-592,-344),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-592,-344),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20948C2D1Ev,_ZTvn40_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20948C2D0Ev,_ZTvn40_n48_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(-608,-356),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-608,-356),
  ABISELECT(-272,-156),
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
  ABISELECT(-640,-372),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20948C2D1Ev,_ZTvn68_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20948C2D0Ev,_ZTvn68_n48_N8S20948C2D0Ev),
  ABISELECT(-672,-388),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-672,-388),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20948C2D1Ev,_ZTvn84_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20948C2D0Ev,_ZTvn84_n48_N8S20948C2D0Ev),
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-688,-400),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20948C2D1Ev,_ZTvn96_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20948C2D0Ev,_ZTvn96_n48_N8S20948C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20948C2[];
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void _ZN9S20948C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void _ZN9S20948C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C12__A1__8S20948C2[] = {
  0,
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn208_N9S20948C12D1Ev,_ZThn128_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn208_N9S20948C12D0Ev,_ZThn128_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C12__A1__8S20948C2[] = {
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S20948C12D1Ev,_ZThn200_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S20948C12D0Ev,_ZThn200_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C12__A1__8S20948C2[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern void _ZN9S20948C18D1Ev();
extern void _ZN9S20948C18D0Ev();
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__A__8S20948C2[] = {
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-16,-12),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN9S20948C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C199S20948C18__8S20948C2[] = {
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C49S20948C199S20948C18__A1__8S20948C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C49S20948C199S20948C18__A2__8S20948C2[] = {
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn320_N8S20948C5D1Ev,_ZThn188_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn320_N8S20948C5D0Ev,_ZThn188_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__A2__8S20948C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S20948C4D1Ev,_ZThn188_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S20948C4D0Ev,_ZThn188_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__A1__8S20948C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C199S20948C18__8S20948C2[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S20948C19D1Ev,_ZThn188_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S20948C19D0Ev,_ZThn188_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C199S20948C18__8S20948C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn368_N9S20948C19D1Ev,_ZThn216_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn368_N9S20948C19D0Ev,_ZThn216_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C199S20948C18__8S20948C2[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A2__8S20948C2[] = {
  ABISELECT(-56,-40),
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C18__A2__8S20948C2[] = {
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A2__8S20948C2[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A2__8S20948C2[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-80,-52),
  ABISELECT(288,164),
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A3__8S20948C2[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A3__8S20948C2[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn64_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn64_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S20948C14D1Ev,_ZThn136_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn240_N9S20948C14D0Ev,_ZThn136_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn64_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn64_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn240_N9S20948C13D1Ev,_ZThn136_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn240_N9S20948C13D0Ev,_ZThn136_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A5__8S20948C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A5__8S20948C2[] = {
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn288_N9S20948C21D1Ev,_ZThn164_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn288_N9S20948C21D0Ev,_ZThn164_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(-288,-164),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__8S20948C2[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-16,-12),
  ABISELECT(240,136),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S20948C21D1Ev,_ZThn76_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S20948C21D0Ev,_ZThn76_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(-128,-76),
  ABISELECT(128,72),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn256_N9S20948C21D1Ev,_ZThn148_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn256_N9S20948C21D0Ev,_ZThn148_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C219S20948C18__8S20948C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C18__A__8S20948C2[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn320_N9S20948C18D1Ev,_ZThn188_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn320_N9S20948C18D0Ev,_ZThn188_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S20948C18D1Ev,_ZThn216_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S20948C18D0Ev,_ZThn216_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__A1__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-56,-40),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C21__9S20948C18__A__8S20948C2[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-80,-52),
  ABISELECT(288,164),
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn352_N9S20948C18D1Ev,_ZThn204_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn352_N9S20948C18D0Ev,_ZThn204_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-352,-204),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C21__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-80,-52),
  ABISELECT(240,136),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S20948C18D1Ev,_ZThn116_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S20948C18D0Ev,_ZThn116_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-192,-116),
  ABISELECT(128,72),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C21__A4__9S20948C18__A__8S20948C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn400_N9S20948C18D1Ev,_ZThn236_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn400_N9S20948C18D0Ev,_ZThn236_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-400,-236),
  ABISELECT(-80,-48),
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C18__A__8S20948C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C22D1Ev();
extern void _ZN9S20948C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C22__8S20948C2[] = {
  ABISELECT(-184,-112),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C22D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev)();
extern void ABISELECT(_ZThn120_N9S20948C22D1Ev,_ZThn72_N9S20948C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev)();
extern void ABISELECT(_ZThn120_N9S20948C22D0Ev,_ZThn72_N9S20948C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C4__9S20948C22__8S20948C2[] = {
  ABISELECT(16,12),
  ABISELECT(-120,-72),
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev)();
extern void ABISELECT(_ZThn152_N9S20948C22D1Ev,_ZThn88_N9S20948C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev)();
extern void ABISELECT(_ZThn152_N9S20948C22D0Ev,_ZThn88_N9S20948C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C22__8S20948C2[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C4__9S20948C22__8S20948C2[] = {
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void _ZN8S20948C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void _ZN8S20948C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C3__8S20948C2[] = {
  ABISELECT(80,44),
  ABISELECT(-208,-128),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void _ZN9S20948C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void _ZN9S20948C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C128S20948C3__8S20948C2[] = {
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S20948C12D1Ev,_ZThn72_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S20948C12D0Ev,_ZThn72_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C128S20948C3__8S20948C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(-224,-140),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn60_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn60_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C138S20948C3__8S20948C2[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(-288,-172),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C138S20948C3__8S20948C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn60_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn60_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C138S20948C3__8S20948C2[] = {
  ABISELECT(-288,-172),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C3D1Ev,_ZThn56_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C3D0Ev,_ZThn56_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C3__8S20948C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C3D1Ev,_ZThn72_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S20948C3D0Ev,_ZThn72_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C3__8S20948C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C4__8S20948C3__8S20948C2[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20948C3D1Ev,_ZThn88_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20948C3D0Ev,_ZThn88_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C3__8S20948C2[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__8S20948C3__8S20948C2[] = {
  ABISELECT(-288,-172),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__8S20948C3__8S20948C2[] = {
  ABISELECT(-224,-140),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C2[] = {
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C4__8S20948C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C4__8S20948C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C4__8S20948C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C2[] = {
  ABISELECT(-368,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__8S20948C2[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C5D1Ev,_ZThn72_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20948C5D0Ev,_ZThn72_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__A1__8S20948C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C20D1Ev();
extern void _ZN9S20948C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C20__8S20948C2[] = {
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__A1__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C20__A1__8S20948C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C20__A1__8S20948C2[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C20__A1__8S20948C2[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C20__8S20948C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C20__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C20__8S20948C2[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A2__8S20948C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C13__A2__8S20948C2[] = {
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C13__A2__8S20948C2[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A2__8S20948C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A2__8S20948C2[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A5__8S20948C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C13__A6__8S20948C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A6__8S20948C2[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A5__8S20948C2[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C13__A2__8S20948C2[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C13__A2__8S20948C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C13__A2__8S20948C2[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13__A2__8S20948C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C23D1Ev();
extern void _ZN9S20948C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C23__8S20948C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-496,-292),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-496,-292),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,12),
  ABISELECT(-208,-120),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C23D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C23__8S20948C2[] = {
  0,
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C23D1Ev,_ZThn12_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S20948C23D0Ev,_ZThn12_N9S20948C23D0Ev)() __attribute__((weak));
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__9S20948C23__8S20948C2[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-12),
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-528,-304),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-528,-304),
  ABISELECT(-192,-104),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C23__8S20948C2[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C49S20948C199S20948C18__A2__9S20948C23__8S20948C2[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C23__8S20948C2[] = {
  ABISELECT(112,64),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C23D1Ev,_ZTvn4_n28_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C23D0Ev,_ZTvn4_n28_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C23__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C23D1Ev,_ZTvn4_n28_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C23D0Ev,_ZTvn4_n28_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20948C23D1Ev,_ZTvn28_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20948C23D0Ev,_ZTvn28_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A1__9S20948C23__8S20948C2[] = {
  ABISELECT(-568,-332),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20948C23D1Ev,_ZTvn28_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20948C23D0Ev,_ZTvn28_n48_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20948C23D1Ev,_ZTvn40_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20948C23D0Ev,_ZTvn40_n48_N9S20948C23D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__9S20948C23__8S20948C2[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-592,-344),
  ABISELECT(-224,-128),
  ABISELECT(-592,-344),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20948C23D1Ev,_ZTvn40_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20948C23D0Ev,_ZTvn40_n48_N9S20948C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C23__8S20948C2[] = {
  ABISELECT(128,76),
  0,
  ABISELECT(-368,-216),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C23D1Ev,_ZThn64_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C23D0Ev,_ZThn64_N9S20948C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23__8S20948C2[] = {
  ABISELECT(-608,-356),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-112,-64),
  ABISELECT(-272,-156),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C23__8S20948C2[] = {
  ABISELECT(288,164),
  ABISELECT(128,72),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20948C23D1Ev,_ZTvn68_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20948C23D0Ev,_ZTvn68_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C139S20948C219S20948C18__A1__9S20948C23__8S20948C2[] = {
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20948C23D1Ev,_ZTvn68_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20948C23D0Ev,_ZTvn68_n48_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20948C23D1Ev,_ZTvn84_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20948C23D0Ev,_ZTvn84_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23__8S20948C2[] = {
  ABISELECT(-672,-388),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20948C23D1Ev,_ZTvn84_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20948C23D0Ev,_ZTvn84_n48_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20948C23D1Ev,_ZTvn96_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20948C23D0Ev,_ZTvn96_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A4__9S20948C23__8S20948C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20948C23D1Ev,_ZTvn96_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20948C23D0Ev,_ZTvn96_n48_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C23__8S20948C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(80,44),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C23D1Ev,_ZTvn16_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C23D0Ev,_ZTvn16_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C23__8S20948C2[] = {
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C23D1Ev,_ZTvn16_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C23D0Ev,_ZTvn16_n16_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C23D1Ev,_ZTvn32_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C23D0Ev,_ZTvn32_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C23__8S20948C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C23D1Ev,_ZTvn32_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C23D0Ev,_ZTvn32_n16_N9S20948C23D0Ev),
};
extern void _ZN9S20948C18D1Ev();
extern void _ZN9S20948C18D0Ev();
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-528,-304),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-528,-304),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN9S20948C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C199S20948C18__A1__8S20948C2[] = {
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-528,-304),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C49S20948C199S20948C18__A2__8S20948C2[] = {
  ABISELECT(-528,-304),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C2[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C2[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__A2__8S20948C2[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C199S20948C18__A1__8S20948C2[] = {
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C199S20948C18__A1__8S20948C2[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C199S20948C18__A1__8S20948C2[] = {
  ABISELECT(144,76),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__A1__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A6__8S20948C2[] = {
  ABISELECT(-568,-332),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C18__A7__8S20948C2[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A7__8S20948C2[] = {
  0,
  ABISELECT(280,160),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A6__8S20948C2[] = {
  0,
  ABISELECT(280,160),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-592,-344),
  ABISELECT(-224,-128),
  ABISELECT(-592,-344),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C219S20948C18__A7__8S20948C2[] = {
  ABISELECT(-592,-344),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C2[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C2[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A7__8S20948C2[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(-608,-356),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  0,
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  0,
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(400,228),
  ABISELECT(128,72),
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  0,
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C2[] = {
  ABISELECT(-672,-388),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C2[] = {
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C2[] = {
  0,
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C2[] = {
  0,
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(400,228),
  ABISELECT(128,72),
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  0,
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__A3__8S20948C2[] = {
  ABISELECT(-672,-388),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A10__8S20948C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A10__8S20948C2[] = {
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(224,128),
  0,
  ABISELECT(-368,-216),
  ABISELECT(224,128),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__A1__8S20948C2[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-608,-356),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-16,-12),
  ABISELECT(-272,-156),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(384,216),
  ABISELECT(128,72),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-672,-388),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C219S20948C18__A1__8S20948C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C18__A1__8S20948C2[] = {
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(144,76),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__A1__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-568,-332),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C21__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-592,-344),
  ABISELECT(-224,-128),
  ABISELECT(-592,-344),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(160,88),
  0,
  ABISELECT(-368,-216),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C21__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-608,-356),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-80,-52),
  ABISELECT(-272,-156),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(320,176),
  ABISELECT(128,72),
  ABISELECT(320,176),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-672,-388),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C21__A4__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(112,56),
  ABISELECT(-80,-48),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C18__A1__8S20948C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev),
};
static  VTT_ENTRY vtt_S20948C2[] = {
  {&(_ZTV8S20948C2[17]),  17,278},
  {&(_tg__ZTV9S20948C12__A1__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C12__A1__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C12__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C18__A__8S20948C2[11]),  11,14},
  {&(_tg__ZTV9S20948C199S20948C18__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C49S20948C199S20948C18__A1__8S20948C2[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C49S20948C199S20948C18__A2__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__A2__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C199S20948C18__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C199S20948C18__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C199S20948C18__8S20948C2[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A2__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C18__A2__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A2__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A2__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C219S20948C18__8S20948C2[9]),  9,13},
  {&(_tg__ZTV9S20948C169S20948C219S20948C18__A3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A3__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A3__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A3__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__A1__8S20948C2[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C139S20948C219S20948C18__A1__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A5__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A5__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C10__9S20948C219S20948C18__8S20948C2[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C219S20948C18__8S20948C2[7]),  7,9},
  {&(_tg__ZTV8S20948C5__9S20948C219S20948C18__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C219S20948C18__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C219S20948C18__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C18__A__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C18__A__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C18__A__8S20948C2[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18__A__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C16__A1__9S20948C18__A__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C21__9S20948C18__A__8S20948C2[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C18__A__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18__A__8S20948C2[7]),  7,9},
  {&(_tg__ZTV8S20948C5__A1__9S20948C18__A__8S20948C2[4]),  4,6},
  {&(_tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__A__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C21__A4__9S20948C18__A__8S20948C2[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C18__A__8S20948C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__A__8S20948C2[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C18__A__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C22__8S20948C2[6]),  6,9},
  {&(_tg__ZTV8S20948C4__9S20948C22__8S20948C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C22__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C4__9S20948C22__8S20948C2[2]),  2,3},
  {&(_ZTV8S20948C2[104]),  104,278},
  {&(_ZTV8S20948C2[133]),  133,278},
  {&(_ZTV8S20948C2[141]),  141,278},
  {&(_ZTV8S20948C2[137]),  137,278},
  {&(_ZTV8S20948C2[148]),  148,278},
  {&(_ZTV8S20948C2[124]),  124,278},
  {&(_ZTV8S20948C2[104]),  104,278},
  {&(_ZTV8S20948C2[113]),  113,278},
  {&(_ZTV8S20948C2[117]),  117,278},
  {&(_ZTV8S20948C2[124]),  124,278},
  {&(_ZTV8S20948C2[30]),  30,278},
  {&(_ZTV8S20948C2[158]),  158,278},
  {&(_ZTV8S20948C2[166]),  166,278},
  {&(_ZTV8S20948C2[41]),  41,278},
  {&(_ZTV8S20948C2[53]),  53,278},
  {&(_ZTV8S20948C2[64]),  64,278},
  {&(_ZTV8S20948C2[75]),  75,278},
  {&(_ZTV8S20948C2[82]),  82,278},
  {&(_ZTV8S20948C2[176]),  176,278},
  {&(_ZTV8S20948C2[180]),  180,278},
  {&(_ZTV8S20948C2[187]),  187,278},
  {&(_ZTV8S20948C2[91]),  91,278},
  {&(_ZTV8S20948C2[205]),  205,278},
  {&(_ZTV8S20948C2[205]),  205,278},
  {&(_ZTV8S20948C2[223]),  223,278},
  {&(_ZTV8S20948C2[228]),  228,278},
  {&(_ZTV8S20948C2[234]),  234,278},
  {&(_ZTV8S20948C2[246]),  246,278},
  {&(_ZTV8S20948C2[257]),  257,278},
  {&(_ZTV8S20948C2[261]),  261,278},
  {&(_ZTV8S20948C2[268]),  268,278},
  {&(_ZTV8S20948C2[275]),  275,278},
  {&(_tg__ZTV8S20948C3__8S20948C2[10]),  10,12},
  {&(_tg__ZTV9S20948C128S20948C3__8S20948C2[6]),  6,8},
  {&(_tg__ZTV9S20948C128S20948C3__8S20948C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C128S20948C3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C138S20948C3__8S20948C2[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C138S20948C3__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C138S20948C3__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C138S20948C3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C138S20948C3__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C138S20948C3__8S20948C2[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C169S20948C138S20948C3__8S20948C2[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV8S20948C5__9S20948C138S20948C3__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C138S20948C3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C138S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C16__9S20948C138S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV8S20948C4__8S20948C3__8S20948C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20948C3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C4__8S20948C3__8S20948C2[2]),  2,3},
  {&(_tg__ZTV9S20948C10__8S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV8S20948C3__8S20948C2[10]),  10,12},
  {&(_tg__ZTV9S20948C13__8S20948C3__8S20948C2[7]),  7,9},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV8S20948C4__8S20948C2[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C4__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C4__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C4__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C10__8S20948C2[3]),  3,6},
  {&(_tg__ZTV8S20948C5__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C20__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C20__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__A1__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C20__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C20__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C20__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C20__8S20948C2[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C20__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C13__A2__8S20948C2[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C13__A2__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C13__A2__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A2__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A2__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C13__A5__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__A6__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A6__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A5__8S20948C2[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C13__A2__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C13__A2__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C13__A2__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C13__A2__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C23__8S20948C2[14]),  14,17},
  {&(_tg__ZTV9S20948C23__8S20948C2[14]),  14,17},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C23__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C18__9S20948C23__8S20948C2[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20948C23__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C49S20948C199S20948C18__A2__9S20948C23__8S20948C2[2]),  2,3},
  {&(_tg__ZTV9S20948C20__9S20948C23__8S20948C2[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C23__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A1__9S20948C23__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C219S20948C18__9S20948C23__8S20948C2[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C23__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23__8S20948C2[7]),  7,9},
  {&(_tg__ZTV8S20948C5__A1__9S20948C23__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20948C139S20948C219S20948C18__A1__9S20948C23__8S20948C2[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A4__9S20948C23__8S20948C2[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C23__8S20948C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C23__8S20948C2[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C23__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C18__A1__8S20948C2[11]),  11,14},
  {&(_tg__ZTV9S20948C199S20948C18__A1__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C49S20948C199S20948C18__A2__8S20948C2[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__A2__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C199S20948C18__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C199S20948C18__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C199S20948C18__A1__8S20948C2[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A6__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C18__A7__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A7__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A6__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C219S20948C18__A1__8S20948C2[9]),  9,13},
  {&(_tg__ZTV9S20948C169S20948C219S20948C18__A7__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A7__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__A3__8S20948C2[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C2[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C139S20948C219S20948C18__A3__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__A3__8S20948C2[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__A3__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__A3__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A10__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A10__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C10__9S20948C219S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C219S20948C18__A1__8S20948C2[7]),  7,9},
  {&(_tg__ZTV8S20948C5__9S20948C219S20948C18__A1__8S20948C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C219S20948C18__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C219S20948C18__A1__8S20948C2[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C18__A1__8S20948C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C18__A1__8S20948C2[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C18__A1__8S20948C2[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C16__A1__9S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C21__9S20948C18__A1__8S20948C2[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18__A1__8S20948C2[7]),  7,9},
  {&(_tg__ZTV8S20948C5__A1__9S20948C18__A1__8S20948C2[4]),  4,6},
  {&(_tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__A1__8S20948C2[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C21__A4__9S20948C18__A1__8S20948C2[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C18__A1__8S20948C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__A1__8S20948C2[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C18__A1__8S20948C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20948C2[];
extern  VTBL_ENTRY _ZTV8S20948C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C2[];
static VTBL_ENTRY alt_thunk_names13[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C23D0Ev,_ZThn64_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C23D1Ev,_ZThn64_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C23D0Ev,_ZThn12_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C23D1Ev,_ZThn12_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C3D0Ev,_ZThn72_N8S20948C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C3D1Ev,_ZThn72_N8S20948C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20948C3D0Ev,_ZThn88_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C3D0Ev,_ZThn56_N8S20948C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20948C3D1Ev,_ZThn88_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C3D1Ev,_ZThn56_N8S20948C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev),
  (VTBL_ENTRY)_ZN8S20948C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev),
  (VTBL_ENTRY)_ZN8S20948C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20948C22D0Ev,_ZThn88_N9S20948C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20948C22D1Ev,_ZThn88_N9S20948C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20948C22D0Ev,_ZThn72_N9S20948C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20948C22D1Ev,_ZThn72_N9S20948C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20948C18D0Ev,_ZThn236_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20948C18D0Ev,_ZThn116_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20948C18D1Ev,_ZThn236_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20948C18D1Ev,_ZThn116_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20948C18D0Ev,_ZThn204_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20948C18D1Ev,_ZThn204_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C18D0Ev,_ZThn216_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C18D1Ev,_ZThn216_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C18D0Ev,_ZThn188_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C18D1Ev,_ZThn188_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20948C21D0Ev,_ZThn148_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20948C21D1Ev,_ZThn148_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C21D0Ev,_ZThn76_N9S20948C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C21D1Ev,_ZThn76_N9S20948C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20948C21D0Ev,_ZThn164_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20948C21D1Ev,_ZThn164_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn60_N9S20948C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C13D0Ev,_ZThn136_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn60_N9S20948C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C13D1Ev,_ZThn136_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn60_N9S20948C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C14D0Ev,_ZThn136_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn60_N9S20948C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C14D1Ev,_ZThn136_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn64_N9S20948C14D0Ev),
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn64_N9S20948C14D1Ev),
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn64_N9S20948C13D0Ev),
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn64_N9S20948C13D1Ev),
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C19D0Ev,_ZThn216_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C19D1Ev,_ZThn216_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C19D0Ev,_ZThn188_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C19D1Ev,_ZThn188_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C4D0Ev,_ZThn188_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C4D1Ev,_ZThn188_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C5D0Ev,_ZThn72_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C5D0Ev,_ZThn188_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C5D1Ev,_ZThn72_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C5D1Ev,_ZThn188_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C12D0Ev,_ZThn72_N9S20948C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20948C12D0Ev,_ZThn200_N9S20948C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C12D1Ev,_ZThn72_N9S20948C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20948C12D1Ev,_ZThn200_N9S20948C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C12D0Ev,_ZThn128_N9S20948C12D0Ev),
  (VTBL_ENTRY)_ZN9S20948C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C12D1Ev,_ZThn128_N9S20948C12D1Ev),
  (VTBL_ENTRY)_ZN9S20948C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20948C2D0Ev,_ZTv0_n48_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20948C2D0Ev,_ZThn304_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20948C2D1Ev,_ZTv0_n48_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20948C2D1Ev,_ZThn304_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20948C2D0Ev,_ZTv0_n60_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20948C2D0Ev,_ZThn292_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20948C2D1Ev,_ZTv0_n60_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20948C2D1Ev,_ZThn292_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20948C2D0Ev,_ZTv0_n28_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20948C2D0Ev,_ZThn228_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20948C2D1Ev,_ZTv0_n28_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20948C2D1Ev,_ZThn228_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C2D0Ev,_ZTv0_n12_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20948C2D0Ev,_ZThn200_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C2D1Ev,_ZTv0_n12_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20948C2D1Ev,_ZThn200_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20948C2D0Ev,_ZThn216_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20948C2D0Ev,_ZThn184_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20948C2D1Ev,_ZThn216_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20948C2D1Ev,_ZThn184_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20948C2D0Ev,_ZThn356_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C2D0Ev,_ZThn248_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20948C2D0Ev,_ZThn140_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20948C2D0Ev,_ZThn128_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C2D0Ev,_ZThn64_N8S20948C2D0Ev),
  (VTBL_ENTRY)_ZN8S20948C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20948C2D1Ev,_ZThn356_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C2D1Ev,_ZThn248_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20948C2D1Ev,_ZThn140_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20948C2D1Ev,_ZThn128_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C2D1Ev,_ZThn64_N8S20948C2D1Ev),
  (VTBL_ENTRY)_ZN8S20948C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C2 = {  "S20948C2", // class name
  bases_S20948C2, 99,
  &(vtc_S20948C2[0]), // expected_vtbl_contents
  &(vtt_S20948C2[0]), // expected_vtt_contents
  ABISELECT(704,404), // object size
  NSPAIRA(_ZTI8S20948C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20948C2),278, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20948C2),222, //virtual table table var
  62, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names13,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20948C1  : virtual S20948C2 , S20948C3 , S20948C17 {
  int s20948c1f0;
  virtual  ~S20948C1(); // _ZN8S20948C1D2Ev
  S20948C1(); // tgen
};
//SIG(1 S20948C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ BC6{ m} VBC7{ vd m FD} vd} BC8{ m Fc[7]} BC9{ v1} VBC6} VBC10{ BC9 VBC11{ m} vd Fi:23} VBC9 BC12{ BC8 VBC5 VBC6 vd} BC13{ BC14{ BC6 BC15{ BC11 FC6 FC11} VBC5 VBC9 Fp} BC15 BC7 BC16{ BC17{ VBC9 vd} VBC6 vd FC8}} vd} BC12 BC18{ VBC15 BC19{ VBC9 BC4 VBC20{ BC6 VBC7 BC9 BC16 vd Fi} BC8 vd Fi} BC16 BC21{ VBC10 BC16 BC13 BC17 vd v2} VBC13 vd v3} BC22{ VBC15 VBC4 BC8 BC9 Fp} VBC23{ VBC24{ BC9} VBC9 VBC18 Fl[2]}} BC3 BC17 vd Fi}


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

static void Test_S20948C1()
{
  extern Class_Descriptor cd_S20948C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,118)];
    init_test(&cd_S20948C1, buf);
    S20948C1 *dp, &lv = *(dp=new (buf) S20948C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,468), "sizeof(S20948C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20948C1)");
    /*is_ambiguous_... S20948C1::S20948C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*), ABISELECT(416,248), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*), ABISELECT(448,264), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*), ABISELECT(448,264), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(448,264), "S20948C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20948C20*), ABISELECT(448,264), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(448,264), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C4*), ABISELECT(416,248), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C4*), ABISELECT(424,252), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C4 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*), ABISELECT(432,260), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C12*)(S20948C3*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C3*), 0, "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C12*)(S20948C2*), 0, "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), 0, "S20948C1");
    check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C20*), 0, "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C18*)(S20948C2*), 0, "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C21*)(S20948C18*)(S20948C2*), 0, "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C4*)(S20948C19*)(S20948C18*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C18*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C21*)(S20948C18*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C12*)(S20948C3*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C16*)(S20948C13*)(S20948C3*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C4*)(S20948C3*), ABISELECT(416,248), "S20948C1");
    check_base_class_offset(lv, (S20948C4*)(S20948C22*)(S20948C2*), ABISELECT(416,248), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C4*)(S20948C3*), ABISELECT(416,248), "S20948C1");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C10*), ABISELECT(480,280), "S20948C1");
    check_base_class_offset(lv, (S9624C39*)(S20948C10*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C10*)(S20948C3*), ABISELECT(480,280), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C10*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(480,280), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C10*)(S20948C21*)(S20948C18*), ABISELECT(480,280), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C10*)(S20948C3*), ABISELECT(480,280), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(400,236), "S20948C1");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C18*)(S20948C2*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C23::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C23*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C19*)(S20948C18*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*)(S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C17*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C12*)(S20948C3*), ABISELECT(328,196), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C12*)(S20948C3*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C12*)(S20948C2*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C12*)(S20948C3*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C12*)(S20948C3*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(344,208), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(345,209), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(345,209), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(336,204), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C3*), ABISELECT(360,216), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C3*), ABISELECT(360,216), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C3*), ABISELECT(368,220), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(400,236), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C3*), ABISELECT(336,204), "S20948C1");
    check_base_class_offset(lv, (S20948C3*)(S20948C2*), ABISELECT(320,192), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C12*)(S20948C2*), ABISELECT(120,68), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C12 */ AMB_check_base_class_offset(lv, (S20948C12*)(S20948C2*), ABISELECT(112,64), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*), ABISELECT(491,287), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C18*)(S20948C2*), ABISELECT(491,287), "S20948C1");
    check_base_class_offset(lv, (S20948C15*)(S20948C22*)(S20948C2*), ABISELECT(491,287), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C18*), ABISELECT(491,287), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(128,76), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(128,76), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(136,80), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(144,88), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C4*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(128,76), "S20948C1");
    /*is_ambiguous_... S20948C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C20*), ABISELECT(496,292), "S20948C1");
    /*is_ambiguous_... S20948C20::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C20*), ABISELECT(496,292), "S20948C1");
    check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C20*), ABISELECT(504,296), "S20948C1");
    check_base_class_offset(lv, (S20948C16*)(S20948C20*), ABISELECT(504,296), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C20*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(496,292), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C20*)(S20948C19*)(S20948C18*), ABISELECT(496,292), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(152,92), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C19*)(S20948C18*)(S20948C2*), ABISELECT(128,76), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C18*)(S20948C2*), ABISELECT(168,104), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C18*)(S20948C2*), ABISELECT(168,104), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(192,116), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(192,116), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(216,132), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(217,133), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(217,133), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(208,128), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(232,140), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(232,140), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(240,144), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(272,160), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(272,160), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(208,128), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(288,172), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C21*)(S20948C18*)(S20948C2*), ABISELECT(192,116), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*), ABISELECT(536,316), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(537,317), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*), ABISELECT(537,317), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*), ABISELECT(528,312), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*), ABISELECT(552,324), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*), ABISELECT(552,324), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*), ABISELECT(560,328), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*), ABISELECT(592,344), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C13 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*), ABISELECT(592,344), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C18*)(S20948C2*), ABISELECT(528,312), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C18*), ABISELECT(528,312), "S20948C1");
    /*is_ambiguous_... S20948C2::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C18*)(S20948C2*), ABISELECT(128,76), "S20948C1");
    /*is_ambiguous_... S20948C22::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C22*)(S20948C2*), ABISELECT(304,180), "S20948C1");
    /*is_ambiguous_... S20948C22::S20948C9_nt */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C22*)(S20948C2*), ABISELECT(296,176), "S20948C1");
    check_base_class_offset(lv, (S20948C22*)(S20948C2*), ABISELECT(296,176), "S20948C1");
    check_base_class_offset(lv, (S20948C9_nt*)(S20948C24_nt*), ABISELECT(608,356), "S20948C1");
    check_base_class_offset(lv, (S20948C24_nt*)(S20948C23*), ABISELECT(608,356), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(640,368), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C5*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(640,368), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(648,372), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C9_nt*)(S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(656,380), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C4*)(S20948C19*)(S20948C18*), ABISELECT(640,368), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C19*)(S20948C18*), ABISELECT(664,384), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C19*)(S20948C18*), ABISELECT(640,368), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C18*), ABISELECT(680,396), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C18*), ABISELECT(680,396), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(704,408), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C21*)(S20948C18*), ABISELECT(704,408), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(728,424), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(729,425), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(729,425), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(720,420), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(744,432), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(744,432), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(752,436), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(784,452), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(784,452), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C21*)(S20948C18*), ABISELECT(720,420), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C21*)(S20948C18*), ABISELECT(800,464), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C18 */ AMB_check_base_class_offset(lv, (S20948C21*)(S20948C18*), ABISELECT(704,408), "S20948C1");
    check_base_class_offset(lv, (S20948C18*)(S20948C23*), ABISELECT(640,368), "S20948C1");
    check_base_class_offset(lv, (S20948C23*)(S20948C2*), ABISELECT(608,356), "S20948C1");
    check_base_class_offset(lv, (S20948C2*), ABISELECT(112,64), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20948C12*)(S20948C3*), ABISELECT(8,4), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C12*)(S20948C3*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(24,16), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(25,17), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(25,17), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C14*)(S20948C13*)(S20948C3*), ABISELECT(16,12), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20948C15*)(S20948C13*)(S20948C3*), ABISELECT(40,24), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C15*)(S20948C13*)(S20948C3*), ABISELECT(40,24), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20948C13*)(S20948C3*), ABISELECT(48,28), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C17*)(S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(80,44), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C16*)(S20948C13*)(S20948C3*), ABISELECT(80,44), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C13*)(S20948C3*), ABISELECT(16,12), "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C3 */ AMB_check_base_class_offset(lv, (S20948C3*), 0, "S20948C1");
    /*is_ambiguous_... S20948C1::S20948C17 */ AMB_check_base_class_offset(lv, (S20948C17*), ABISELECT(96,56), "S20948C1");
    check_field_offset(lv, s20948c1f0, ABISELECT(104,60), "S20948C1.s20948c1f0");
    test_class_info(&lv, &cd_S20948C1);
    dp->~S20948C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20948C1(Test_S20948C1, "S20948C1", ABISELECT(816,468));

#else // __cplusplus

extern void _ZN8S20948C1C1Ev();
extern void _ZN8S20948C1D2Ev();
Name_Map name_map_S20948C1[] = {
  NSPAIR(_ZN8S20948C1C1Ev),
  NSPAIR(_ZN8S20948C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C10;
extern VTBL_ENTRY _ZTI9S20948C10[];
extern  VTBL_ENTRY _ZTV9S20948C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C10[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C12;
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C3;
extern VTBL_ENTRY _ZTI8S20948C3[];
extern  VTBL_ENTRY _ZTV8S20948C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C12;
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C20;
extern VTBL_ENTRY _ZTI9S20948C20[];
extern  VTBL_ENTRY _ZTV9S20948C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C19;
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C21;
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C18;
extern VTBL_ENTRY _ZTI9S20948C18[];
extern  VTBL_ENTRY _ZTV9S20948C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C18[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C22;
extern VTBL_ENTRY _ZTI9S20948C22[];
extern  VTBL_ENTRY _ZTV9S20948C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C22[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C24_nt;
extern VTBL_ENTRY _ZTI12S20948C24_nt[];
extern  VTBL_ENTRY _ZTV12S20948C24_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C5;
extern VTBL_ENTRY _ZTI8S20948C5[];
extern  VTBL_ENTRY _ZTV8S20948C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C9_nt;
extern VTBL_ENTRY _ZTI11S20948C9_nt[];
extern  VTBL_ENTRY _ZTV11S20948C9_nt[];
extern Class_Descriptor cd_S20948C4;
extern VTBL_ENTRY _ZTI8S20948C4[];
extern  VTBL_ENTRY _ZTV8S20948C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C19;
extern VTBL_ENTRY _ZTI9S20948C19[];
extern  VTBL_ENTRY _ZTV9S20948C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C19[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C21;
extern VTBL_ENTRY _ZTI9S20948C21[];
extern  VTBL_ENTRY _ZTV9S20948C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C21[];
extern Class_Descriptor cd_S20948C18;
extern VTBL_ENTRY _ZTI9S20948C18[];
extern  VTBL_ENTRY _ZTV9S20948C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C18[];
extern Class_Descriptor cd_S20948C23;
extern VTBL_ENTRY _ZTI9S20948C23[];
extern  VTBL_ENTRY _ZTV9S20948C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C23[];
extern Class_Descriptor cd_S20948C2;
extern VTBL_ENTRY _ZTI8S20948C2[];
extern  VTBL_ENTRY _ZTV8S20948C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C2[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20948C12;
extern VTBL_ENTRY _ZTI9S20948C12[];
extern  VTBL_ENTRY _ZTV9S20948C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C14;
extern VTBL_ENTRY _ZTI9S20948C14[];
extern  VTBL_ENTRY _ZTV9S20948C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C15;
extern VTBL_ENTRY _ZTI9S20948C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
extern Class_Descriptor cd_S20948C16;
extern VTBL_ENTRY _ZTI9S20948C16[];
extern  VTBL_ENTRY _ZTV9S20948C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C16[];
extern Class_Descriptor cd_S20948C13;
extern VTBL_ENTRY _ZTI9S20948C13[];
extern  VTBL_ENTRY _ZTV9S20948C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C13[];
extern Class_Descriptor cd_S20948C3;
extern VTBL_ENTRY _ZTI8S20948C3[];
extern  VTBL_ENTRY _ZTV8S20948C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C3[];
extern Class_Descriptor cd_S20948C17;
extern VTBL_ENTRY _ZTI9S20948C17[];
extern  VTBL_ENTRY _ZTV9S20948C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20948C17[];
static Base_Class bases_S20948C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(448,264), //bcp->offset
    189, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20948C5,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(424,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
    6, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(432,260), //bcp->offset
    186, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C4,    ABISELECT(416,248), //bcp->offset
    178, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20948C9_nt,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C10,    ABISELECT(480,280), //bcp->offset
    194, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    191, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20948C9_nt,    ABISELECT(400,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(328,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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20948C12,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(344,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(345,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(345,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C14,    ABISELECT(336,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(360,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(360,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(368,220), //bcp->offset
    166, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(400,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(400,236), //bcp->offset
    170, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(336,204), //bcp->offset
    157, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20948C3,    ABISELECT(320,192), //bcp->offset
    145, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    99, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20948C12,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(491,287), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(491,287), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(144,88), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C4,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(496,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
    39, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(496,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
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(504,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(504,296), //bcp->offset
    212, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20948C20,    ABISELECT(496,292), //bcp->offset
    202, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(152,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20948C19,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(168,104), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(192,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(192,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(217,133), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C15,    ABISELECT(217,133), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C14,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(232,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
    51, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(232,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
    55, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(240,144), //bcp->offset
    117, //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
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(272,160), //bcp->offset
    121, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(208,128), //bcp->offset
    108, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(288,172), //bcp->offset
    129, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20948C21,    ABISELECT(192,116), //bcp->offset
    95, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(536,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(537,317), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(537,317), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(528,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(552,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(552,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(560,328), //bcp->offset
    229, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(592,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(592,344), //bcp->offset
    233, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    207, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(528,312), //bcp->offset
    220, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S20948C18,    ABISELECT(128,76), //bcp->offset
    70, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    71, //immediately_derived
  0, 0},
  {&cd_S20948C9_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
    61, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20948C22,    ABISELECT(296,176), //bcp->offset
    136, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(608,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S20948C24_nt,    ABISELECT(608,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(640,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
    75, //immediately_derived
  0, 0},
  {&cd_S20948C5,    ABISELECT(640,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(648,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
    78, //immediately_derived
  0, 0},
  {&cd_S20948C9_nt,    ABISELECT(656,380), //bcp->offset
    277, //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
    28, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20948C4,    ABISELECT(640,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(664,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
    80, //immediately_derived
  0, 0},
  {&cd_S20948C19,    ABISELECT(640,368), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    235, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(680,396), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    245, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(680,396), //bcp->offset
    280, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    244, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(704,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    250, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(704,408), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    249, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(728,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(729,425), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(729,425), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(720,420), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    254, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(744,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(744,432), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(752,436), //bcp->offset
    310, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(784,452), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    259, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(784,452), //bcp->offset
    314, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    258, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(720,420), //bcp->offset
    301, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    253, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(800,464), //bcp->offset
    322, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    266, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20948C21,    ABISELECT(704,408), //bcp->offset
    288, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    248, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20948C18,    ABISELECT(640,368), //bcp->offset
    259, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S20948C23,    ABISELECT(608,356), //bcp->offset
    241, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    99, //immediately_derived
  0, 1},
  {&cd_S20948C2,    ABISELECT(112,64), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S20948C12,    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
    64, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    105, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S20948C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S20948C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    107, //immediately_derived
  0, 0},
  {&cd_S20948C15,    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
    111, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //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
    66, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S20948C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    110, //immediately_derived
  0, 0},
  {&cd_S20948C16,    ABISELECT(80,44), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S20948C13,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S20948C3,    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
    70, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C17,    ABISELECT(96,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20948C1[];
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void _ZN8S20948C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void _ZN8S20948C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C1D1Ev,_ZThn12_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C1D0Ev,_ZThn12_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S20948C1D1Ev,_ZThn28_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S20948C1D0Ev,_ZThn28_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C1D1Ev,_ZThn44_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C1D0Ev,_ZThn44_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N8S20948C1D1Ev,_ZThn56_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C1D0Ev,_ZThn56_N8S20948C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20948C1D1Ev,_ZThn64_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20948C1D0Ev,_ZThn64_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n32_N8S20948C1D1Ev,_ZTvn12_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn16_n32_N8S20948C1D0Ev,_ZTvn12_n16_N8S20948C1D0Ev)();
extern void _ZN9S20948C182v3Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn56_n32_N8S20948C1D1Ev,_ZTvn40_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn56_n32_N8S20948C1D0Ev,_ZTvn40_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20948C1D1Ev,_ZTvn52_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20948C1D0Ev,_ZTvn52_n16_N8S20948C1D0Ev)();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20948C1D1Ev,_ZThn128_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20948C1D0Ev,_ZThn128_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn128_n32_N8S20948C1D1Ev,_ZTvn80_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn128_n32_N8S20948C1D0Ev,_ZTvn80_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n32_N8S20948C1D1Ev,_ZTvn96_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn160_n32_N8S20948C1D0Ev,_ZTvn96_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn176_n32_N8S20948C1D1Ev,_ZTvn108_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn176_n32_N8S20948C1D0Ev,_ZTvn108_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn184_n32_N8S20948C1D1Ev,_ZTvn112_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn184_n32_N8S20948C1D0Ev,_ZTvn112_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S20948C1D1Ev,_ZThn192_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S20948C1D0Ev,_ZThn192_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S20948C1D1Ev,_ZThn204_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S20948C1D0Ev,_ZThn204_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N8S20948C1D1Ev,_ZTvn28_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20948C1D0Ev,_ZTvn28_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20948C1D1Ev,_ZTvn44_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20948C1D0Ev,_ZTvn44_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20948C1D1Ev,_ZTv0_n20_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S20948C1D1Ev,_ZThn248_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C1D0Ev,_ZTv0_n20_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S20948C1D0Ev,_ZThn248_N8S20948C1D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20948C1D1Ev,_ZTv0_n12_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn448_N8S20948C1D1Ev,_ZThn264_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C1D0Ev,_ZTv0_n12_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn448_N8S20948C1D0Ev,_ZThn264_N8S20948C1D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C1D1Ev,_ZTv0_n20_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn480_N8S20948C1D1Ev,_ZThn280_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C1D0Ev,_ZTv0_n20_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn480_N8S20948C1D0Ev,_ZThn280_N8S20948C1D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20948C1D1Ev,_ZTv0_n28_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S20948C1D1Ev,_ZThn292_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20948C1D0Ev,_ZTv0_n28_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S20948C1D0Ev,_ZThn292_N8S20948C1D0Ev)() __attribute__((weak));
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20948C1D1Ev,_ZTvn4_n28_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20948C1D0Ev,_ZTvn4_n28_N8S20948C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn528_N8S20948C1D1Ev,_ZThn312_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn528_N8S20948C1D0Ev,_ZThn312_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S20948C1D1Ev,_ZTvn16_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20948C1D0Ev,_ZTvn16_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20948C1D1Ev,_ZTvn32_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20948C1D0Ev,_ZTvn32_n16_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20948C1D1Ev,_ZTv0_n60_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn608_N8S20948C1D1Ev,_ZThn356_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20948C1D0Ev,_ZTv0_n60_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn608_N8S20948C1D0Ev,_ZThn356_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20948C1D1Ev,_ZTv0_n48_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn640_N8S20948C1D1Ev,_ZThn368_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20948C1D0Ev,_ZTv0_n48_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn640_N8S20948C1D0Ev,_ZThn368_N8S20948C1D0Ev)() __attribute__((weak));
extern void _ZN9S20948C182v3Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20948C1D1Ev,_ZTvn28_n48_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20948C1D0Ev,_ZTvn28_n48_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20948C1D1Ev,_ZTvn40_n48_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20948C1D0Ev,_ZTvn40_n48_N8S20948C1D0Ev)();
extern void _ZN9S20948C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev)();
extern void ABISELECT(_ZThn720_N8S20948C1D1Ev,_ZThn420_N8S20948C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev)();
extern void ABISELECT(_ZThn720_N8S20948C1D0Ev,_ZThn420_N8S20948C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N8S20948C1D1Ev,_ZTvn68_n48_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20948C1D0Ev,_ZTvn68_n48_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20948C1D1Ev,_ZTvn84_n48_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20948C1D0Ev,_ZTvn84_n48_N8S20948C1D0Ev)();
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20948C1D1Ev,_ZTvn96_n48_N8S20948C1D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20948C1D0Ev,_ZTvn96_n48_N8S20948C1D0Ev)();
static  VTBL_ENTRY vtc_S20948C1[] = {
  ABISELECT(640,368),
  ABISELECT(608,356),
  ABISELECT(608,356),
  ABISELECT(528,312),
  ABISELECT(496,292),
  ABISELECT(491,287),
  ABISELECT(320,192),
  ABISELECT(112,64),
  ABISELECT(400,236),
  0,
  ABISELECT(480,280),
  ABISELECT(416,248),
  0,
  ABISELECT(320,192),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-16,-12),
  ABISELECT(384,224),
  ABISELECT(304,180),
  ABISELECT(-16,-12),
  ABISELECT(432,252),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20948C1D1Ev,_ZThn28_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20948C1D0Ev,_ZThn28_N8S20948C1D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C1D1Ev,_ZThn44_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C1D0Ev,_ZThn44_N8S20948C1D0Ev),
  ABISELECT(304,180),
  ABISELECT(304,180),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20948C1D1Ev,_ZThn56_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20948C1D0Ev,_ZThn56_N8S20948C1D0Ev),
  ABISELECT(80,52),
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(528,304),
  ABISELECT(496,292),
  ABISELECT(496,292),
  ABISELECT(416,248),
  ABISELECT(384,228),
  ABISELECT(379,223),
  ABISELECT(288,172),
  ABISELECT(-112,-64),
  ABISELECT(368,216),
  ABISELECT(304,184),
  ABISELECT(208,128),
  ABISELECT(-112,-64),
  ABISELECT(208,128),
  ABISELECT(-112,-64),
  ABISELECT(336,200),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-128,-76),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n32_N8S20948C1D1Ev,_ZTvn12_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n32_N8S20948C1D0Ev,_ZTvn12_n16_N8S20948C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n32_N8S20948C1D1Ev,_ZTvn40_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n32_N8S20948C1D0Ev,_ZTvn40_n16_N8S20948C1D0Ev),
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C1D1Ev,_ZTvn52_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C1D0Ev,_ZTvn52_n16_N8S20948C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-208,-128),
  ABISELECT(240,136),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n32_N8S20948C1D1Ev,_ZTvn80_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n32_N8S20948C1D0Ev,_ZTvn80_n16_N8S20948C1D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n32_N8S20948C1D1Ev,_ZTvn96_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n32_N8S20948C1D0Ev,_ZTvn96_n16_N8S20948C1D0Ev),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn176_n32_N8S20948C1D1Ev,_ZTvn108_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn176_n32_N8S20948C1D0Ev,_ZTvn108_n16_N8S20948C1D0Ev),
  ABISELECT(-296,-176),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  ABISELECT(-296,-176),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn184_n32_N8S20948C1D1Ev,_ZTvn112_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn184_n32_N8S20948C1D0Ev,_ZTvn112_n16_N8S20948C1D0Ev),
  ABISELECT(80,44),
  ABISELECT(-320,-192),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-320,-192),
  0,
  ABISELECT(-320,-192),
  ABISELECT(128,72),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-336,-204),
  ABISELECT(112,60),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20948C1D1Ev,_ZTvn28_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20948C1D0Ev,_ZTvn28_n16_N8S20948C1D0Ev),
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C1D1Ev,_ZTvn44_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C1D0Ev,_ZTvn44_n16_N8S20948C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-416,-248),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C1D1Ev,_ZTv0_n20_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C1D0Ev,_ZTv0_n20_N8S20948C1D0Ev),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C1D1Ev,_ZTv0_n12_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C1D0Ev,_ZTv0_n12_N8S20948C1D0Ev),
  ABISELECT(-480,-280),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C1D1Ev,_ZTv0_n20_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C1D0Ev,_ZTv0_n20_N8S20948C1D0Ev),
  ABISELECT(-496,-292),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-496,-292),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20948C1D1Ev,_ZTv0_n28_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20948C1D0Ev,_ZTv0_n28_N8S20948C1D0Ev),
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-504,-296),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20948C1D1Ev,_ZTvn4_n28_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20948C1D0Ev,_ZTvn4_n28_N8S20948C1D0Ev),
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-528,-312),
  ABISELECT(-80,-48),
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20948C1D1Ev,_ZTvn16_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20948C1D0Ev,_ZTvn16_n16_N8S20948C1D0Ev),
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-592,-344),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20948C1D1Ev,_ZTvn32_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20948C1D0Ev,_ZTvn32_n16_N8S20948C1D0Ev),
  ABISELECT(-608,-356),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-608,-356),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-608,-356),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,12),
  ABISELECT(-208,-120),
  0,
  0,
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20948C1D1Ev,_ZTv0_n60_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20948C1D0Ev,_ZTv0_n60_N8S20948C1D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-640,-368),
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-640,-368),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-640,-368),
  ABISELECT(-192,-104),
  ABISELECT(-640,-368),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20948C1D1Ev,_ZTv0_n48_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20948C1D0Ev,_ZTv0_n48_N8S20948C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
  ABISELECT(-656,-380),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  ABISELECT(-680,-396),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-680,-396),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20948C1D1Ev,_ZTvn28_n48_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20948C1D0Ev,_ZTvn28_n48_N8S20948C1D0Ev),
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-704,-408),
  ABISELECT(-224,-128),
  ABISELECT(-704,-408),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-704,-408),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20948C1D1Ev,_ZTvn40_n48_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20948C1D0Ev,_ZTvn40_n48_N8S20948C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
  ABISELECT(-720,-420),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-720,-420),
  ABISELECT(-272,-156),
  ABISELECT(-720,-420),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev),
  ABISELECT(-752,-436),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20948C1D1Ev,_ZTvn68_n48_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20948C1D0Ev,_ZTvn68_n48_N8S20948C1D0Ev),
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-784,-452),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20948C1D1Ev,_ZTvn84_n48_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20948C1D0Ev,_ZTvn84_n48_N8S20948C1D0Ev),
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-800,-464),
  (VTBL_ENTRY)&(_ZTI8S20948C1[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20948C1D1Ev,_ZTvn96_n48_N8S20948C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20948C1D0Ev,_ZTvn96_n48_N8S20948C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20948C1[];
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void _ZN8S20948C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void _ZN8S20948C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C3__A__8S20948C1[] = {
  ABISELECT(400,236),
  0,
  ABISELECT(480,280),
  ABISELECT(416,248),
  0,
  ABISELECT(320,192),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void _ZN9S20948C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void _ZN9S20948C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C128S20948C3__A2__8S20948C1[] = {
  0,
  ABISELECT(320,192),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn320_N9S20948C12D1Ev,_ZThn192_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn320_N9S20948C12D0Ev,_ZThn192_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C128S20948C3__A2__8S20948C1[] = {
  ABISELECT(-320,-192),
  ABISELECT(128,72),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn448_N9S20948C12D1Ev,_ZThn264_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn448_N9S20948C12D0Ev,_ZThn264_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C128S20948C3__A2__8S20948C1[] = {
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(384,224),
  ABISELECT(304,180),
  0,
  ABISELECT(432,252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(384,224),
  ABISELECT(304,180),
  0,
  ABISELECT(432,252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn304_N9S20948C14D1Ev,_ZThn180_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn304_N9S20948C14D0Ev,_ZThn180_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(128,72),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn432_N9S20948C14D1Ev,_ZThn252_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn432_N9S20948C14D0Ev,_ZThn252_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C138S20948C3__A4__8S20948C1[] = {
  0,
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C138S20948C3__A9__8S20948C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C138S20948C3__A11__8S20948C1[] = {
  ABISELECT(320,192),
  ABISELECT(320,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C138S20948C3__A11__8S20948C1[] = {
  0,
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C138S20948C3__A9__8S20948C1[] = {
  0,
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn304_N9S20948C13D1Ev,_ZThn180_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn304_N9S20948C13D0Ev,_ZThn180_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(128,72),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn432_N9S20948C13D1Ev,_ZThn252_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn432_N9S20948C13D0Ev,_ZThn252_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C138S20948C3__A4__8S20948C1[] = {
  0,
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C138S20948C3__A4__8S20948C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn416_N8S20948C3D1Ev,_ZThn248_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn416_N8S20948C3D0Ev,_ZThn248_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C3__A__8S20948C1[] = {
  ABISELECT(16,12),
  ABISELECT(-416,-248),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn448_N8S20948C3D1Ev,_ZThn264_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn448_N8S20948C3D0Ev,_ZThn264_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C3__A__8S20948C1[] = {
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C4__8S20948C3__A__8S20948C1[] = {
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn480_N8S20948C3D1Ev,_ZThn280_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn480_N8S20948C3D0Ev,_ZThn280_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C3__A__8S20948C1[] = {
  ABISELECT(-480,-280),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A2__8S20948C3__A__8S20948C1[] = {
  0,
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn320_N8S20948C3D1Ev,_ZThn192_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn320_N8S20948C3D0Ev,_ZThn192_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__8S20948C3__A__8S20948C1[] = {
  ABISELECT(-320,-192),
  ABISELECT(128,72),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__8S20948C3__A__8S20948C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(384,224),
  ABISELECT(304,180),
  ABISELECT(-16,-12),
  ABISELECT(432,252),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__8S20948C3__A__8S20948C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A12__8S20948C1[] = {
  ABISELECT(304,180),
  ABISELECT(304,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C17__A12__8S20948C1[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void _ZN8S20948C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void _ZN8S20948C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C2__8S20948C1[] = {
  ABISELECT(528,304),
  ABISELECT(496,292),
  ABISELECT(496,292),
  ABISELECT(416,248),
  ABISELECT(384,228),
  ABISELECT(379,223),
  ABISELECT(288,172),
  ABISELECT(-112,-64),
  ABISELECT(368,216),
  ABISELECT(304,184),
  ABISELECT(208,128),
  ABISELECT(-112,-64),
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void _ZN9S20948C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void _ZN9S20948C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C128S20948C2__A1__8S20948C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn208_N9S20948C12D1Ev,_ZThn128_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn208_N9S20948C12D0Ev,_ZThn128_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C128S20948C2__A1__8S20948C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S20948C12D1Ev,_ZThn200_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S20948C12D0Ev,_ZThn200_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C128S20948C2__A1__8S20948C1[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern void _ZN9S20948C18D1Ev();
extern void _ZN9S20948C18D0Ev();
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-128,-76),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN9S20948C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C199S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C49S20948C199S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C49S20948C199S20948C188S20948C2__A2__8S20948C1[] = {
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn320_N8S20948C5D1Ev,_ZThn188_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn320_N8S20948C5D0Ev,_ZThn188_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C188S20948C2__A2__8S20948C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S20948C4D1Ev,_ZThn188_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S20948C4D0Ev,_ZThn188_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C199S20948C188S20948C2__8S20948C1[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S20948C19D1Ev,_ZThn188_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S20948C19D0Ev,_ZThn188_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C199S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZThn368_N9S20948C19D1Ev,_ZThn216_N9S20948C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
extern void ABISELECT(_ZThn368_N9S20948C19D0Ev,_ZThn216_N9S20948C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C199S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C199S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C188S20948C2__A2__8S20948C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C188S20948C2__A2__8S20948C1[] = {
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C188S20948C2__A2__8S20948C1[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C188S20948C2__A2__8S20948C1[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn64_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn64_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S20948C14D1Ev,_ZThn136_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn240_N9S20948C14D0Ev,_ZThn136_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn64_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn64_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn240_N9S20948C13D1Ev,_ZThn136_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn240_N9S20948C13D0Ev,_ZThn136_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C188S20948C2__A5__8S20948C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C188S20948C2__A5__8S20948C1[] = {
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn288_N9S20948C21D1Ev,_ZThn164_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn288_N9S20948C21D0Ev,_ZThn164_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-288,-164),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-16,-12),
  ABISELECT(240,136),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S20948C21D1Ev,_ZThn76_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S20948C21D0Ev,_ZThn76_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(128,72),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn256_N9S20948C21D1Ev,_ZThn148_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn256_N9S20948C21D0Ev,_ZThn148_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C219S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C188S20948C2__8S20948C1[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn320_N9S20948C18D1Ev,_ZThn188_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn320_N9S20948C18D0Ev,_ZThn188_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S20948C18D1Ev,_ZThn216_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S20948C18D0Ev,_ZThn216_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__A1__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C21__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn352_N9S20948C18D1Ev,_ZThn204_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn352_N9S20948C18D0Ev,_ZThn204_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-352,-204),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C21__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-80,-52),
  ABISELECT(240,136),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S20948C18D1Ev,_ZThn116_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S20948C18D0Ev,_ZThn116_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(128,72),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C21__A4__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn400_N9S20948C18D1Ev,_ZThn236_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn400_N9S20948C18D0Ev,_ZThn236_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-400,-236),
  ABISELECT(-80,-48),
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C188S20948C2__8S20948C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C22D1Ev();
extern void _ZN9S20948C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C228S20948C2__8S20948C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C22D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev)();
extern void ABISELECT(_ZThn120_N9S20948C22D1Ev,_ZThn72_N9S20948C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev)();
extern void ABISELECT(_ZThn120_N9S20948C22D0Ev,_ZThn72_N9S20948C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C4__9S20948C228S20948C2__8S20948C1[] = {
  ABISELECT(16,12),
  ABISELECT(-120,-72),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev)();
extern void ABISELECT(_ZThn152_N9S20948C22D1Ev,_ZThn88_N9S20948C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev)();
extern void ABISELECT(_ZThn152_N9S20948C22D0Ev,_ZThn88_N9S20948C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C228S20948C2__8S20948C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C4__9S20948C228S20948C2__8S20948C1[] = {
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C22[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20948C2D1Ev,_ZThn128_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20948C2D0Ev,_ZThn128_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C3__8S20948C2__8S20948C1[] = {
  ABISELECT(80,44),
  ABISELECT(-320,-192),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-320,-192),
  0,
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S20948C2D1Ev,_ZThn184_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S20948C2D0Ev,_ZThn184_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C2__8S20948C1[] = {
  ABISELECT(16,12),
  ABISELECT(-304,-184),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C2D1Ev,_ZTv0_n12_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20948C2D1Ev,_ZThn200_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C2D0Ev,_ZTv0_n12_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20948C2D0Ev,_ZThn200_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C2__8S20948C1[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C2D1Ev,_ZTv0_n12_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C2D0Ev,_ZTv0_n12_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C4__8S20948C2__8S20948C1[] = {
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S20948C2D1Ev,_ZThn216_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S20948C2D0Ev,_ZThn216_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C2__8S20948C1[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20948C2D1Ev,_ZTvn44_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20948C2D0Ev,_ZTvn44_n16_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C138S20948C3__8S20948C2__8S20948C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C2D1Ev,_ZTvn44_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20948C2D0Ev,_ZTvn44_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S20948C2D1Ev,_ZThn140_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S20948C2D0Ev,_ZThn140_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C138S20948C3__8S20948C2__8S20948C1[] = {
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-224,-140),
  ABISELECT(112,60),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n32_N8S20948C2D1Ev,_ZTvn28_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20948C2D0Ev,_ZTvn28_n16_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C138S20948C3__A1__8S20948C2__8S20948C1[] = {
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20948C2D1Ev,_ZTvn28_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20948C2D0Ev,_ZTvn28_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZThn16_N8S20948C2D1Ev,_ZThn12_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C2D0Ev,_ZThn12_N8S20948C2D0Ev)();
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__A__8S20948C2__8S20948C1[] = {
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-128,-76),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20948C2D1Ev,_ZThn12_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20948C2D0Ev,_ZThn12_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20948C2D1Ev,_ZTv0_n28_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S20948C2D1Ev,_ZThn228_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20948C2D0Ev,_ZTv0_n28_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S20948C2D0Ev,_ZThn228_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C20__8S20948C2__8S20948C1[] = {
  ABISELECT(-384,-228),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20948C2D1Ev,_ZTv0_n28_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20948C2D0Ev,_ZTv0_n28_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20948C2D1Ev,_ZTvn4_n28_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20948C2D0Ev,_ZTvn4_n28_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__A1__8S20948C2__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20948C2D1Ev,_ZTvn4_n28_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20948C2D0Ev,_ZTvn4_n28_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn56_N8S20948C2D1Ev,_ZThn40_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20948C2D0Ev,_ZThn40_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A2__8S20948C2__8S20948C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20948C2D1Ev,_ZThn40_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20948C2D0Ev,_ZThn40_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C2D1Ev,_ZThn52_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C2D0Ev,_ZThn52_N8S20948C2D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__8S20948C2__8S20948C1[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C2D1Ev,_ZThn52_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C2D0Ev,_ZThn52_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C2D1Ev,_ZThn64_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C2D0Ev,_ZThn64_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__A1__8S20948C2__8S20948C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-96,-64),
  ABISELECT(240,136),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N8S20948C2D1Ev,_ZThn96_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20948C2D0Ev,_ZThn96_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2__8S20948C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20948C2D1Ev,_ZThn96_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20948C2D0Ev,_ZThn96_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn176_N8S20948C2D1Ev,_ZThn108_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20948C2D0Ev,_ZThn108_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A5__8S20948C2__8S20948C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20948C2D1Ev,_ZThn108_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20948C2D0Ev,_ZThn108_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn416_N8S20948C2D1Ev,_ZThn248_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn416_N8S20948C2D0Ev,_ZThn248_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A2__8S20948C2__8S20948C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-416,-248),
  ABISELECT(-80,-48),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S20948C2D1Ev,_ZTvn16_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20948C2D0Ev,_ZTvn16_n16_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A3__8S20948C2__8S20948C1[] = {
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20948C2D1Ev,_ZTvn16_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20948C2D0Ev,_ZTvn16_n16_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20948C2D1Ev,_ZTvn32_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20948C2D0Ev,_ZTvn32_n16_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A5__8S20948C2__8S20948C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20948C2D1Ev,_ZTvn32_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20948C2D0Ev,_ZTvn32_n16_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn184_N8S20948C2D1Ev,_ZThn112_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S20948C2D0Ev,_ZThn112_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C22__8S20948C2__8S20948C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20948C2D1Ev,_ZThn112_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20948C2D0Ev,_ZThn112_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20948C2D1Ev,_ZTv0_n60_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn496_N8S20948C2D1Ev,_ZThn292_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20948C2D0Ev,_ZTv0_n60_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn496_N8S20948C2D0Ev,_ZThn292_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C23__8S20948C2__8S20948C1[] = {
  ABISELECT(-496,-292),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-608,-356),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-608,-356),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,12),
  ABISELECT(-208,-120),
  0,
  0,
  ABISELECT(-496,-292),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20948C2D1Ev,_ZTv0_n60_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20948C2D0Ev,_ZTv0_n60_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N8S20948C2D1Ev,_ZTv0_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S20948C2D1Ev,_ZThn304_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20948C2D0Ev,_ZTv0_n48_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S20948C2D0Ev,_ZThn304_N8S20948C2D0Ev)() __attribute__((weak));
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__A1__8S20948C2__8S20948C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-528,-304),
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-640,-368),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-640,-368),
  ABISELECT(-192,-104),
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20948C2D1Ev,_ZTv0_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20948C2D0Ev,_ZTv0_n48_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C49S20948C199S20948C18__A7__8S20948C2__8S20948C1[] = {
  ABISELECT(-544,-316),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20948C2D1Ev,_ZTvn28_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20948C2D0Ev,_ZTvn28_n48_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A6__8S20948C2__8S20948C1[] = {
  ABISELECT(-680,-396),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-568,-332),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20948C2D1Ev,_ZTvn28_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20948C2D0Ev,_ZTvn28_n48_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20948C2D1Ev,_ZTvn40_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20948C2D0Ev,_ZTvn40_n48_N8S20948C2D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__A1__8S20948C2__8S20948C1[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-704,-408),
  ABISELECT(-224,-128),
  ABISELECT(-704,-408),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-592,-344),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20948C2D1Ev,_ZTvn40_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20948C2D0Ev,_ZTvn40_n48_N8S20948C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20948C2D1Ev,_ZThn356_N8S20948C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20948C2D0Ev,_ZThn356_N8S20948C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__A3__8S20948C2__8S20948C1[] = {
  ABISELECT(-720,-420),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-608,-356),
  ABISELECT(-272,-156),
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N8S20948C2D1Ev,_ZTvn68_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20948C2D0Ev,_ZTvn68_n48_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C139S20948C219S20948C18__A4__8S20948C2__8S20948C1[] = {
  ABISELECT(-640,-372),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20948C2D1Ev,_ZTvn68_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20948C2D0Ev,_ZTvn68_n48_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20948C2D1Ev,_ZTvn84_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20948C2D0Ev,_ZTvn84_n48_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C2__8S20948C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-672,-388),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20948C2D1Ev,_ZTvn84_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20948C2D0Ev,_ZTvn84_n48_N8S20948C2D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20948C2D1Ev,_ZTvn96_n48_N8S20948C2D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20948C2D0Ev,_ZTvn96_n48_N8S20948C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A10__8S20948C2__8S20948C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-688,-400),
  (VTBL_ENTRY)&(_ZTI8S20948C2[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20948C2D1Ev,_ZTvn96_n48_N8S20948C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20948C2D0Ev,_ZTvn96_n48_N8S20948C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void _ZN8S20948C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void _ZN8S20948C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C3__8S20948C1[] = {
  ABISELECT(80,44),
  ABISELECT(-320,-192),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-320,-192),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev)();
extern void _ZN9S20948C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev)();
extern void _ZN9S20948C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C128S20948C3__8S20948C1[] = {
  ABISELECT(-320,-192),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S20948C12D1Ev,_ZThn72_N9S20948C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S20948C12D0Ev,_ZThn72_N9S20948C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C128S20948C3__8S20948C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20948C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn60_N9S20948C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn60_N9S20948C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C138S20948C3__8S20948C1[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C138S20948C3__8S20948C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn60_N9S20948C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn60_N9S20948C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C138S20948C3__8S20948C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20948C3D1Ev,_ZThn56_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20948C3D0Ev,_ZThn56_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C3__8S20948C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C3D1Ev,_ZThn72_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S20948C3D0Ev,_ZThn72_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C3__8S20948C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C4__8S20948C3__8S20948C1[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20948C3D1Ev,_ZThn88_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20948C3D0Ev,_ZThn88_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C3__8S20948C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__8S20948C3__8S20948C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D1Ev,_ZThn44_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20948C3D0Ev,_ZThn44_N8S20948C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__8S20948C3__8S20948C1[] = {
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20948C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev),
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C4__8S20948C1[] = {
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C4__8S20948C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C4__8S20948C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C4__8S20948C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C10D1Ev();
extern void _ZN9S20948C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C10__8S20948C1[] = {
  ABISELECT(-480,-280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C10[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C10D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__8S20948C1[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20948C5D1Ev,_ZThn72_N8S20948C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20948C5D0Ev,_ZThn72_N8S20948C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C5__A1__8S20948C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C20D1Ev();
extern void _ZN9S20948C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C20__8S20948C1[] = {
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C20D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__A1__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C20__A1__8S20948C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C20__A1__8S20948C1[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C20__A1__8S20948C1[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C20__8S20948C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D1Ev,_ZTv0_n12_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C20D0Ev,_ZTv0_n12_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C20__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D1Ev,_ZThn4_N9S20948C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20948C20D0Ev,_ZThn4_N9S20948C20D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C20__8S20948C1[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20948C20[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__A2__8S20948C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C13__A2__8S20948C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C13__A2__8S20948C1[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A2__8S20948C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A2__8S20948C1[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A5__8S20948C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C13__A6__8S20948C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A6__8S20948C1[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A5__8S20948C1[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C13__A2__8S20948C1[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C13__A2__8S20948C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C13__A2__8S20948C1[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C13__A2__8S20948C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C23D1Ev();
extern void _ZN9S20948C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C23__8S20948C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-608,-356),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-608,-356),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,12),
  ABISELECT(-208,-120),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C23D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C23__8S20948C1[] = {
  0,
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S20948C23D1Ev,_ZThn12_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S20948C23D0Ev,_ZThn12_N9S20948C23D0Ev)() __attribute__((weak));
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__9S20948C23__8S20948C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-12),
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-640,-368),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-640,-368),
  ABISELECT(-192,-104),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C23__8S20948C1[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C23D1Ev,_ZTv0_n12_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C23D0Ev,_ZTv0_n12_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt8S20948C49S20948C199S20948C18__A2__9S20948C23__8S20948C1[] = {
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C23__8S20948C1[] = {
  ABISELECT(112,64),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C23D1Ev,_ZTv0_n28_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C23D0Ev,_ZTv0_n28_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C23D1Ev,_ZTvn4_n28_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C23D0Ev,_ZTvn4_n28_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C23__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C23D1Ev,_ZTvn4_n28_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C23D0Ev,_ZTvn4_n28_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20948C23D1Ev,_ZTvn28_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20948C23D0Ev,_ZTvn28_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A1__9S20948C23__8S20948C1[] = {
  ABISELECT(-680,-396),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20948C23D1Ev,_ZTvn28_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20948C23D0Ev,_ZTvn28_n48_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20948C23D1Ev,_ZTvn40_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20948C23D0Ev,_ZTvn40_n48_N9S20948C23D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__9S20948C23__8S20948C1[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-704,-408),
  ABISELECT(-224,-128),
  ABISELECT(-704,-408),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20948C23D1Ev,_ZTvn40_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20948C23D0Ev,_ZTvn40_n48_N9S20948C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C23__8S20948C1[] = {
  ABISELECT(128,76),
  0,
  ABISELECT(-480,-280),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C23D1Ev,_ZTv0_n20_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C23D0Ev,_ZTv0_n20_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20948C23D1Ev,_ZThn64_N9S20948C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20948C23D0Ev,_ZThn64_N9S20948C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23__8S20948C1[] = {
  ABISELECT(-720,-420),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-112,-64),
  ABISELECT(-272,-156),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C23__8S20948C1[] = {
  ABISELECT(288,164),
  ABISELECT(128,72),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20948C23D1Ev,_ZTvn68_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20948C23D0Ev,_ZTvn68_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C139S20948C219S20948C18__A1__9S20948C23__8S20948C1[] = {
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20948C23D1Ev,_ZTvn68_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20948C23D0Ev,_ZTvn68_n48_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20948C23D1Ev,_ZTvn84_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20948C23D0Ev,_ZTvn84_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23__8S20948C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20948C23D1Ev,_ZTvn84_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20948C23D0Ev,_ZTvn84_n48_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20948C23D1Ev,_ZTvn96_n48_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20948C23D0Ev,_ZTvn96_n48_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A4__9S20948C23__8S20948C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20948C23D1Ev,_ZTvn96_n48_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20948C23D0Ev,_ZTvn96_n48_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C23__8S20948C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(80,44),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C23D1Ev,_ZTvn16_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C23D0Ev,_ZTvn16_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C23__8S20948C1[] = {
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C23D1Ev,_ZTvn16_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C23D0Ev,_ZTvn16_n16_N9S20948C23D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C23D1Ev,_ZTvn32_n16_N9S20948C23D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C23D0Ev,_ZTvn32_n16_N9S20948C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C23__8S20948C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20948C23[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C23D1Ev,_ZTvn32_n16_N9S20948C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C23D0Ev,_ZTvn32_n16_N9S20948C23D0Ev),
};
extern void _ZN9S20948C18D1Ev();
extern void _ZN9S20948C18D0Ev();
extern void _ZN9S20948C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-320,-176),
  ABISELECT(-640,-368),
  ABISELECT(-160,-88),
  ABISELECT(-149,-81),
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-640,-368),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN9S20948C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C182v3Ev,
};
extern void _ZN9S20948C19D1Ev();
extern void _ZN9S20948C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C199S20948C18__A1__8S20948C1[] = {
  ABISELECT(-144,-76),
  ABISELECT(-240,-132),
  ABISELECT(-640,-368),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN9S20948C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C19D0Ev,
};
extern void _ZN8S20948C4D1Ev();
extern void _ZN8S20948C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C49S20948C199S20948C18__A2__8S20948C1[] = {
  ABISELECT(-640,-368),
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&_ZN8S20948C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C4D0Ev,
};
extern void _ZN8S20948C5D1Ev();
extern void _ZN8S20948C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C1[] = {
  ABISELECT(-192,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&_ZN8S20948C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20948C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S20948C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__A2__8S20948C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI8S20948C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C199S20948C18__A1__8S20948C1[] = {
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C199S20948C18__A1__8S20948C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C199S20948C18__A1__8S20948C1[] = {
  ABISELECT(144,76),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__A1__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20948C19[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D1Ev,_ZTvn4_n28_N9S20948C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C19D0Ev,_ZTvn4_n28_N9S20948C19D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C18__A6__8S20948C1[] = {
  ABISELECT(-680,-396),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C18__A7__8S20948C1[] = {
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A7__8S20948C1[] = {
  0,
  ABISELECT(280,160),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A6__8S20948C1[] = {
  0,
  ABISELECT(280,160),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C21D1Ev();
extern void _ZN9S20948C21D0Ev();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-704,-408),
  ABISELECT(-224,-128),
  ABISELECT(-704,-408),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C219S20948C18__A7__8S20948C1[] = {
  ABISELECT(-704,-408),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C1[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A7__8S20948C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void _ZN9S20948C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
extern void _ZN9S20948C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(-720,-420),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  0,
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void _ZN9S20948C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
extern void _ZN9S20948C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  0,
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(400,228),
  ABISELECT(128,72),
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  0,
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S20948C14[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C16D1Ev();
extern void _ZN9S20948C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C16D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C1[] = {
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C1[] = {
  0,
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C1[] = {
  0,
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S20948C16[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(400,228),
  ABISELECT(128,72),
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  0,
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__A3__8S20948C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20948C13[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D1Ev,_ZThn32_N9S20948C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C13D0Ev,_ZThn32_N9S20948C13D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void _ZN9S20948C17D1Ev();
extern void _ZN9S20948C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C219S20948C18__A10__8S20948C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  0,
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20948C17D0Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A10__8S20948C1[] = {
  0,
  ABISELECT(400,228),
  (VTBL_ENTRY)&(_ZTI9S20948C17[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(224,128),
  0,
  ABISELECT(-480,-280),
  ABISELECT(224,128),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__A1__8S20948C1[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C13__9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(-720,-420),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-16,-12),
  ABISELECT(-272,-156),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(384,216),
  ABISELECT(128,72),
  ABISELECT(384,216),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(256,144),
  ABISELECT(256,144),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D1Ev,_ZThn44_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20948C21D0Ev,_ZThn44_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C17__A2__9S20948C219S20948C18__A1__8S20948C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20948C21[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D1Ev,_ZThn56_N9S20948C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20948C21D0Ev,_ZThn56_N9S20948C21D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
static  VTBL_ENTRY _tg__ZTV11S20948C9_nt__9S20948C18__A1__8S20948C1[] = {
  0,
  ABISELECT(240,132),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C20__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(144,76),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,76),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C20__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,72),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D1Ev,_ZTvn4_n28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20948C18D0Ev,_ZTvn4_n28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C16__A1__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-680,-396),
  ABISELECT(-280,-160),
  ABISELECT(-280,-160),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D1Ev,_ZThn28_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20948C18D0Ev,_ZThn28_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev)();
extern void _ZN9S20948C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20948C21__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-256,-144),
  ABISELECT(-384,-216),
  ABISELECT(-704,-408),
  ABISELECT(-224,-128),
  ABISELECT(-704,-408),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D1Ev,_ZThn40_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20948C18D0Ev,_ZThn40_N9S20948C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20948C212v2Ev,
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C10__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(160,88),
  0,
  ABISELECT(-480,-280),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20948C139S20948C21__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-720,-420),
  ABISELECT(-320,-184),
  ABISELECT(-400,-228),
  ABISELECT(-80,-52),
  ABISELECT(-272,-156),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20948C5__A1__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(320,176),
  ABISELECT(128,72),
  ABISELECT(320,176),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-784,-452),
  ABISELECT(-384,-216),
  ABISELECT(-384,-216),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D1Ev,_ZThn84_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20948C18D0Ev,_ZThn84_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C179S20948C21__A4__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-400,-228),
  ABISELECT(-400,-228),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D1Ev,_ZThn96_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20948C18D0Ev,_ZThn96_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C13__A1__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(112,56),
  ABISELECT(-80,-48),
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(80,40),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D1Ev,_ZTvn16_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20948C18D0Ev,_ZTvn16_n16_N9S20948C18D0Ev),
};
extern void _ZN11S20948C9_nt2v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20948C169S20948C13__A4__9S20948C18__A1__8S20948C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20948C18[0]),
  (VTBL_ENTRY)&_ZN11S20948C9_nt2v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D1Ev,_ZTvn32_n16_N9S20948C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20948C18D0Ev,_ZTvn32_n16_N9S20948C18D0Ev),
};
static  VTT_ENTRY vtt_S20948C1[] = {
  {&(_ZTV8S20948C1[18]),  18,329},
  {&(_tg__ZTV8S20948C3__A__8S20948C1[10]),  10,12},
  {&(_tg__ZTV9S20948C128S20948C3__A2__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C128S20948C3__A2__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C128S20948C3__A2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C138S20948C3__A4__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C138S20948C3__A4__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C138S20948C3__A4__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C138S20948C3__A4__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C138S20948C3__A4__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__A9__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C138S20948C3__A11__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C138S20948C3__A11__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C138S20948C3__A9__8S20948C1[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C138S20948C3__A4__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C138S20948C3__A4__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C138S20948C3__A4__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C138S20948C3__A4__8S20948C1[5]),  5,8},
  {&(_tg__ZTV8S20948C4__8S20948C3__A__8S20948C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20948C3__A__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C4__8S20948C3__A__8S20948C1[2]),  2,3},
  {&(_tg__ZTV9S20948C10__8S20948C3__A__8S20948C1[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A2__8S20948C3__A__8S20948C1[3]),  3,4},
  {&(_tg__ZTV8S20948C5__A1__8S20948C3__A__8S20948C1[4]),  4,6},
  {&(_tg__ZTV9S20948C13__8S20948C3__A__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3__A__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A12__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C17__A12__8S20948C1[3]),  3,4},
  {&(_ZTV8S20948C1[68]),  68,329},
  {&(_ZTV8S20948C1[155]),  155,329},
  {&(_ZTV8S20948C1[184]),  184,329},
  {&(_ZTV8S20948C1[192]),  192,329},
  {&(_ZTV8S20948C1[188]),  188,329},
  {&(_ZTV8S20948C1[199]),  199,329},
  {&(_ZTV8S20948C1[175]),  175,329},
  {&(_ZTV8S20948C1[155]),  155,329},
  {&(_ZTV8S20948C1[164]),  164,329},
  {&(_ZTV8S20948C1[168]),  168,329},
  {&(_ZTV8S20948C1[175]),  175,329},
  {&(_ZTV8S20948C1[81]),  81,329},
  {&(_ZTV8S20948C1[86]),  86,329},
  {&(_ZTV8S20948C1[209]),  209,329},
  {&(_ZTV8S20948C1[217]),  217,329},
  {&(_ZTV8S20948C1[92]),  92,329},
  {&(_ZTV8S20948C1[104]),  104,329},
  {&(_ZTV8S20948C1[115]),  115,329},
  {&(_ZTV8S20948C1[119]),  119,329},
  {&(_ZTV8S20948C1[126]),  126,329},
  {&(_ZTV8S20948C1[133]),  133,329},
  {&(_ZTV8S20948C1[227]),  227,329},
  {&(_ZTV8S20948C1[231]),  231,329},
  {&(_ZTV8S20948C1[238]),  238,329},
  {&(_ZTV8S20948C1[142]),  142,329},
  {&(_ZTV8S20948C1[256]),  256,329},
  {&(_ZTV8S20948C1[256]),  256,329},
  {&(_ZTV8S20948C1[274]),  274,329},
  {&(_ZTV8S20948C1[279]),  279,329},
  {&(_ZTV8S20948C1[285]),  285,329},
  {&(_ZTV8S20948C1[297]),  297,329},
  {&(_ZTV8S20948C1[308]),  308,329},
  {&(_ZTV8S20948C1[312]),  312,329},
  {&(_ZTV8S20948C1[319]),  319,329},
  {&(_ZTV8S20948C1[326]),  326,329},
  {&(_ZTV8S20948C1[27]),  27,329},
  {&(_ZTV8S20948C1[38]),  38,329},
  {&(_ZTV8S20948C1[45]),  45,329},
  {&(_tg__ZTV8S20948C2__8S20948C1[17]),  17,19},
  {&(_tg__ZTV9S20948C128S20948C2__A1__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C128S20948C2__A1__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C128S20948C2__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C188S20948C2__8S20948C1[11]),  11,14},
  {&(_tg__ZTV9S20948C199S20948C188S20948C2__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C49S20948C199S20948C188S20948C2__A1__8S20948C1[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C49S20948C199S20948C188S20948C2__A2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C188S20948C2__A2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C188S20948C2__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C199S20948C188S20948C2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C199S20948C188S20948C2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C199S20948C188S20948C2__8S20948C1[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C199S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C188S20948C2__A2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C188S20948C2__A2__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C188S20948C2__A2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C188S20948C2__A2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C219S20948C188S20948C2__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C188S20948C2__A3__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C188S20948C2__A4__8S20948C1[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C139S20948C219S20948C188S20948C2__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C188S20948C2__A5__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C188S20948C2__A5__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C10__9S20948C219S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C188S20948C2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C219S20948C188S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV8S20948C5__9S20948C219S20948C188S20948C2__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C219S20948C188S20948C2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C219S20948C188S20948C2__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C188S20948C2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C188S20948C2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C188S20948C2__8S20948C1[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C16__A1__9S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C21__9S20948C188S20948C2__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C188S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV8S20948C5__A1__9S20948C188S20948C2__8S20948C1[4]),  4,6},
  {&(_tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C21__A4__9S20948C188S20948C2__8S20948C1[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C188S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C188S20948C2__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C188S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C228S20948C2__8S20948C1[6]),  6,9},
  {&(_tg__ZTV8S20948C4__9S20948C228S20948C2__8S20948C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C228S20948C2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C4__9S20948C228S20948C2__8S20948C1[2]),  2,3},
  {&(_tg__ZTV8S20948C3__8S20948C2__8S20948C1[10]),  10,12},
  {&(_tg__ZTV8S20948C4__8S20948C2__8S20948C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20948C2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C4__8S20948C2__8S20948C1[2]),  2,3},
  {&(_tg__ZTV9S20948C10__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV8S20948C3__8S20948C2__8S20948C1[10]),  10,12},
  {&(_tg__ZTV9S20948C138S20948C3__8S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C138S20948C3__A1__8S20948C2__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C18__A__8S20948C2__8S20948C1[11]),  11,14},
  {&(_tg__ZTV9S20948C20__8S20948C2__8S20948C1[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__A1__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A2__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C219S20948C18__8S20948C2__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__A1__8S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A4__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A5__8S20948C2__8S20948C1[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A2__8S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A3__8S20948C2__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A5__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C22__8S20948C2__8S20948C1[6]),  6,9},
  {&(_tg__ZTV9S20948C23__8S20948C2__8S20948C1[15]),  15,18},
  {&(_tg__ZTV9S20948C23__8S20948C2__8S20948C1[15]),  15,18},
  {&(_tg__ZTV9S20948C18__A1__8S20948C2__8S20948C1[15]),  15,18},
  {&(_tg__ZTV11S20948C9_nt8S20948C49S20948C199S20948C18__A7__8S20948C2__8S20948C1[2]),  2,3},
  {&(_tg__ZTV9S20948C169S20948C18__A6__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C219S20948C18__A1__8S20948C2__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__A3__8S20948C2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C139S20948C219S20948C18__A4__8S20948C2__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A10__8S20948C2__8S20948C1[4]),  4,7},
  {&(_tg__ZTV8S20948C3__8S20948C1[10]),  10,12},
  {&(_tg__ZTV9S20948C128S20948C3__8S20948C1[6]),  6,8},
  {&(_tg__ZTV9S20948C128S20948C3__8S20948C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20948C128S20948C3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C138S20948C3__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C138S20948C3__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C138S20948C3__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C138S20948C3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C138S20948C3__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C138S20948C3__8S20948C1[4]),  4,7},
  {&(_tg__ZTV9S20948C179S20948C169S20948C138S20948C3__8S20948C1[4]),  4,7},
  {&(_tg__ZTV9S20948C169S20948C138S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV8S20948C5__9S20948C138S20948C3__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C138S20948C3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C138S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C16__9S20948C138S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV8S20948C4__8S20948C3__8S20948C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20948C3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C4__8S20948C3__8S20948C1[2]),  2,3},
  {&(_tg__ZTV9S20948C10__8S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV8S20948C3__8S20948C1[10]),  10,12},
  {&(_tg__ZTV9S20948C13__8S20948C3__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C169S20948C13__8S20948C3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV8S20948C4__8S20948C1[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C4__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C4__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C4__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C10__8S20948C1[3]),  3,6},
  {&(_tg__ZTV8S20948C5__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C5__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C20__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C20__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C20__A1__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C20__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C20__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C20__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C16__9S20948C20__8S20948C1[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C20__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C13__A2__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C13__A2__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C13__A2__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C13__A2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C13__A2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C13__A5__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C13__A6__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C13__A6__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C13__A5__8S20948C1[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C13__A2__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C13__A2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C13__A2__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C13__A2__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C23__8S20948C1[14]),  14,17},
  {&(_tg__ZTV9S20948C23__8S20948C1[14]),  14,17},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C23__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C18__9S20948C23__8S20948C1[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20948C23__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt8S20948C49S20948C199S20948C18__A2__9S20948C23__8S20948C1[2]),  2,3},
  {&(_tg__ZTV9S20948C20__9S20948C23__8S20948C1[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C23__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A1__9S20948C23__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C219S20948C18__9S20948C23__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C23__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__9S20948C23__8S20948C1[7]),  7,9},
  {&(_tg__ZTV8S20948C5__A1__9S20948C23__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20948C139S20948C219S20948C18__A1__9S20948C23__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A3__9S20948C23__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A4__9S20948C23__8S20948C1[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C23__8S20948C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C23__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C23__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C18__A1__8S20948C1[11]),  11,14},
  {&(_tg__ZTV9S20948C199S20948C18__A1__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C49S20948C199S20948C18__A2__8S20948C1[4]),  4,6},
  {&(_tg__ZTV8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C58S20948C49S20948C199S20948C18__A3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20948C49S20948C199S20948C18__A2__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C199S20948C18__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C199S20948C18__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C199S20948C18__A1__8S20948C1[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C199S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C169S20948C18__A6__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C18__A7__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C18__A7__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C18__A6__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C219S20948C18__A1__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C169S20948C219S20948C18__A7__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C219S20948C18__A8__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C219S20948C18__A7__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C139S20948C219S20948C18__A3__8S20948C1[7]),  7,9},
  {&(_tg__ZTV9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[6]),  6,8},
  {&(_tg__ZTV8S20948C5__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C149S20948C139S20948C219S20948C18__A3__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C169S20948C139S20948C219S20948C18__A9__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C9_nt__9S20948C169S20948C139S20948C219S20948C18__A8__8S20948C1[3]),  3,4},
  {&(_tg__ZTV8S20948C5__9S20948C139S20948C219S20948C18__A3__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C139S20948C219S20948C18__A3__8S20948C1[3]),  3,5},
  {&(_tg__ZTV11S20948C9_nt__9S20948C139S20948C219S20948C18__A3__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C16__9S20948C139S20948C219S20948C18__A3__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C219S20948C18__A10__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C179S20948C219S20948C18__A10__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C10__9S20948C219S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV11S20948C9_nt__A1__9S20948C219S20948C18__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV9S20948C13__9S20948C219S20948C18__A1__8S20948C1[7]),  7,9},
  {&(_tg__ZTV8S20948C5__9S20948C219S20948C18__A1__8S20948C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20948C219S20948C18__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C169S20948C13__A1__9S20948C219S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C17__A2__9S20948C219S20948C18__A1__8S20948C1[4]),  4,7},
  {&(_tg__ZTV11S20948C9_nt__9S20948C18__A1__8S20948C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20948C18__A1__8S20948C1[3]),  3,5},
  {&(_tg__ZTV9S20948C20__9S20948C18__A1__8S20948C1[7]),  7,10},
  {&(_tg__ZTV9S20948C169S20948C20__9S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C16__A1__9S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C21__9S20948C18__A1__8S20948C1[9]),  9,13},
  {&(_tg__ZTV9S20948C10__9S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C139S20948C21__9S20948C18__A1__8S20948C1[7]),  7,9},
  {&(_tg__ZTV8S20948C5__A1__9S20948C18__A1__8S20948C1[4]),  4,6},
  {&(_tg__ZTV9S20948C169S20948C139S20948C21__A3__9S20948C18__A1__8S20948C1[5]),  5,8},
  {&(_tg__ZTV9S20948C179S20948C21__A4__9S20948C18__A1__8S20948C1[4]),  4,7},
  {&(_tg__ZTV9S20948C13__A1__9S20948C18__A1__8S20948C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20948C13__A2__9S20948C18__A1__8S20948C1[2]),  2,4},
  {&(_tg__ZTV9S20948C169S20948C13__A4__9S20948C18__A1__8S20948C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20948C1[];
extern  VTBL_ENTRY _ZTV8S20948C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20948C1[];
static VTBL_ENTRY alt_thunk_names14[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C23D0Ev,_ZTv0_n16_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C23D0Ev,_ZThn64_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C23D1Ev,_ZTv0_n16_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C23D1Ev,_ZThn64_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20948C23D0Ev,_ZTv0_n48_N9S20948C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C23D0Ev,_ZThn12_N9S20948C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20948C23D1Ev,_ZTv0_n48_N9S20948C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20948C23D1Ev,_ZThn12_N9S20948C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20948C2D0Ev,_ZTv0_n48_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20948C2D0Ev,_ZThn304_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20948C2D1Ev,_ZTv0_n48_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20948C2D1Ev,_ZThn304_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20948C2D0Ev,_ZTv0_n60_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20948C2D0Ev,_ZThn292_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20948C2D1Ev,_ZTv0_n60_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20948C2D1Ev,_ZThn292_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20948C2D0Ev,_ZTv0_n28_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20948C2D0Ev,_ZThn228_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20948C2D1Ev,_ZTv0_n28_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20948C2D1Ev,_ZThn228_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C2D0Ev,_ZTv0_n12_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20948C2D0Ev,_ZThn200_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C2D1Ev,_ZTv0_n12_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20948C2D1Ev,_ZThn200_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C2D0Ev,_ZTv0_n20_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20948C2D0Ev,_ZThn216_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20948C2D0Ev,_ZThn184_N8S20948C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C2D1Ev,_ZTv0_n20_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20948C2D1Ev,_ZThn216_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20948C2D1Ev,_ZThn184_N8S20948C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C22D0Ev,_ZTv0_n12_N9S20948C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20948C22D0Ev,_ZThn88_N9S20948C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C22D1Ev,_ZTv0_n12_N9S20948C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20948C22D1Ev,_ZThn88_N9S20948C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C22D0Ev,_ZTv0_n20_N9S20948C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20948C22D0Ev,_ZThn72_N9S20948C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C22D1Ev,_ZTv0_n20_N9S20948C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20948C22D1Ev,_ZThn72_N9S20948C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D0Ev,_ZTv0_n16_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20948C18D0Ev,_ZThn236_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20948C18D0Ev,_ZThn116_N9S20948C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D0Ev,_ZThn52_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C18D1Ev,_ZTv0_n16_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20948C18D1Ev,_ZThn236_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20948C18D1Ev,_ZThn116_N9S20948C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20948C18D1Ev,_ZThn52_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D0Ev,_ZTv0_n20_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20948C18D0Ev,_ZThn204_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C18D1Ev,_ZTv0_n20_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20948C18D1Ev,_ZThn204_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D0Ev,_ZTv0_n28_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C18D0Ev,_ZThn216_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C18D1Ev,_ZTv0_n28_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C18D1Ev,_ZThn216_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D0Ev,_ZTv0_n12_N9S20948C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C18D0Ev,_ZThn188_N9S20948C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C18D1Ev,_ZTv0_n12_N9S20948C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C18D1Ev,_ZThn188_N9S20948C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D0Ev,_ZTv0_n12_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20948C21D0Ev,_ZThn148_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C21D1Ev,_ZTv0_n12_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20948C21D1Ev,_ZThn148_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D0Ev,_ZTv0_n16_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C21D0Ev,_ZThn76_N9S20948C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D0Ev,_ZThn12_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C21D1Ev,_ZTv0_n16_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C21D1Ev,_ZThn76_N9S20948C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20948C21D1Ev,_ZThn12_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D0Ev,_ZTv0_n20_N9S20948C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20948C21D0Ev,_ZThn164_N9S20948C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20948C21D1Ev,_ZTv0_n20_N9S20948C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20948C21D1Ev,_ZThn164_N9S20948C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D0Ev,_ZTv0_n28_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C19D0Ev,_ZThn216_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20948C19D1Ev,_ZTv0_n28_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20948C19D1Ev,_ZThn216_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D0Ev,_ZTv0_n12_N9S20948C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C19D0Ev,_ZThn188_N9S20948C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C19D1Ev,_ZTv0_n12_N9S20948C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C19D1Ev,_ZThn188_N9S20948C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D0Ev,_ZTv0_n12_N8S20948C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D0Ev,_ZThn16_N8S20948C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C4D0Ev,_ZThn188_N8S20948C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C4D1Ev,_ZTv0_n12_N8S20948C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C4D1Ev,_ZThn16_N8S20948C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C4D1Ev,_ZThn188_N8S20948C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D0Ev,_ZTv0_n12_N8S20948C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C5D0Ev,_ZThn72_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D0Ev,_ZThn16_N8S20948C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C5D0Ev,_ZThn188_N8S20948C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C5D1Ev,_ZTv0_n12_N8S20948C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C5D1Ev,_ZThn72_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20948C5D1Ev,_ZThn16_N8S20948C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C5D1Ev,_ZThn188_N8S20948C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C2D0Ev,_ZTv0_n16_N8S20948C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20948C2D0Ev,_ZThn356_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C2D0Ev,_ZThn248_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C2D0Ev,_ZThn64_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20948C2D0Ev,_ZThn140_N8S20948C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20948C2D0Ev,_ZThn128_N8S20948C2D0Ev),
  (VTBL_ENTRY)_ZN8S20948C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C2D1Ev,_ZTv0_n16_N8S20948C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20948C2D1Ev,_ZThn356_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C2D1Ev,_ZThn248_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C2D1Ev,_ZThn64_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20948C2D1Ev,_ZThn140_N8S20948C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20948C2D1Ev,_ZThn128_N8S20948C2D1Ev),
  (VTBL_ENTRY)_ZN8S20948C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C3D0Ev,_ZTv0_n12_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C3D0Ev,_ZThn72_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20948C3D0Ev,_ZThn264_N8S20948C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C3D1Ev,_ZTv0_n12_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20948C3D1Ev,_ZThn72_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20948C3D1Ev,_ZThn264_N8S20948C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C3D0Ev,_ZTv0_n20_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20948C3D0Ev,_ZThn88_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C3D0Ev,_ZThn56_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20948C3D0Ev,_ZThn280_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C3D0Ev,_ZThn248_N8S20948C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C3D1Ev,_ZTv0_n20_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20948C3D1Ev,_ZThn88_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20948C3D1Ev,_ZThn56_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20948C3D1Ev,_ZThn280_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C3D1Ev,_ZThn248_N8S20948C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D0Ev,_ZTv0_n12_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn60_N9S20948C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C13D0Ev,_ZThn136_N9S20948C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20948C13D0Ev,_ZThn252_N9S20948C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C13D1Ev,_ZTv0_n12_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn60_N9S20948C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C13D1Ev,_ZThn136_N9S20948C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20948C13D1Ev,_ZThn252_N9S20948C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D0Ev,_ZTv0_n12_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn60_N9S20948C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C14D0Ev,_ZThn136_N9S20948C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20948C14D0Ev,_ZThn252_N9S20948C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C14D1Ev,_ZTv0_n12_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn60_N9S20948C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20948C14D1Ev,_ZThn136_N9S20948C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20948C14D1Ev,_ZThn252_N9S20948C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D0Ev,_ZTv0_n16_N9S20948C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D0Ev,_ZThn64_N9S20948C14D0Ev),
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20948C14D0Ev,_ZThn180_N9S20948C14D0Ev),
  (VTBL_ENTRY)_ZN9S20948C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C14D1Ev,_ZTv0_n16_N9S20948C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C14D1Ev,_ZThn64_N9S20948C14D1Ev),
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20948C14D1Ev,_ZThn180_N9S20948C14D1Ev),
  (VTBL_ENTRY)_ZN9S20948C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D0Ev,_ZTv0_n16_N9S20948C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D0Ev,_ZThn64_N9S20948C13D0Ev),
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20948C13D0Ev,_ZThn180_N9S20948C13D0Ev),
  (VTBL_ENTRY)_ZN9S20948C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C13D1Ev,_ZTv0_n16_N9S20948C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20948C13D1Ev,_ZThn64_N9S20948C13D1Ev),
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20948C13D1Ev,_ZThn180_N9S20948C13D1Ev),
  (VTBL_ENTRY)_ZN9S20948C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D0Ev,_ZTv0_n12_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C12D0Ev,_ZThn72_N9S20948C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20948C12D0Ev,_ZThn200_N9S20948C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20948C12D0Ev,_ZThn264_N9S20948C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20948C12D1Ev,_ZTv0_n12_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20948C12D1Ev,_ZThn72_N9S20948C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20948C12D1Ev,_ZThn200_N9S20948C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20948C12D1Ev,_ZThn264_N9S20948C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C12D0Ev,_ZTv0_n16_N9S20948C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20948C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C12D0Ev,_ZThn128_N9S20948C12D0Ev),
  (VTBL_ENTRY)_ZN9S20948C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C12D0Ev,_ZThn192_N9S20948C12D0Ev),
  (VTBL_ENTRY)_ZN9S20948C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20948C12D1Ev,_ZTv0_n16_N9S20948C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20948C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20948C12D1Ev,_ZThn128_N9S20948C12D1Ev),
  (VTBL_ENTRY)_ZN9S20948C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20948C12D1Ev,_ZThn192_N9S20948C12D1Ev),
  (VTBL_ENTRY)_ZN9S20948C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C3D0Ev,_ZTv0_n16_N8S20948C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev),
  (VTBL_ENTRY)_ZN8S20948C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D0Ev,_ZThn12_N8S20948C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C3D0Ev,_ZThn192_N8S20948C3D0Ev),
  (VTBL_ENTRY)_ZN8S20948C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C3D1Ev,_ZTv0_n16_N8S20948C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev),
  (VTBL_ENTRY)_ZN8S20948C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C3D1Ev,_ZThn12_N8S20948C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C3D1Ev,_ZThn192_N8S20948C3D1Ev),
  (VTBL_ENTRY)_ZN8S20948C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20948C1D0Ev,_ZTv0_n48_N8S20948C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S20948C1D0Ev,_ZThn368_N8S20948C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20948C1D1Ev,_ZTv0_n48_N8S20948C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S20948C1D1Ev,_ZThn368_N8S20948C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20948C1D0Ev,_ZTv0_n60_N8S20948C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20948C1D0Ev,_ZThn356_N8S20948C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20948C1D1Ev,_ZTv0_n60_N8S20948C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20948C1D1Ev,_ZThn356_N8S20948C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20948C1D0Ev,_ZTv0_n28_N8S20948C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20948C1D0Ev,_ZThn292_N8S20948C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20948C1D1Ev,_ZTv0_n28_N8S20948C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20948C1D1Ev,_ZThn292_N8S20948C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C1D0Ev,_ZTv0_n12_N8S20948C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20948C1D0Ev,_ZThn264_N8S20948C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20948C1D1Ev,_ZTv0_n12_N8S20948C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20948C1D1Ev,_ZThn264_N8S20948C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C1D0Ev,_ZTv0_n20_N8S20948C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20948C1D0Ev,_ZThn280_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C1D0Ev,_ZThn248_N8S20948C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20948C1D1Ev,_ZTv0_n20_N8S20948C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20948C1D1Ev,_ZThn280_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20948C1D1Ev,_ZThn248_N8S20948C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C1D0Ev,_ZTv0_n16_N8S20948C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S20948C1D0Ev,_ZThn420_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20948C1D0Ev,_ZThn312_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20948C1D0Ev,_ZThn204_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C1D0Ev,_ZThn192_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20948C1D0Ev,_ZThn128_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20948C1D0Ev,_ZThn64_N8S20948C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C1D0Ev,_ZThn12_N8S20948C1D0Ev),
  (VTBL_ENTRY)_ZN8S20948C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20948C1D1Ev,_ZTv0_n16_N8S20948C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S20948C1D1Ev,_ZThn420_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20948C1D1Ev,_ZThn312_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20948C1D1Ev,_ZThn204_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20948C1D1Ev,_ZThn192_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20948C1D1Ev,_ZThn128_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20948C1D1Ev,_ZThn64_N8S20948C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20948C1D1Ev,_ZThn12_N8S20948C1D1Ev),
  (VTBL_ENTRY)_ZN8S20948C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20948C1 = {  "S20948C1", // class name
  bases_S20948C1, 114,
  &(vtc_S20948C1[0]), // expected_vtbl_contents
  &(vtt_S20948C1[0]), // expected_vtt_contents
  ABISELECT(816,468), // object size
  NSPAIRA(_ZTI8S20948C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20948C1),329, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20948C1),288, //virtual table table var
  71, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names14,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C4  : S9624C48 , virtual S20948C7_nt {
  virtual  ~S20436C4(); // _ZN8S20436C4D2Ev
  S20436C4(); // tgen
};
//SIG(-1 S20436C4) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S20436C4()
{
  extern Class_Descriptor cd_S20436C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20436C4, buf);
    S20436C4 *dp, &lv = *(dp=new (buf) S20436C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20436C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C4)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20436C4");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S20436C4");
    test_class_info(&lv, &cd_S20436C4);
    dp->~S20436C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C4(Test_S20436C4, "S20436C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20436C4C1Ev();
extern void _ZN8S20436C4D2Ev();
Name_Map name_map_S20436C4[] = {
  NSPAIR(_ZN8S20436C4C1Ev),
  NSPAIR(_ZN8S20436C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S20436C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20436C4[];
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20436C4D1Ev,_ZThn4_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20436C4D0Ev,_ZThn4_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C4[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20436C4[];
static  VTT_ENTRY vtt_S20436C4[] = {
  {&(_ZTV8S20436C4[3]),  3,10},
  {&(_ZTV8S20436C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
static VTBL_ENTRY alt_thunk_names15[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C4D0Ev,_ZThn4_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C4D1Ev,_ZThn4_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C4 = {  "S20436C4", // class name
  bases_S20436C4, 2,
  &(vtc_S20436C4[0]), // expected_vtbl_contents
  &(vtt_S20436C4[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20436C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20436C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20436C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names15,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C8  {
  virtual void  v1(); // _ZN8S20436C82v1Ev
  ~S20436C8(); // tgen
  S20436C8(); // tgen
};
//SIG(-1 S20436C8) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20436C8C1Ev();
extern void _ZN8S20436C8D1Ev();
Name_Map name_map_S20436C8[] = {
  NSPAIR(_ZN8S20436C8C1Ev),
  NSPAIR(_ZN8S20436C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20436C8[];
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY vtc_S20436C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C8[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
Class_Descriptor cd_S20436C8 = {  "S20436C8", // class name
  0,0,//no base classes
  &(vtc_S20436C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20436C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20436C8),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  S20436C3  : S20436C4 , S20948C8 , S20436C8 , virtual S9624C48 {
  ~S20436C3(); // tgen
  S20436C3(); // tgen
};
//SIG(-1 S20436C3) C1{ BC2{ BC3{ m} VBC4{ vd m FD} vd} BC5{ m Fc[7]} BC6{ v1} VBC3}


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

static void Test_S20436C3()
{
  extern Class_Descriptor cd_S20436C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20436C3, buf);
    S20436C3 *dp, &lv = *(dp=new (buf) S20436C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20436C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C3)");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*), 0, "S20436C3");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(32,16), "S20436C3");
    check_base_class_offset(lv, (S20436C4*), 0, "S20436C3");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20436C3");
    check_base_class_offset(lv, (S20436C8*), ABISELECT(16,12), "S20436C3");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(64,32), "S20436C3");
    test_class_info(&lv, &cd_S20436C3);
    dp->~S20436C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C3(Test_S20436C3, "S20436C3", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20436C3C1Ev();
extern void _ZN8S20436C3D1Ev();
Name_Map name_map_S20436C3[] = {
  NSPAIR(_ZN8S20436C3C1Ev),
  NSPAIR(_ZN8S20436C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20436C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20436C4,    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_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20436C3[];
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C3D1Ev,_ZThn16_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C3D0Ev,_ZThn16_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C3[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20436C3[];
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__8S20436C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn16_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn16_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__8S20436C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
static  VTT_ENTRY vtt_S20436C3[] = {
  {&(_ZTV8S20436C3[4]),  4,14},
  {&(_tg__ZTV8S20436C4__8S20436C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__8S20436C3[3]),  3,5},
  {&(_ZTV8S20436C3[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
static VTBL_ENTRY alt_thunk_names16[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn16_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn16_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C3D0Ev,_ZThn16_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C3D1Ev,_ZThn16_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C3 = {  "S20436C3", // class name
  bases_S20436C3, 6,
  &(vtc_S20436C3[0]), // expected_vtbl_contents
  &(vtt_S20436C3[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20436C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20436C3),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20436C3),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names16,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C9  : S20436C8 , virtual S9624C39 {
  int s20436c9f0:23;
  virtual  ~S20436C9(); // _ZN8S20436C9D2Ev
  S20436C9(); // tgen
};
//SIG(-1 S20436C9) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S20436C9()
{
  extern Class_Descriptor cd_S20436C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20436C9, buf);
    S20436C9 *dp, &lv = *(dp=new (buf) S20436C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20436C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20436C9)");
    check_base_class_offset(lv, (S20436C8*), 0, "S20436C9");
    check_base_class_offset(lv, (S9624C39*), 0, "S20436C9");
    set_bf_and_test(lv, s20436c9f0, ABISELECT(8,4), 0, 23, 1, "S20436C9");
    set_bf_and_test(lv, s20436c9f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S20436C9");
    test_class_info(&lv, &cd_S20436C9);
    dp->~S20436C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C9(Test_S20436C9, "S20436C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20436C9C1Ev();
extern void _ZN8S20436C9D2Ev();
Name_Map name_map_S20436C9[] = {
  NSPAIR(_ZN8S20436C9C1Ev),
  NSPAIR(_ZN8S20436C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20436C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20436C9[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY vtc_S20436C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S20436C9[];
static  VTT_ENTRY vtt_S20436C9[] = {
  {&(_ZTV8S20436C9[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
Class_Descriptor cd_S20436C9 = {  "S20436C9", // class name
  bases_S20436C9, 2,
  &(vtc_S20436C9[0]), // expected_vtbl_contents
  &(vtt_S20436C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20436C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20436C9),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20436C9),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  S20436C11  : S20948C8 , virtual S20436C4 , virtual S9624C48 {
  virtual  ~S20436C11(); // _ZN9S20436C11D2Ev
  S20436C11(); // tgen
};
//SIG(-1 S20436C11) C1{ BC2{ m Fc[7]} VBC3{ BC4{ m} VBC5{ vd m FD} vd} VBC4 vd}


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

static void Test_S20436C11()
{
  extern Class_Descriptor cd_S20436C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20436C11, buf);
    S20436C11 *dp, &lv = *(dp=new (buf) S20436C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20436C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C11)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20436C11");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*), 0, "S20436C11");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(16,12), "S20436C11");
    check_base_class_offset(lv, (S20436C4*), 0, "S20436C11");
    /*is_ambiguous_... S20436C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(48,28), "S20436C11");
    test_class_info(&lv, &cd_S20436C11);
    dp->~S20436C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C11(Test_S20436C11, "S20436C11", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S20436C11C1Ev();
extern void _ZN9S20436C11D2Ev();
Name_Map name_map_S20436C11[] = {
  NSPAIR(_ZN9S20436C11C1Ev),
  NSPAIR(_ZN9S20436C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20436C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C11[];
extern void _ZN9S20436C11D1Ev();
extern void _ZN9S20436C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C11D1Ev,_ZThn12_N9S20436C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C11D0Ev,_ZThn12_N9S20436C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C11[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C11[0]),
  (VTBL_ENTRY)&_ZN9S20436C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C11[];
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20436C4D1Ev,_ZThn12_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20436C4D0Ev,_ZThn12_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__9S20436C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
static  VTT_ENTRY vtt_S20436C11[] = {
  {&(_ZTV9S20436C11[6]),  6,13},
  {&(_ZTV9S20436C11[6]),  6,13},
  {&(_ZTV9S20436C11[11]),  11,13},
  {&(_tg__ZTV8S20436C4__9S20436C11[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__9S20436C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20436C11[];
extern  VTBL_ENTRY _ZTV9S20436C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C11[];
static VTBL_ENTRY alt_thunk_names17[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C4D0Ev,_ZThn12_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C4D1Ev,_ZThn12_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C11D0Ev,_ZThn12_N9S20436C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C11D1Ev,_ZThn12_N9S20436C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C11 = {  "S20436C11", // class name
  bases_S20436C11, 5,
  &(vtc_S20436C11[0]), // expected_vtbl_contents
  &(vtt_S20436C11[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S20436C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20436C11),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names17,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C14  : S9624C39 {
  ::S9624C48 s20436c14f0;
  ::S9624C39 s20436c14f1;
};
//SIG(-1 S20436C14) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S20436C14()
{
  extern Class_Descriptor cd_S20436C14;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S20436C14, buf);
    S20436C14 &lv = *(new (buf) S20436C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S20436C14)");
    check2(__alignof__(lv), 1, "__alignof__(S20436C14)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20436C14");
    check_field_offset(lv, s20436c14f0, 0, "S20436C14.s20436c14f0");
    check_field_offset(lv, s20436c14f1, 1, "S20436C14.s20436c14f1");
    test_class_info(&lv, &cd_S20436C14);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C14(Test_S20436C14, "S20436C14", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20436C13  : S9624C48 , S20436C14 , virtual S20436C4 , virtual S20436C8 {
  void *s20436c13f0;
  ~S20436C13(); // tgen
  S20436C13(); // tgen
};
//SIG(-1 S20436C13) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S20436C13()
{
  extern Class_Descriptor cd_S20436C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20436C13, buf);
    S20436C13 *dp, &lv = *(dp=new (buf) S20436C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S20436C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C13)");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S20436C13");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*), ABISELECT(9,5), "S20436C13");
    check_base_class_offset(lv, (S20436C14*), ABISELECT(9,5), "S20436C13");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*), 0, "S20436C13");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(32,12), "S20436C13");
    check_base_class_offset(lv, (S20436C4*), 0, "S20436C13");
    check_base_class_offset(lv, (S20436C8*), ABISELECT(64,28), "S20436C13");
    check_field_offset(lv, s20436c13f0, ABISELECT(16,8), "S20436C13.s20436c13f0");
    test_class_info(&lv, &cd_S20436C13);
    dp->~S20436C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C13(Test_S20436C13, "S20436C13", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN9S20436C13C1Ev();
extern void _ZN9S20436C13D1Ev();
Name_Map name_map_S20436C13[] = {
  NSPAIR(_ZN9S20436C13C1Ev),
  NSPAIR(_ZN9S20436C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
static Base_Class bases_S20436C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C13[];
extern void _ZN9S20436C13D1Ev();
extern void _ZN9S20436C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20436C13D1Ev,_ZThn12_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S20436C13D0Ev,_ZThn12_N9S20436C13D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY vtc_S20436C13[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C13D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20436C13[];
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C13[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn12_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn12_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__9S20436C13[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
static  VTT_ENTRY vtt_S20436C13[] = {
  {&(_ZTV9S20436C13[6]),  6,17},
  {&(_ZTV9S20436C13[6]),  6,17},
  {&(_ZTV9S20436C13[11]),  11,17},
  {&(_ZTV9S20436C13[16]),  16,17},
  {&(_tg__ZTV8S20436C4__9S20436C13[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__9S20436C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
static VTBL_ENTRY alt_thunk_names18[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn12_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn12_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C13D0Ev,_ZThn12_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C13D1Ev,_ZThn12_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C13 = {  "S20436C13", // class name
  bases_S20436C13, 7,
  &(vtc_S20436C13[0]), // expected_vtbl_contents
  &(vtt_S20436C13[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI9S20436C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20436C13),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C13),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names18,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C16  : virtual S20436C8 {
  virtual  ~S20436C16(); // _ZN9S20436C16D2Ev
  S20436C16(); // tgen
};
//SIG(-1 S20436C16) C1{ VBC2{ v1} vd}


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

static void Test_S20436C16()
{
  extern Class_Descriptor cd_S20436C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20436C16, buf);
    S20436C16 *dp, &lv = *(dp=new (buf) S20436C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20436C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20436C16)");
    check_base_class_offset(lv, (S20436C8*), 0, "S20436C16");
    test_class_info(&lv, &cd_S20436C16);
    dp->~S20436C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C16(Test_S20436C16, "S20436C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20436C16C1Ev();
extern void _ZN9S20436C16D2Ev();
Name_Map name_map_S20436C16[] = {
  NSPAIR(_ZN9S20436C16C1Ev),
  NSPAIR(_ZN9S20436C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
static Base_Class bases_S20436C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    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 _ZTI9S20436C16[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY vtc_S20436C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S20436C16[];
static  VTT_ENTRY vtt_S20436C16[] = {
  {&(_ZTV9S20436C16[4]),  4,7},
  {&(_ZTV9S20436C16[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
Class_Descriptor cd_S20436C16 = {  "S20436C16", // class name
  bases_S20436C16, 1,
  &(vtc_S20436C16[0]), // expected_vtbl_contents
  &(vtt_S20436C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20436C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20436C16),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C16),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  S20436C15  : S20436C16 , virtual S9624C48 {
  ::S20948C8 s20436c15f0;
  virtual  ~S20436C15(); // _ZN9S20436C15D2Ev
  S20436C15(); // tgen
};
//SIG(-1 S20436C15) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S20436C15()
{
  extern Class_Descriptor cd_S20436C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20436C15, buf);
    S20436C15 *dp, &lv = *(dp=new (buf) S20436C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20436C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20436C15)");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*), 0, "S20436C15");
    check_base_class_offset(lv, (S20436C16*), 0, "S20436C15");
    check_base_class_offset(lv, (S9624C48*), 0, "S20436C15");
    check_field_offset(lv, s20436c15f0, ABISELECT(8,4), "S20436C15.s20436c15f0");
    test_class_info(&lv, &cd_S20436C15);
    dp->~S20436C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C15(Test_S20436C15, "S20436C15", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S20436C15C1Ev();
extern void _ZN9S20436C15D2Ev();
Name_Map name_map_S20436C15[] = {
  NSPAIR(_ZN9S20436C15C1Ev),
  NSPAIR(_ZN9S20436C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20436C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    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_S20436C16,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20436C15[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY vtc_S20436C15[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern VTBL_ENTRY _ZTV9S20436C15[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C16__9S20436C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
static  VTT_ENTRY vtt_S20436C15[] = {
  {&(_ZTV9S20436C15[5]),  5,8},
  {&(_tg__ZTV9S20436C16__9S20436C15[4]),  4,7},
  {&(_tg__ZTV9S20436C16__9S20436C15[4]),  4,7},
  {&(_ZTV9S20436C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
Class_Descriptor cd_S20436C15 = {  "S20436C15", // class name
  bases_S20436C15, 3,
  &(vtc_S20436C15[0]), // expected_vtbl_contents
  &(vtt_S20436C15[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S20436C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20436C15),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C15),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C12  : S20436C13 , S20436C14 , S20948C7_nt , S20436C15 {
  ~S20436C12(); // tgen
  S20436C12(); // tgen
};
//SIG(-1 S20436C12) C1{ BC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} BC4 BC7 BC9{ BC10{ VBC8 vd} VBC3 vd FC11{ m Fc[7]}}}


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

static void Test_S20436C12()
{
  extern Class_Descriptor cd_S20436C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20436C12, buf);
    S20436C12 *dp, &lv = *(dp=new (buf) S20436C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20436C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C12)");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*), ABISELECT(8,4), "S20436C12");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*), ABISELECT(9,5), "S20436C12");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*), ABISELECT(9,5), "S20436C12");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*), 0, "S20436C12");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(80,44), "S20436C12");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*), 0, "S20436C12");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*), ABISELECT(64,32), "S20436C12");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*), ABISELECT(64,32), "S20436C12");
    check_base_class_offset(lv, (S20436C13*), 0, "S20436C12");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*), ABISELECT(24,12), "S20436C12");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*), ABISELECT(24,12), "S20436C12");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,16), "S20436C12");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*), ABISELECT(64,32), "S20436C12");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*), ABISELECT(112,60), "S20436C12");
    check_base_class_offset(lv, (S20436C15*), ABISELECT(64,32), "S20436C12");
    test_class_info(&lv, &cd_S20436C12);
    dp->~S20436C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C12(Test_S20436C12, "S20436C12", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN9S20436C12C1Ev();
extern void _ZN9S20436C12D1Ev();
Name_Map name_map_S20436C12[] = {
  NSPAIR(_ZN9S20436C12C1Ev),
  NSPAIR(_ZN9S20436C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
static Base_Class bases_S20436C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20436C4,    0, //bcp->offset
    -1, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20436C8,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20436C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20436C14,    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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C16,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20436C15,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C12[];
extern void _ZN9S20436C12D1Ev();
extern void _ZN9S20436C12D0Ev();
extern void ABISELECT(_ZThn32_N9S20436C12D1Ev,_ZThn16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20436C12D0Ev,_ZThn16_N9S20436C12D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C12D1Ev,_ZThn44_N9S20436C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S20436C12D0Ev,_ZThn44_N9S20436C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C12[] = {
  ABISELECT(112,60),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN9S20436C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C12D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20436C12D1Ev,_ZThn16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20436C12D0Ev,_ZThn16_N9S20436C12D0Ev),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C12[];
extern void _ZN9S20436C13D1Ev();
extern void _ZN9S20436C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C13__9S20436C12[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C13D1Ev,_ZThn44_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S20436C13D0Ev,_ZThn44_N9S20436C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C13__9S20436C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C13__9S20436C12[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C15__9S20436C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C12[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S20436C4D1Ev,_ZThn44_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S20436C4D0Ev,_ZThn44_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__9S20436C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
static  VTT_ENTRY vtt_S20436C12[] = {
  {&(_ZTV9S20436C12[7]),  7,26},
  {&(_tg__ZTV9S20436C13__9S20436C12[6]),  6,8},
  {&(_tg__ZTV9S20436C13__9S20436C12[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C13__9S20436C12[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C13__9S20436C12[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C12[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C15__9S20436C12[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C15__9S20436C12[4]),  4,7},
  {&(_tg__ZTV9S20436C15__9S20436C12[5]),  5,8},
  {&(_ZTV9S20436C12[7]),  7,26},
  {&(_ZTV9S20436C12[24]),  24,26},
  {&(_ZTV9S20436C12[18]),  18,26},
  {&(_ZTV9S20436C12[18]),  18,26},
  {&(_tg__ZTV8S20436C4__9S20436C12[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__9S20436C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
static VTBL_ENTRY alt_thunk_names19[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20436C4D0Ev,_ZThn44_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20436C4D1Ev,_ZThn44_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C13D0Ev,_ZThn44_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C13D1Ev,_ZThn44_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C12D0Ev,_ZThn44_N9S20436C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C12D1Ev,_ZThn44_N9S20436C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C12 = {  "S20436C12", // class name
  bases_S20436C12, 14,
  &(vtc_S20436C12[0]), // expected_vtbl_contents
  &(vtt_S20436C12[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI9S20436C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20436C12),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C12),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names19,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C2  : virtual S20436C3 , virtual S20436C9 , virtual S20436C8 , S20436C11 , S20436C12 {
  virtual  ~S20436C2(); // _ZN8S20436C2D2Ev
  S20436C2(); // tgen
};
//SIG(-1 S20436C2) C1{ VBC2{ BC3{ BC4{ m} VBC5{ vd m FD} vd} BC6{ m Fc[7]} BC7{ v1} VBC4} VBC8{ BC7 VBC9{ m} vd Fi:23} VBC7 BC10{ BC6 VBC3 VBC4 vd} BC11{ BC12{ BC4 BC13{ BC9 FC4 FC9} VBC3 VBC7 Fp} BC13 BC5 BC14{ BC15{ VBC7 vd} VBC4 vd FC6}} vd}


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

static void Test_S20436C2()
{
  extern Class_Descriptor cd_S20436C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S20436C2, buf);
    S20436C2 *dp, &lv = *(dp=new (buf) S20436C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S20436C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C2)");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*), ABISELECT(96,56), "S20436C2");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*), ABISELECT(128,72), "S20436C2");
    /*is_ambiguous_... S20436C2::S20436C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(128,72), "S20436C2");
    check_base_class_offset(lv, (S20436C4*)(S20436C3*), ABISELECT(96,56), "S20436C2");
    check_base_class_offset(lv, (S20948C8*)(S20436C3*), ABISELECT(104,60), "S20436C2");
    check_base_class_offset(lv, (S20436C8*)(S20436C3*), ABISELECT(112,68), "S20436C2");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*), ABISELECT(160,88), "S20436C2");
    /*is_ambiguous_... S20436C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C11*), ABISELECT(160,88), "S20436C2");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*), ABISELECT(160,88), "S20436C2");
    check_base_class_offset(lv, (S20436C3*), ABISELECT(96,56), "S20436C2");
    check_base_class_offset(lv, (S20436C8*)(S20436C9*), ABISELECT(160,88), "S20436C2");
    check_base_class_offset(lv, (S9624C39*)(S20436C9*), 0, "S20436C2");
    check_base_class_offset(lv, (S20436C9*), ABISELECT(160,88), "S20436C2");
    /*is_ambiguous_... S20436C2::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*), ABISELECT(80,44), "S20436C2");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*), ABISELECT(80,44), "S20436C2");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(80,44), "S20436C2");
    check_base_class_offset(lv, (S20948C8*)(S20436C11*), ABISELECT(8,4), "S20436C2");
    /*is_ambiguous_... S20436C2::S20436C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*), 0, "S20436C2");
    check_base_class_offset(lv, (S20436C4*)(S20436C11*), 0, "S20436C2");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*), 0, "S20436C2");
    check_base_class_offset(lv, (S20436C11*), 0, "S20436C2");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*), ABISELECT(24,16), "S20436C2");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(25,17), "S20436C2");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(25,17), "S20436C2");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*), ABISELECT(16,12), "S20436C2");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*), ABISELECT(40,24), "S20436C2");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*), ABISELECT(40,24), "S20436C2");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*), ABISELECT(48,28), "S20436C2");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(80,44), "S20436C2");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*), ABISELECT(80,44), "S20436C2");
    check_base_class_offset(lv, (S20436C12*), ABISELECT(16,12), "S20436C2");
    test_class_info(&lv, &cd_S20436C2);
    dp->~S20436C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C2(Test_S20436C2, "S20436C2", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S20436C2C1Ev();
extern void _ZN8S20436C2D2Ev();
Name_Map name_map_S20436C2[] = {
  NSPAIR(_ZN8S20436C2C1Ev),
  NSPAIR(_ZN8S20436C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C9;
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C11;
extern VTBL_ENTRY _ZTI9S20436C11[];
extern  VTBL_ENTRY _ZTV9S20436C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
static Base_Class bases_S20436C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20436C4,    ABISELECT(96,56), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(112,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    6, //immediately_derived
  0, 1},
  {&cd_S20436C3,    ABISELECT(96,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C9,    ABISELECT(160,88), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20436C11,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20436C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20436C14,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20436C2[];
extern void ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev)();
extern void _ZN8S20436C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev)();
extern void _ZN8S20436C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20436C2D1Ev,_ZThn12_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20436C2D0Ev,_ZThn12_N8S20436C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S20436C2D1Ev,_ZThn28_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20436C2D0Ev,_ZThn28_N8S20436C2D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N8S20436C2D1Ev,_ZThn44_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20436C2D0Ev,_ZThn44_N8S20436C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20436C2D1Ev,_ZThn56_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20436C2D0Ev,_ZThn56_N8S20436C2D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20436C2D1Ev,_ZTv0_n12_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20436C2D1Ev,_ZThn72_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C2D0Ev,_ZTv0_n12_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20436C2D0Ev,_ZThn72_N8S20436C2D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20436C2D1Ev,_ZThn88_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S20436C2D0Ev,_ZThn88_N8S20436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C2[] = {
  ABISELECT(80,44),
  0,
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20436C2D1Ev,_ZThn28_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20436C2D0Ev,_ZThn28_N8S20436C2D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20436C2D1Ev,_ZThn44_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20436C2D0Ev,_ZThn44_N8S20436C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C2D1Ev,_ZTv0_n12_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C2D0Ev,_ZTv0_n12_N8S20436C2D0Ev),
  ABISELECT(-160,-88),
  0,
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20436C2[];
extern void ABISELECT(_ZTv0_n32_N9S20436C11D1Ev,_ZTv0_n16_N9S20436C11D1Ev)();
extern void _ZN9S20436C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C11D0Ev,_ZTv0_n16_N9S20436C11D0Ev)();
extern void _ZN9S20436C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C11__8S20436C2[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C11D1Ev,_ZTv0_n16_N9S20436C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C11D0Ev,_ZTv0_n16_N9S20436C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S20436C11D1Ev,_ZThn72_N9S20436C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S20436C11D0Ev,_ZThn72_N9S20436C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C11__8S20436C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20436C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__8S20436C2[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C12__8S20436C2[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C12__8S20436C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C13D1Ev,_ZThn60_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C13D0Ev,_ZThn60_N9S20436C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C12__8S20436C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C12__8S20436C2[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__8S20436C2[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C12__8S20436C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C12__8S20436C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C12D1Ev,_ZThn60_N9S20436C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C12D0Ev,_ZThn60_N9S20436C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C12__8S20436C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12__8S20436C2[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C3__8S20436C2[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C3__8S20436C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn16_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn16_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C3__8S20436C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C3D1Ev,_ZThn16_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C3D0Ev,_ZThn16_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C3__8S20436C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C9__8S20436C2[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A1__8S20436C2[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20436C4D1Ev,_ZThn72_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20436C4D0Ev,_ZThn72_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__A1__8S20436C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
static  VTT_ENTRY vtt_S20436C2[] = {
  {&(_ZTV8S20436C2[10]),  10,57},
  {&(_tg__ZTV9S20436C11__8S20436C2[6]),  6,8},
  {&(_tg__ZTV9S20436C11__8S20436C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C11__8S20436C2[3]),  3,5},
  {&(_tg__ZTV9S20436C12__8S20436C2[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C12__8S20436C2[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C12__8S20436C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C12__8S20436C2[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C12__8S20436C2[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C12__8S20436C2[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__8S20436C2[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__8S20436C2[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C12__8S20436C2[5]),  5,8},
  {&(_tg__ZTV8S20436C4__9S20436C12__8S20436C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C12__8S20436C2[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C12__8S20436C2[5]),  5,8},
  {&(_tg__ZTV9S20436C15__9S20436C12__8S20436C2[5]),  5,8},
  {&(_ZTV8S20436C2[39]),  39,57},
  {&(_ZTV8S20436C2[47]),  47,57},
  {&(_ZTV8S20436C2[43]),  43,57},
  {&(_ZTV8S20436C2[54]),  54,57},
  {&(_ZTV8S20436C2[30]),  30,57},
  {&(_ZTV8S20436C2[10]),  10,57},
  {&(_ZTV8S20436C2[19]),  19,57},
  {&(_ZTV8S20436C2[30]),  30,57},
  {&(_tg__ZTV8S20436C3__8S20436C2[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C3__8S20436C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C3__8S20436C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C3__8S20436C2[3]),  3,5},
  {&(_tg__ZTV8S20436C9__8S20436C2[3]),  3,6},
  {&(_tg__ZTV8S20436C4__A1__8S20436C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__A1__8S20436C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20436C2[];
extern  VTBL_ENTRY _ZTV8S20436C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C2[];
static VTBL_ENTRY alt_thunk_names20[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C3D0Ev,_ZThn16_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C3D1Ev,_ZThn16_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C4D0Ev,_ZThn72_N8S20436C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn16_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C4D1Ev,_ZThn72_N8S20436C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn16_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C12D0Ev,_ZThn60_N9S20436C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C12D1Ev,_ZThn60_N9S20436C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C13D0Ev,_ZThn60_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C13D1Ev,_ZThn60_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20436C11D0Ev,_ZThn72_N9S20436C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20436C11D1Ev,_ZThn72_N9S20436C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C11D0Ev,_ZTv0_n16_N9S20436C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C11D1Ev,_ZTv0_n16_N9S20436C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C2D0Ev,_ZTv0_n12_N8S20436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C2D0Ev,_ZThn72_N8S20436C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C2D1Ev,_ZTv0_n12_N8S20436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C2D1Ev,_ZThn72_N8S20436C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20436C2D0Ev,_ZThn88_N8S20436C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C2D0Ev,_ZThn56_N8S20436C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20436C2D1Ev,_ZThn88_N8S20436C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C2D1Ev,_ZThn56_N8S20436C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C2D0Ev,_ZThn12_N8S20436C2D0Ev),
  (VTBL_ENTRY)_ZN8S20436C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C2D1Ev,_ZThn12_N8S20436C2D1Ev),
  (VTBL_ENTRY)_ZN8S20436C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C2 = {  "S20436C2", // class name
  bases_S20436C2, 25,
  &(vtc_S20436C2[0]), // expected_vtbl_contents
  &(vtt_S20436C2[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S20436C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20436C2),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20436C2),32, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names20,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C19  : S9624C48 , virtual S20948C7_nt , S20436C8 , S20436C15 {
  int s20436c19f0;
  virtual  ~S20436C19(); // _ZN9S20436C19D2Ev
  S20436C19(); // tgen
};
//SIG(-1 S20436C19) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


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

static void Test_S20436C19()
{
  extern Class_Descriptor cd_S20436C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20436C19, buf);
    S20436C19 *dp, &lv = *(dp=new (buf) S20436C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20436C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C19)");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20436C19");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S20436C19");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*), 0, "S20436C19");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*), ABISELECT(8,4), "S20436C19");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*), ABISELECT(8,4), "S20436C19");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*), ABISELECT(64,36), "S20436C19");
    check_base_class_offset(lv, (S20436C15*), ABISELECT(8,4), "S20436C19");
    check_field_offset(lv, s20436c19f0, ABISELECT(24,16), "S20436C19.s20436c19f0");
    test_class_info(&lv, &cd_S20436C19);
    dp->~S20436C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C19(Test_S20436C19, "S20436C19", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN9S20436C19C1Ev();
extern void _ZN9S20436C19D2Ev();
Name_Map name_map_S20436C19[] = {
  NSPAIR(_ZN9S20436C19C1Ev),
  NSPAIR(_ZN9S20436C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
static Base_Class bases_S20436C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20436C16,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20436C15,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S20436C19[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20436C19D1Ev,_ZThn20_N9S20436C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20436C19D0Ev,_ZThn20_N9S20436C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C19[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C19[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C15__9S20436C19[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
static  VTT_ENTRY vtt_S20436C19[] = {
  {&(_ZTV9S20436C19[5]),  5,21},
  {&(_tg__ZTV9S20436C15__9S20436C19[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C15__9S20436C19[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C15__9S20436C19[4]),  4,7},
  {&(_tg__ZTV9S20436C15__9S20436C19[5]),  5,8},
  {&(_ZTV9S20436C19[19]),  19,21},
  {&(_ZTV9S20436C19[13]),  13,21},
  {&(_ZTV9S20436C19[13]),  13,21},
};
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
static VTBL_ENTRY alt_thunk_names21[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C19D0Ev,_ZThn20_N9S20436C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C19D1Ev,_ZThn20_N9S20436C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C19 = {  "S20436C19", // class name
  bases_S20436C19, 7,
  &(vtc_S20436C19[0]), // expected_vtbl_contents
  &(vtt_S20436C19[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI9S20436C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20436C19),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C19),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names21,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C18  : virtual S20436C8 , S20436C3 , virtual S20436C19 , S20948C8 {
  int s20436c18f0;
  virtual  ~S20436C18(); // _ZN9S20436C18D2Ev
  S20436C18(); // tgen
};
//SIG(-1 S20436C18) C1{ VBC2{ v1} BC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC2 VBC5} VBC8{ BC5 VBC6 BC2 BC9{ BC10{ VBC2 vd} VBC5 vd FC7} vd Fi} BC7 vd Fi}


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

static void Test_S20436C18()
{
  extern Class_Descriptor cd_S20436C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,18)];
    init_test(&cd_S20436C18, buf);
    S20436C18 *dp, &lv = *(dp=new (buf) S20436C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S20436C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C18)");
    /*is_ambiguous_... S20436C18::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*), ABISELECT(96,52), "S20436C18");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(96,52), "S20436C18");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*), 0, "S20436C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*), ABISELECT(48,28), "S20436C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C19*), ABISELECT(48,28), "S20436C18");
    check_base_class_offset(lv, (S20436C4*)(S20436C3*), 0, "S20436C18");
    check_base_class_offset(lv, (S20948C8*)(S20436C3*), ABISELECT(8,4), "S20436C18");
    check_base_class_offset(lv, (S20436C8*)(S20436C3*), ABISELECT(16,12), "S20436C18");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*), ABISELECT(80,44), "S20436C18");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C19*), ABISELECT(80,44), "S20436C18");
    check_base_class_offset(lv, (S20436C3*), 0, "S20436C18");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C19*), ABISELECT(88,48), "S20436C18");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C19*), ABISELECT(88,48), "S20436C18");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(96,52), "S20436C18");
    check_base_class_offset(lv, (S20436C15*)(S20436C19*), ABISELECT(96,52), "S20436C18");
    check_base_class_offset(lv, (S20436C19*), ABISELECT(88,48), "S20436C18");
    /*is_ambiguous_... S20436C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(24,16), "S20436C18");
    check_field_offset(lv, s20436c18f0, ABISELECT(32,24), "S20436C18.s20436c18f0");
    test_class_info(&lv, &cd_S20436C18);
    dp->~S20436C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C18(Test_S20436C18, "S20436C18", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN9S20436C18C1Ev();
extern void _ZN9S20436C18D2Ev();
Name_Map name_map_S20436C18[] = {
  NSPAIR(_ZN9S20436C18C1Ev),
  NSPAIR(_ZN9S20436C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C19;
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S20436C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20436C4,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C8,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20436C8,    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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(96,52), //bcp->offset
    26, //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20436C19,    ABISELECT(88,48), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C18[];
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S20436C18D1Ev,_ZThn28_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S20436C18D0Ev,_ZThn28_N9S20436C18D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn88_N9S20436C18D1Ev,_ZThn48_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn88_N9S20436C18D0Ev,_ZThn48_N9S20436C18D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY vtc_S20436C18[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C18[];
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C3__9S20436C18[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C3__9S20436C18[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20436C4D1Ev,_ZThn28_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20436C4D0Ev,_ZThn28_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C3__9S20436C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20436C3D1Ev,_ZThn28_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S20436C3D0Ev,_ZThn28_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C3__9S20436C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C18[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C19__9S20436C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C19__9S20436C18[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19__9S20436C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
};
static  VTT_ENTRY vtt_S20436C18[] = {
  {&(_ZTV9S20436C18[6]),  6,34},
  {&(_tg__ZTV8S20436C3__9S20436C18[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C3__9S20436C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C3__9S20436C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C3__9S20436C18[3]),  3,5},
  {&(_ZTV9S20436C18[31]),  31,34},
  {&(_ZTV9S20436C18[14]),  14,34},
  {&(_ZTV9S20436C18[23]),  23,34},
  {&(_ZTV9S20436C18[31]),  31,34},
  {&(_tg__ZTV9S20436C19__9S20436C18[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C18[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C18[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C19__9S20436C18[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C18[5]),  5,8},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
static VTBL_ENTRY alt_thunk_names22[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C3D0Ev,_ZThn28_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C3D1Ev,_ZThn28_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C4D0Ev,_ZThn28_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C4D1Ev,_ZThn28_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20436C18D0Ev,_ZThn48_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20436C18D1Ev,_ZThn48_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20436C18D0Ev,_ZThn28_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20436C18D1Ev,_ZThn28_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C18 = {  "S20436C18", // class name
  bases_S20436C18, 14,
  &(vtc_S20436C18[0]), // expected_vtbl_contents
  &(vtt_S20436C18[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI9S20436C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20436C18),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C18),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names22,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C21  : S20436C8 {
  ~S20436C21(); // tgen
  S20436C21(); // tgen
};
//SIG(-1 S20436C21) C1{ BC2{ v1}}


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

static void Test_S20436C21()
{
  extern Class_Descriptor cd_S20436C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20436C21, buf);
    S20436C21 *dp, &lv = *(dp=new (buf) S20436C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20436C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20436C21)");
    check_base_class_offset(lv, (S20436C8*), 0, "S20436C21");
    test_class_info(&lv, &cd_S20436C21);
    dp->~S20436C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C21(Test_S20436C21, "S20436C21", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20436C21C1Ev();
extern void _ZN9S20436C21D1Ev();
Name_Map name_map_S20436C21[] = {
  NSPAIR(_ZN9S20436C21C1Ev),
  NSPAIR(_ZN9S20436C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
static Base_Class bases_S20436C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C21[];
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY vtc_S20436C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C21[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern VTBL_ENTRY _ZTI9S20436C21[];
extern  VTBL_ENTRY _ZTV9S20436C21[];
Class_Descriptor cd_S20436C21 = {  "S20436C21", // class name
  bases_S20436C21, 1,
  &(vtc_S20436C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20436C21),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20436C21),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C23  : virtual S20436C9 , S20436C15 , S20436C12 , S20436C16 {
  virtual  ~S20436C23(); // _ZN9S20436C23D2Ev
  virtual void  v2(); // _ZN9S20436C232v2Ev
  S20436C23(); // tgen
};
//SIG(-1 S20436C23) C1{ VBC2{ BC3{ v2} VBC4{ m} vd Fi:23} BC5{ BC6{ VBC3 vd} VBC7{ m} vd FC8{ m Fc[7]}} BC9{ BC10{ BC7 BC11{ BC4 FC7 FC4} VBC12{ BC7 VBC13{ vd m FD} vd} VBC3 Fp} BC11 BC13 BC5} BC6 vd v1}


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

static void Test_S20436C23()
{
  extern Class_Descriptor cd_S20436C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S20436C23, buf);
    S20436C23 *dp, &lv = *(dp=new (buf) S20436C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S20436C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C23)");
    check_base_class_offset(lv, (S20436C8*)(S20436C9*), ABISELECT(104,60), "S20436C23");
    check_base_class_offset(lv, (S9624C39*)(S20436C9*), 0, "S20436C23");
    check_base_class_offset(lv, (S20436C9*), ABISELECT(104,60), "S20436C23");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*), 0, "S20436C23");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*), 0, "S20436C23");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*), 0, "S20436C23");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*), 0, "S20436C23");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*), 0, "S20436C23");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*), 0, "S20436C23");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*), 0, "S20436C23");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*), 0, "S20436C23");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*), ABISELECT(24,16), "S20436C23");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(25,17), "S20436C23");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(25,17), "S20436C23");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*), ABISELECT(16,12), "S20436C23");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(128,68), "S20436C23");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*), ABISELECT(16,12), "S20436C23");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*), ABISELECT(16,12), "S20436C23");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*), ABISELECT(40,24), "S20436C23");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*), ABISELECT(40,24), "S20436C23");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*), ABISELECT(48,28), "S20436C23");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(80,44), "S20436C23");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*), ABISELECT(80,44), "S20436C23");
    check_base_class_offset(lv, (S20436C12*), ABISELECT(16,12), "S20436C23");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C16*), ABISELECT(96,56), "S20436C23");
    test_class_info(&lv, &cd_S20436C23);
    dp->~S20436C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C23(Test_S20436C23, "S20436C23", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN9S20436C23C1Ev();
extern void _ZN9S20436C23D2Ev();
Name_Map name_map_S20436C23[] = {
  NSPAIR(_ZN9S20436C23C1Ev),
  NSPAIR(_ZN9S20436C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C9;
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
static Base_Class bases_S20436C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    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
    2, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20436C9,    ABISELECT(104,60), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20436C16,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20436C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(128,68), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20436C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20436C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(80,44), //bcp->offset
    26, //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
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C16,    ABISELECT(96,56), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C23[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C23D1Ev();
extern void _ZN9S20436C23D0Ev();
extern void _ZN9S20436C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N9S20436C23D1Ev,_ZThn28_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn48_N9S20436C23D0Ev,_ZThn28_N9S20436C23D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn104_N9S20436C23D1Ev,_ZThn60_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn104_N9S20436C23D0Ev,_ZThn60_N9S20436C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S20436C23D1Ev,_ZThn68_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S20436C23D0Ev,_ZThn68_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C23[] = {
  ABISELECT(128,68),
  ABISELECT(16,12),
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20436C23D1Ev,_ZThn28_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20436C23D0Ev,_ZThn28_N9S20436C23D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C23[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C23[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C15__9S20436C23[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__9S20436C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C12__9S20436C23[] = {
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C13D1Ev,_ZThn56_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C13D0Ev,_ZThn56_N9S20436C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C12__9S20436C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C12__9S20436C23[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A1__9S20436C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C12__A1__9S20436C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A1__9S20436C23[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C12__A1__9S20436C23[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C12D1Ev,_ZThn56_N9S20436C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C12D0Ev,_ZThn56_N9S20436C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C12__9S20436C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C12__9S20436C23[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12__9S20436C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C16__A2__9S20436C23[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C16__A2__9S20436C23[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C23[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C23[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S20436C4D1Ev,_ZThn56_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S20436C4D0Ev,_ZThn56_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__9S20436C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
static  VTT_ENTRY vtt_S20436C23[] = {
  {&(_ZTV9S20436C23[9]),  9,54},
  {&(_tg__ZTV9S20436C15__9S20436C23[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C15__9S20436C23[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C15__9S20436C23[4]),  4,7},
  {&(_tg__ZTV9S20436C15__9S20436C23[5]),  5,8},
  {&(_tg__ZTV9S20436C12__9S20436C23[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C12__9S20436C23[6]),  6,8},
  {&(_tg__ZTV9S20436C139S20436C12__9S20436C23[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C12__9S20436C23[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C12__9S20436C23[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C12__A1__9S20436C23[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__A1__9S20436C23[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A1__9S20436C23[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C12__A1__9S20436C23[3]),  3,4},
  {&(_tg__ZTV9S20436C12__9S20436C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C12__9S20436C23[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C12__9S20436C23[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C12__9S20436C23[5]),  5,8},
  {&(_tg__ZTV9S20436C16__A2__9S20436C23[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C16__A2__9S20436C23[3]),  3,4},
  {&(_ZTV9S20436C23[46]),  46,54},
  {&(_ZTV9S20436C23[9]),  9,54},
  {&(_ZTV9S20436C23[20]),  20,54},
  {&(_ZTV9S20436C23[20]),  20,54},
  {&(_ZTV9S20436C23[52]),  52,54},
  {&(_ZTV9S20436C23[31]),  31,54},
  {&(_ZTV9S20436C23[38]),  38,54},
  {&(_tg__ZTV8S20436C9__9S20436C23[3]),  3,6},
  {&(_tg__ZTV8S20436C4__9S20436C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__9S20436C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20436C23[];
extern  VTBL_ENTRY _ZTV9S20436C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C23[];
static VTBL_ENTRY alt_thunk_names23[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20436C4D0Ev,_ZThn56_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20436C4D1Ev,_ZThn56_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C12D0Ev,_ZThn56_N9S20436C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C12D1Ev,_ZThn56_N9S20436C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C13D0Ev,_ZThn56_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C13D1Ev,_ZThn56_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20436C23D0Ev,_ZThn68_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20436C23D1Ev,_ZThn68_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C23D0Ev,_ZThn60_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C23D1Ev,_ZThn60_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C23 = {  "S20436C23", // class name
  bases_S20436C23, 21,
  &(vtc_S20436C23[0]), // expected_vtbl_contents
  &(vtt_S20436C23[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI9S20436C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20436C23),54, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C23),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names23,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C22  : virtual S20436C14 , S20436C18 , S20436C15 , S20436C23 , virtual S20436C12 {
  virtual  ~S20436C22(); // _ZN9S20436C22D2Ev
  virtual void  v3(); // _ZN9S20436C222v3Ev
  S20436C22(); // tgen
};
//SIG(-1 S20436C22) C1{ VBC2{ BC3{ m} FC4{ m} FC3} BC5{ VBC6{ v2} BC7{ BC8{ BC4 VBC9{ vd m FD} vd} BC10{ m Fc[7]} BC6 VBC4} VBC11{ BC4 VBC9 BC6 BC12{ BC13{ VBC6 vd} VBC4 vd FC10} vd Fi} BC10 vd Fi} BC12 BC14{ VBC15{ BC6 VBC3 vd Fi:23} BC12 BC16{ BC17{ BC4 BC2 VBC8 VBC6 Fp} BC2 BC9 BC12} BC13 vd v3} VBC16 vd v1}


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

static void Test_S20436C22()
{
  extern Class_Descriptor cd_S20436C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,50)];
    init_test(&cd_S20436C22, buf);
    S20436C22 *dp, &lv = *(dp=new (buf) S20436C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,196), "sizeof(S20436C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C22)");
    /*is_ambiguous_... S20436C22::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*), ABISELECT(168,100), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*), ABISELECT(168,100), "S20436C22");
    /*is_ambiguous_... S20436C18::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C18*), ABISELECT(224,128), "S20436C22");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(224,128), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*), ABISELECT(224,128), "S20436C22");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C23*), ABISELECT(224,128), "S20436C22");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*)(S20436C23*), ABISELECT(224,128), "S20436C22");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*), ABISELECT(224,128), "S20436C22");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C23*), ABISELECT(224,128), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*), ABISELECT(224,128), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(224,128), "S20436C22");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*)(S20436C18*), 0, "S20436C22");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(176,104), "S20436C22");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C19*), ABISELECT(176,104), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(176,104), "S20436C22");
    check_base_class_offset(lv, (S20436C4*)(S20436C3*)(S20436C18*), 0, "S20436C22");
    check_base_class_offset(lv, (S20948C8*)(S20436C3*)(S20436C18*), ABISELECT(8,4), "S20436C22");
    check_base_class_offset(lv, (S20436C8*)(S20436C3*)(S20436C18*), ABISELECT(16,12), "S20436C22");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*)(S20436C18*), ABISELECT(208,120), "S20436C22");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C19*), ABISELECT(208,120), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*), ABISELECT(208,120), "S20436C22");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C23*), ABISELECT(208,120), "S20436C22");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*)(S20436C23*), ABISELECT(208,120), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*), ABISELECT(208,120), "S20436C22");
    check_base_class_offset(lv, (S20436C3*)(S20436C18*), 0, "S20436C22");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C19*), ABISELECT(216,124), "S20436C22");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C19*), ABISELECT(216,124), "S20436C22");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(224,128), "S20436C22");
    check_base_class_offset(lv, (S20436C15*)(S20436C19*), ABISELECT(224,128), "S20436C22");
    check_base_class_offset(lv, (S20436C19*)(S20436C18*), ABISELECT(216,124), "S20436C22");
    /*is_ambiguous_... S20436C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C18*), ABISELECT(24,16), "S20436C22");
    check_base_class_offset(lv, (S20436C18*), 0, "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*), ABISELECT(40,28), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*), ABISELECT(40,28), "S20436C22");
    check_base_class_offset(lv, (S20436C8*)(S20436C9*), ABISELECT(248,144), "S20436C22");
    check_base_class_offset(lv, (S9624C39*)(S20436C9*), 0, "S20436C22");
    check_base_class_offset(lv, (S20436C9*)(S20436C23*), ABISELECT(248,144), "S20436C22");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C23*), ABISELECT(64,40), "S20436C22");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C23*), ABISELECT(64,40), "S20436C22");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*)(S20436C23*), ABISELECT(88,56), "S20436C22");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*), ABISELECT(89,57), "S20436C22");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*), ABISELECT(89,57), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*), ABISELECT(80,52), "S20436C22");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*)(S20436C23*), ABISELECT(80,52), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*), ABISELECT(80,52), "S20436C22");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*)(S20436C23*), ABISELECT(80,52), "S20436C22");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*)(S20436C23*), ABISELECT(104,64), "S20436C22");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*)(S20436C23*), ABISELECT(104,64), "S20436C22");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*)(S20436C23*), ABISELECT(112,68), "S20436C22");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*), ABISELECT(144,84), "S20436C22");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*)(S20436C23*), ABISELECT(144,84), "S20436C22");
    check_base_class_offset(lv, (S20436C12*)(S20436C23*), ABISELECT(80,52), "S20436C22");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C23*), ABISELECT(160,96), "S20436C22");
    check_base_class_offset(lv, (S20436C23*), ABISELECT(64,40), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*), ABISELECT(280,156), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(281,157), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(281,157), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C13*)(S20436C12*), ABISELECT(272,152), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*), ABISELECT(296,164), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*), ABISELECT(296,164), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*), ABISELECT(304,168), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(336,184), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C12*), ABISELECT(336,184), "S20436C22");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C12*), ABISELECT(272,152), "S20436C22");
    test_class_info(&lv, &cd_S20436C22);
    dp->~S20436C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C22(Test_S20436C22, "S20436C22", ABISELECT(352,196));

#else // __cplusplus

extern void _ZN9S20436C22C1Ev();
extern void _ZN9S20436C22D2Ev();
Name_Map name_map_S20436C22[] = {
  NSPAIR(_ZN9S20436C22C1Ev),
  NSPAIR(_ZN9S20436C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C19;
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C18;
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C9;
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C23;
extern VTBL_ENTRY _ZTI9S20436C23[];
extern  VTBL_ENTRY _ZTV9S20436C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
static Base_Class bases_S20436C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(168,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
  0, 0},
  {&cd_S20436C14,    ABISELECT(168,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_S20436C8,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(176,104), //bcp->offset
    66, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20436C4,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C8,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(208,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
    9, //immediately_derived
  0, 1},
  {&cd_S20436C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(224,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20436C19,    ABISELECT(216,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20436C18,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C16,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C8,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20436C9,    ABISELECT(248,144), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20436C16,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20436C15,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C14,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20436C13,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20436C23,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C14,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20436C13,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(296,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(304,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(336,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(272,152), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C22[];
extern void _ZN9S20436C22D1Ev();
extern void _ZN9S20436C22D0Ev();
extern void _ZN9S20436C222v3Ev();
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev)();
extern void _ZN9S20436C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N9S20436C22D1Ev,_ZThn68_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C22D0Ev,_ZThn68_N9S20436C22D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn216_N9S20436C22D1Ev,_ZThn124_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn216_N9S20436C22D0Ev,_ZThn124_N9S20436C22D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn248_N9S20436C22D1Ev,_ZThn144_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn248_N9S20436C22D0Ev,_ZThn144_N9S20436C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn272_N9S20436C22D1Ev,_ZThn152_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn272_N9S20436C22D0Ev,_ZThn152_N9S20436C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY vtc_S20436C22[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN9S20436C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20436C22D1Ev,_ZThn68_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20436C22D0Ev,_ZThn68_N9S20436C22D0Ev),
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev),
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C22[];
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C18__9S20436C22[] = {
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C39S20436C18__9S20436C22[] = {
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C39S20436C18__9S20436C22[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20436C4D1Ev,_ZThn104_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20436C4D0Ev,_ZThn104_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C18__9S20436C22[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S20436C3D1Ev,_ZThn104_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S20436C3D0Ev,_ZThn104_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C39S20436C18__9S20436C22[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C18__9S20436C22[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C18D1Ev,_ZThn104_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C18D0Ev,_ZThn104_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C18__9S20436C22[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn216_N9S20436C18D1Ev,_ZThn124_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn216_N9S20436C18D0Ev,_ZThn124_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C18__9S20436C22[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C15__A1__9S20436C22[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C15__A1__9S20436C22[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C15__A1__9S20436C22[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C15__A1__9S20436C22[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C23D1Ev();
extern void _ZN9S20436C23D0Ev();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C23__9S20436C22[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C23__A2__9S20436C22[] = {
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C23__A2__9S20436C22[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C23__A2__9S20436C22[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C23__A2__9S20436C22[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C23__9S20436C22[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C129S20436C23__9S20436C22[] = {
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C13D1Ev,_ZThn52_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20436C13D0Ev,_ZThn52_N9S20436C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C23__9S20436C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C129S20436C23__9S20436C22[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C129S20436C23__A3__9S20436C22[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C23__A3__9S20436C22[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C129S20436C23__A3__9S20436C22[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C12D1Ev,_ZThn52_N9S20436C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S20436C12D0Ev,_ZThn52_N9S20436C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C129S20436C23__9S20436C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C129S20436C23__9S20436C22[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C129S20436C23__9S20436C22[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C23__A4__9S20436C22[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C23__A4__9S20436C22[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn184_N9S20436C23D1Ev,_ZThn104_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn184_N9S20436C23D0Ev,_ZThn104_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C23__9S20436C22[] = {
  ABISELECT(-184,-104),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C23__9S20436C22[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__9S20436C23__9S20436C22[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C23D1Ev,_ZThn64_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C23D0Ev,_ZThn64_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C23__9S20436C22[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A1__9S20436C23__9S20436C22[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C16__A2__9S20436C23__9S20436C22[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C22[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C19__9S20436C22[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C19__9S20436C22[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19__9S20436C22[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C22[] = {
  ABISELECT(-248,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A1__9S20436C22[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn96_N8S20436C4D1Ev,_ZThn52_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn96_N8S20436C4D0Ev,_ZThn52_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__A1__9S20436C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C12__A1__9S20436C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C12__A1__9S20436C22[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A1__9S20436C22[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C12__A1__9S20436C22[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C22[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C12__A5__9S20436C22[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A5__9S20436C22[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C12__A4__9S20436C22[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C12__A1__9S20436C22[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C12__A1__9S20436C22[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C12__A1__9S20436C22[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12__A1__9S20436C22[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
static  VTT_ENTRY vtt_S20436C22[] = {
  {&(_ZTV9S20436C22[11]),  11,118},
  {&(_tg__ZTV9S20436C18__9S20436C22[6]),  6,8},
  {&(_tg__ZTV8S20436C39S20436C18__9S20436C22[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C39S20436C18__9S20436C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C18__9S20436C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C39S20436C18__9S20436C22[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18__9S20436C22[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C18__9S20436C22[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C18__9S20436C22[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C15__A1__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C15__A1__9S20436C22[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C15__A1__9S20436C22[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C15__A1__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C23__9S20436C22[9]),  9,13},
  {&(_tg__ZTV9S20436C159S20436C23__A2__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C23__A2__9S20436C22[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C23__A2__9S20436C22[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C23__A2__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C129S20436C23__9S20436C22[6]),  6,8},
  {&(_tg__ZTV9S20436C139S20436C129S20436C23__9S20436C22[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C23__9S20436C22[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C129S20436C23__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C129S20436C23__A3__9S20436C22[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C23__A3__9S20436C22[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C129S20436C23__A3__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C129S20436C23__9S20436C22[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C129S20436C23__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C129S20436C23__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C23__A4__9S20436C22[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C23__A4__9S20436C22[3]),  3,4},
  {&(_tg__ZTV8S20436C9__9S20436C23__9S20436C22[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C23__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C12__9S20436C23__9S20436C22[7]),  7,9},
  {&(_tg__ZTV9S20436C12__9S20436C23__9S20436C22[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C23__9S20436C22[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C12__A1__9S20436C23__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C16__A2__9S20436C23__9S20436C22[4]),  4,7},
  {&(_ZTV9S20436C22[86]),  86,118},
  {&(_ZTV9S20436C22[69]),  69,118},
  {&(_ZTV9S20436C22[78]),  78,118},
  {&(_ZTV9S20436C22[86]),  86,118},
  {&(_ZTV9S20436C22[22]),  22,118},
  {&(_ZTV9S20436C22[34]),  34,118},
  {&(_ZTV9S20436C22[94]),  94,118},
  {&(_ZTV9S20436C22[45]),  45,118},
  {&(_ZTV9S20436C22[45]),  45,118},
  {&(_ZTV9S20436C22[56]),  56,118},
  {&(_ZTV9S20436C22[63]),  63,118},
  {&(_ZTV9S20436C22[104]),  104,118},
  {&(_ZTV9S20436C22[108]),  108,118},
  {&(_ZTV9S20436C22[115]),  115,118},
  {&(_tg__ZTV9S20436C19__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C22[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C22[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C19__9S20436C22[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C22[5]),  5,8},
  {&(_tg__ZTV8S20436C9__9S20436C22[3]),  3,6},
  {&(_tg__ZTV8S20436C4__A1__9S20436C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__A1__9S20436C22[3]),  3,5},
  {&(_tg__ZTV9S20436C12__A1__9S20436C22[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C12__A1__9S20436C22[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C12__A1__9S20436C22[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A1__9S20436C22[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C12__A1__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C22[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__A5__9S20436C22[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A5__9S20436C22[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C12__A4__9S20436C22[3]),  3,4},
  {&(_tg__ZTV8S20436C4__9S20436C12__A1__9S20436C22[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C12__A1__9S20436C22[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C12__A1__9S20436C22[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C12__A1__9S20436C22[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20436C22[];
extern  VTBL_ENTRY _ZTV9S20436C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C22[];
static VTBL_ENTRY alt_thunk_names24[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C23D0Ev,_ZThn64_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C23D1Ev,_ZThn64_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20436C23D0Ev,_ZThn104_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20436C23D1Ev,_ZThn104_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C12D0Ev,_ZThn52_N9S20436C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C12D1Ev,_ZThn52_N9S20436C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C13D0Ev,_ZThn52_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C13D1Ev,_ZThn52_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20436C18D0Ev,_ZThn124_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20436C18D1Ev,_ZThn124_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C18D0Ev,_ZThn104_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C18D1Ev,_ZThn104_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C3D0Ev,_ZThn104_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C3D1Ev,_ZThn104_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C4D0Ev,_ZThn52_N8S20436C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C4D0Ev,_ZThn104_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C4D1Ev,_ZThn52_N8S20436C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C4D1Ev,_ZThn104_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20436C22D0Ev,_ZThn144_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20436C22D1Ev,_ZThn144_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20436C22D0Ev,_ZThn124_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20436C22D1Ev,_ZThn124_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20436C22D0Ev,_ZThn152_N9S20436C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20436C22D1Ev,_ZThn152_N9S20436C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C22 = {  "S20436C22", // class name
  bases_S20436C22, 48,
  &(vtc_S20436C22[0]), // expected_vtbl_contents
  &(vtt_S20436C22[0]), // expected_vtt_contents
  ABISELECT(352,196), // object size
  NSPAIRA(_ZTI9S20436C22),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20436C22),118, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C22),79, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names24,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C20  : virtual S20436C21 , virtual S20436C8 , virtual S20436C22 {
  long s20436c20f0[2];
  ~S20436C20(); // tgen
  S20436C20(); // tgen
};
//SIG(-1 S20436C20) C1{ VBC2{ BC3{ v1}} VBC3 VBC4{ VBC5{ BC6{ m} FC7{ m} FC6} BC8{ VBC3 BC9{ BC10{ BC7 VBC11{ vd m FD} vd} BC12{ m Fc[7]} BC3 VBC7} VBC13{ BC7 VBC11 BC3 BC14{ BC15{ VBC3 vd} VBC7 vd FC12} vd Fi} BC12 vd Fi} BC14 BC16{ VBC17{ BC3 VBC6 vd Fi:23} BC14 BC18{ BC19{ BC7 BC5 VBC10 VBC3 Fp} BC5 BC11 BC14} BC15 vd v2} VBC18 vd v3} Fl[2]}


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

static void Test_S20436C20()
{
  extern Class_Descriptor cd_S20436C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,52)];
    init_test(&cd_S20436C20, buf);
    S20436C20 *dp, &lv = *(dp=new (buf) S20436C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,204), "sizeof(S20436C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C20)");
    check_base_class_offset(lv, (S20436C8*)(S20436C21*), 0, "S20436C20");
    check_base_class_offset(lv, (S20436C21*), 0, "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C18::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C18*)(S20436C22*), ABISELECT(248,136), "S20436C20");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C22*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(248,136), "S20436C20");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(248,136), "S20436C20");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C23*)(S20436C22*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(248,136), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*), ABISELECT(200,112), "S20436C20");
    /*is_ambiguous_... S20436C22::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C22*), ABISELECT(200,112), "S20436C20");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(32,12), "S20436C20");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(208,116), "S20436C20");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C19*), ABISELECT(208,116), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(208,116), "S20436C20");
    check_base_class_offset(lv, (S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(32,12), "S20436C20");
    check_base_class_offset(lv, (S20948C8*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(40,16), "S20436C20");
    check_base_class_offset(lv, (S20436C8*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(48,24), "S20436C20");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*)(S20436C18*)(S20436C22*), 0, "S20436C20");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C19*), 0, "S20436C20");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C22*), 0, "S20436C20");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C23*)(S20436C22*), 0, "S20436C20");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), 0, "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*), 0, "S20436C20");
    check_base_class_offset(lv, (S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(32,12), "S20436C20");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C19*), ABISELECT(240,132), "S20436C20");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C19*), ABISELECT(240,132), "S20436C20");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(248,136), "S20436C20");
    check_base_class_offset(lv, (S20436C15*)(S20436C19*), ABISELECT(248,136), "S20436C20");
    check_base_class_offset(lv, (S20436C19*)(S20436C18*)(S20436C22*), ABISELECT(240,132), "S20436C20");
    /*is_ambiguous_... S20436C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C18*)(S20436C22*), ABISELECT(56,28), "S20436C20");
    check_base_class_offset(lv, (S20436C18*)(S20436C22*), ABISELECT(32,12), "S20436C20");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C22*), ABISELECT(72,40), "S20436C20");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C22*), ABISELECT(72,40), "S20436C20");
    check_base_class_offset(lv, (S20436C8*)(S20436C9*), ABISELECT(272,152), "S20436C20");
    check_base_class_offset(lv, (S9624C39*)(S20436C9*), 0, "S20436C20");
    check_base_class_offset(lv, (S20436C9*)(S20436C23*)(S20436C22*), ABISELECT(272,152), "S20436C20");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(96,52), "S20436C20");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(96,52), "S20436C20");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(120,68), "S20436C20");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(121,69), "S20436C20");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(121,69), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*), ABISELECT(112,64), "S20436C20");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*), ABISELECT(112,64), "S20436C20");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C20");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(136,76), "S20436C20");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(136,76), "S20436C20");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(144,80), "S20436C20");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(176,96), "S20436C20");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(176,96), "S20436C20");
    check_base_class_offset(lv, (S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C20");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C23*)(S20436C22*), ABISELECT(192,108), "S20436C20");
    check_base_class_offset(lv, (S20436C23*)(S20436C22*), ABISELECT(96,52), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*), ABISELECT(296,164), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(297,165), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(297,165), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C13*)(S20436C12*), ABISELECT(288,160), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*), ABISELECT(312,172), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*), ABISELECT(312,172), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*), ABISELECT(320,176), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(352,192), "S20436C20");
    /*is_ambiguous_... S20436C20::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C12*), ABISELECT(352,192), "S20436C20");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C12*)(S20436C22*), ABISELECT(288,160), "S20436C20");
    check_base_class_offset(lv, (S20436C22*), ABISELECT(32,12), "S20436C20");
    check_field_offset(lv, s20436c20f0, ABISELECT(8,4), "S20436C20.s20436c20f0");
    test_class_info(&lv, &cd_S20436C20);
    dp->~S20436C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C20(Test_S20436C20, "S20436C20", ABISELECT(368,204));

#else // __cplusplus

extern void _ZN9S20436C20C1Ev();
extern void _ZN9S20436C20D1Ev();
Name_Map name_map_S20436C20[] = {
  NSPAIR(_ZN9S20436C20C1Ev),
  NSPAIR(_ZN9S20436C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C21;
extern VTBL_ENTRY _ZTI9S20436C21[];
extern  VTBL_ENTRY _ZTV9S20436C21[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C19;
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C18;
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C9;
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C23;
extern VTBL_ENTRY _ZTI9S20436C23[];
extern  VTBL_ENTRY _ZTV9S20436C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C22;
extern VTBL_ENTRY _ZTI9S20436C22[];
extern  VTBL_ENTRY _ZTV9S20436C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C22[];
static Base_Class bases_S20436C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20436C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20436C21,    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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    ABISELECT(248,136), //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20436C14,    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
    50, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(208,116), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20436C4,    ABISELECT(32,12), //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
    17, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(48,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C3,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    16, //immediately_derived
  0, 0},
  {&cd_S20436C8,    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
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(248,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(248,136), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20436C19,    ABISELECT(240,132), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    18, //immediately_derived
  0, 0},
  {&cd_S20436C18,    ABISELECT(32,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(72,40), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20436C8,    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
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C9,    ABISELECT(272,152), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20436C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(121,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
    28, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(121,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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    30, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20436C13,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    33, //immediately_derived
  0, 0},
  {&cd_S20436C14,    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
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(144,80), //bcp->offset
    68, //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
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(176,96), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(112,64), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(192,108), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20436C23,    ABISELECT(96,52), //bcp->offset
    46, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(297,165), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C14,    ABISELECT(297,165), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C13,    ABISELECT(288,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(312,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(312,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(320,176), //bcp->offset
    127, //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
    13, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(352,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(352,192), //bcp->offset
    131, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(288,160), //bcp->offset
    118, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S20436C22,    ABISELECT(32,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C20[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C20D1Ev();
extern void _ZN9S20436C20D0Ev();
extern void ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S20436C20D1Ev,_ZThn12_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S20436C20D0Ev,_ZThn12_N9S20436C20D0Ev)() __attribute__((weak));
extern void _ZN9S20436C222v3Ev();
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20436C20D1Ev,_ZTvn28_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20436C20D0Ev,_ZTvn28_n48_N9S20436C20D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20436C20D1Ev,_ZTvn40_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20436C20D0Ev,_ZTvn40_n48_N9S20436C20D0Ev)();
extern void _ZN9S20436C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C20D1Ev,_ZThn64_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C20D0Ev,_ZThn64_N9S20436C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N9S20436C20D1Ev,_ZTvn68_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20436C20D0Ev,_ZTvn68_n48_N9S20436C20D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20436C20D1Ev,_ZTvn84_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20436C20D0Ev,_ZTvn84_n48_N9S20436C20D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20436C20D1Ev,_ZTvn96_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20436C20D0Ev,_ZTvn96_n48_N9S20436C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn208_N9S20436C20D1Ev,_ZThn116_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn208_N9S20436C20D0Ev,_ZThn116_N9S20436C20D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn240_N9S20436C20D1Ev,_ZThn132_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn240_N9S20436C20D0Ev,_ZThn132_N9S20436C20D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C20D1Ev,_ZTvn4_n28_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C20D0Ev,_ZTvn4_n28_N9S20436C20D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn272_N9S20436C20D1Ev,_ZThn152_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn272_N9S20436C20D0Ev,_ZThn152_N9S20436C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn288_N9S20436C20D1Ev,_ZThn160_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn288_N9S20436C20D0Ev,_ZThn160_N9S20436C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20436C20D1Ev,_ZTvn16_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C20D0Ev,_ZTvn16_n16_N9S20436C20D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C20D1Ev,_ZTvn32_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C20D0Ev,_ZTvn32_n16_N9S20436C20D0Ev)();
static  VTBL_ENTRY vtc_S20436C20[] = {
  ABISELECT(288,160),
  ABISELECT(112,64),
  0,
  ABISELECT(272,152),
  ABISELECT(240,132),
  0,
  ABISELECT(208,116),
  ABISELECT(200,112),
  ABISELECT(32,12),
  ABISELECT(248,136),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C20D0Ev,
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-12),
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-12),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-72,-40),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C20D1Ev,_ZTvn28_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C20D0Ev,_ZTvn28_n48_N9S20436C20D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-52),
  ABISELECT(176,100),
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C20D1Ev,_ZTvn40_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C20D0Ev,_ZTvn40_n48_N9S20436C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  ABISELECT(-112,-64),
  ABISELECT(96,52),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C20D1Ev,_ZTvn68_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C20D0Ev,_ZTvn68_n48_N9S20436C20D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C20D1Ev,_ZTvn84_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C20D0Ev,_ZTvn84_n48_N9S20436C20D0Ev),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C20D1Ev,_ZTvn96_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C20D0Ev,_ZTvn96_n48_N9S20436C20D0Ev),
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev),
  ABISELECT(-240,-132),
  0,
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-240,-132),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev),
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C20D1Ev,_ZTvn4_n28_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C20D0Ev,_ZTvn4_n28_N9S20436C20D0Ev),
  ABISELECT(-272,-152),
  0,
  ABISELECT(-272,-152),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev),
  ABISELECT(-288,-160),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-288,-160),
  ABISELECT(-80,-44),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
  ABISELECT(-320,-176),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C20D1Ev,_ZTvn16_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C20D0Ev,_ZTvn16_n16_N9S20436C20D0Ev),
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-352,-192),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C20D1Ev,_ZTvn32_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C20D0Ev,_ZTvn32_n16_N9S20436C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C20[];
extern void _ZN9S20436C22D1Ev();
extern void _ZN9S20436C22D0Ev();
extern void _ZN9S20436C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C22__9S20436C20[] = {
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-12),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN9S20436C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
};
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C39S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(-32,-12),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C39S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20436C4D1Ev,_ZThn104_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20436C4D0Ev,_ZThn104_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S20436C3D1Ev,_ZThn104_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S20436C3D0Ev,_ZThn104_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C39S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C18D1Ev,_ZThn104_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C18D0Ev,_ZThn104_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn208_N9S20436C18D1Ev,_ZThn120_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn208_N9S20436C18D0Ev,_ZThn120_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C189S20436C22__9S20436C20[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C22__A1__9S20436C20[] = {
  ABISELECT(-72,-40),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C22__A1__9S20436C20[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C22__A1__9S20436C20[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C22__A1__9S20436C20[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C23D1Ev();
extern void _ZN9S20436C23D0Ev();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-52),
  ABISELECT(176,100),
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C239S20436C22__A2__9S20436C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C20[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C20[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C239S20436C22__A2__9S20436C20[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C129S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C13D1Ev,_ZThn52_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20436C13D0Ev,_ZThn52_N9S20436C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C129S20436C239S20436C22__9S20436C20[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C12D1Ev,_ZThn52_N9S20436C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S20436C12D0Ev,_ZThn52_N9S20436C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C129S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C129S20436C239S20436C22__9S20436C20[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C129S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C20[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C239S20436C22__A4__9S20436C20[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C23D1Ev,_ZThn100_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C23D0Ev,_ZThn100_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-176,-100),
  0,
  ABISELECT(-272,-152),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C239S20436C22__9S20436C20[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__9S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C23D1Ev,_ZThn64_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C23D0Ev,_ZThn64_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A1__9S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C16__A2__9S20436C239S20436C22__9S20436C20[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C22__9S20436C20[] = {
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C22__9S20436C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn208_N9S20436C22D1Ev,_ZThn120_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn208_N9S20436C22D0Ev,_ZThn120_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C22__9S20436C20[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__A1__9S20436C22__9S20436C20[] = {
  ABISELECT(-72,-40),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev)();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C23__9S20436C22__9S20436C20[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-52),
  ABISELECT(176,100),
  ABISELECT(-96,-52),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn240_N9S20436C22D1Ev,_ZThn140_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn240_N9S20436C22D0Ev,_ZThn140_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C22__9S20436C20[] = {
  ABISELECT(-240,-140),
  0,
  ABISELECT(-272,-152),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C23__9S20436C22__9S20436C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(136,72),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22__9S20436C20[] = {
  ABISELECT(-176,-96),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C23__A4__9S20436C22__9S20436C20[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn256_N9S20436C22D1Ev,_ZThn148_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn256_N9S20436C22D0Ev,_ZThn148_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C22__9S20436C20[] = {
  ABISELECT(-288,-160),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-256,-148),
  ABISELECT(-80,-44),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C22__9S20436C20[] = {
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C22__9S20436C20[] = {
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C20[] = {
  ABISELECT(-240,-132),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C20[] = {
  ABISELECT(-248,-136),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C19__9S20436C20[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C19__9S20436C20[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19__9S20436C20[] = {
  ABISELECT(-248,-136),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C20[] = {
  ABISELECT(-272,-152),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A1__9S20436C20[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn96_N8S20436C4D1Ev,_ZThn52_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn96_N8S20436C4D0Ev,_ZThn52_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__A1__9S20436C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C20[] = {
  ABISELECT(-288,-160),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C12__A1__9S20436C20[] = {
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C12__A1__9S20436C20[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A1__9S20436C20[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C12__A1__9S20436C20[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C20[] = {
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C12__A5__9S20436C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A5__9S20436C20[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C12__A4__9S20436C20[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C12__A1__9S20436C20[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C12__A1__9S20436C20[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C12__A1__9S20436C20[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12__A1__9S20436C20[] = {
  ABISELECT(-352,-192),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
static  VTT_ENTRY vtt_S20436C20[] = {
  {&(_ZTV9S20436C20[14]),  14,139},
  {&(_ZTV9S20436C20[14]),  14,139},
  {&(_ZTV9S20436C20[107]),  107,139},
  {&(_ZTV9S20436C20[32]),  32,139},
  {&(_ZTV9S20436C20[90]),  90,139},
  {&(_ZTV9S20436C20[37]),  37,139},
  {&(_ZTV9S20436C20[99]),  99,139},
  {&(_ZTV9S20436C20[107]),  107,139},
  {&(_ZTV9S20436C20[43]),  43,139},
  {&(_ZTV9S20436C20[55]),  55,139},
  {&(_ZTV9S20436C20[115]),  115,139},
  {&(_ZTV9S20436C20[66]),  66,139},
  {&(_ZTV9S20436C20[66]),  66,139},
  {&(_ZTV9S20436C20[70]),  70,139},
  {&(_ZTV9S20436C20[77]),  77,139},
  {&(_ZTV9S20436C20[84]),  84,139},
  {&(_ZTV9S20436C20[125]),  125,139},
  {&(_ZTV9S20436C20[129]),  129,139},
  {&(_ZTV9S20436C20[136]),  136,139},
  {&(_tg__ZTV9S20436C22__9S20436C20[11]),  11,14},
  {&(_tg__ZTV9S20436C189S20436C22__9S20436C20[6]),  6,8},
  {&(_tg__ZTV8S20436C39S20436C189S20436C22__9S20436C20[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C39S20436C189S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C189S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C39S20436C189S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C189S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C189S20436C22__9S20436C20[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C22__A1__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C22__A1__9S20436C20[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C22__A1__9S20436C20[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C22__A1__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C239S20436C22__9S20436C20[9]),  9,13},
  {&(_tg__ZTV9S20436C159S20436C239S20436C22__A2__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C20[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C20[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C239S20436C22__A2__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C129S20436C239S20436C22__9S20436C20[6]),  6,8},
  {&(_tg__ZTV9S20436C139S20436C129S20436C239S20436C22__9S20436C20[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C239S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C129S20436C239S20436C22__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C129S20436C239S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C129S20436C239S20436C22__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C129S20436C239S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C20[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C239S20436C22__A4__9S20436C20[3]),  3,4},
  {&(_tg__ZTV8S20436C9__9S20436C239S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C239S20436C22__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C12__9S20436C239S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV9S20436C12__9S20436C239S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C239S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C12__A1__9S20436C239S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C16__A2__9S20436C239S20436C22__9S20436C20[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C22__9S20436C20[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C22__9S20436C20[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C15__A1__9S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C23__9S20436C22__9S20436C20[9]),  9,13},
  {&(_tg__ZTV8S20436C9__9S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C23__A4__9S20436C22__9S20436C20[4]),  4,7},
  {&(_tg__ZTV9S20436C12__A1__9S20436C22__9S20436C20[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C22__9S20436C20[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C22__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C19__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C20[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C20[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C20[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C19__9S20436C20[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C20[5]),  5,8},
  {&(_tg__ZTV8S20436C9__9S20436C20[3]),  3,6},
  {&(_tg__ZTV8S20436C4__A1__9S20436C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__A1__9S20436C20[3]),  3,5},
  {&(_tg__ZTV9S20436C12__A1__9S20436C20[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C12__A1__9S20436C20[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C12__A1__9S20436C20[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A1__9S20436C20[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C12__A1__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C20[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__A5__9S20436C20[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A5__9S20436C20[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C12__A4__9S20436C20[3]),  3,4},
  {&(_tg__ZTV8S20436C4__9S20436C12__A1__9S20436C20[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C12__A1__9S20436C20[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C12__A1__9S20436C20[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C12__A1__9S20436C20[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20436C20[];
extern  VTBL_ENTRY _ZTV9S20436C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C20[];
static VTBL_ENTRY alt_thunk_names25[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20436C22D0Ev,_ZThn148_N9S20436C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20436C22D1Ev,_ZThn148_N9S20436C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C22D0Ev,_ZThn140_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C22D1Ev,_ZThn140_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20436C22D0Ev,_ZThn120_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20436C22D1Ev,_ZThn120_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C23D0Ev,_ZThn64_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C23D1Ev,_ZThn64_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C23D0Ev,_ZThn100_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C23D1Ev,_ZThn100_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C12D0Ev,_ZThn52_N9S20436C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C12D1Ev,_ZThn52_N9S20436C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C13D0Ev,_ZThn52_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20436C13D1Ev,_ZThn52_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20436C18D0Ev,_ZThn120_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20436C18D1Ev,_ZThn120_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C18D0Ev,_ZThn104_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C18D1Ev,_ZThn104_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C3D0Ev,_ZThn104_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C3D1Ev,_ZThn104_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C4D0Ev,_ZThn52_N8S20436C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C4D0Ev,_ZThn104_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C4D1Ev,_ZThn52_N8S20436C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20436C4D1Ev,_ZThn104_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20436C20D0Ev,_ZThn152_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20436C20D1Ev,_ZThn152_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C20D0Ev,_ZThn132_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C20D1Ev,_ZThn132_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20436C20D0Ev,_ZThn116_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20436C20D1Ev,_ZThn116_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20436C20D0Ev,_ZThn160_N9S20436C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C20D0Ev,_ZThn64_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20436C20D1Ev,_ZThn160_N9S20436C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C20D1Ev,_ZThn64_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C20D0Ev,_ZThn12_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C20D1Ev,_ZThn12_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C20 = {  "S20436C20", // class name
  bases_S20436C20, 51,
  &(vtc_S20436C20[0]), // expected_vtbl_contents
  &(vtt_S20436C20[0]), // expected_vtt_contents
  ABISELECT(368,204), // object size
  NSPAIRA(_ZTI9S20436C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20436C20),139, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C20),98, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names25,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C25_nt  : S9624C48 {
};
//SIG(-1 S20436C25_nt) C1{ BC2{ m}}



//skip512 S20436C25_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20436C24  : S20436C25_nt , virtual S9624C48 , virtual S20436C19 {
  virtual void  v4(); // _ZN9S20436C242v4Ev
  ~S20436C24(); // tgen
  S20436C24(); // tgen
};
//SIG(-1 S20436C24) C1{ BC2{ BC3{ m}} VBC3 VBC4{ BC3 VBC5{ vd m FD} BC6{ v2} BC7{ BC8{ VBC6 vd} VBC3 vd FC9{ m Fc[7]}} vd Fi} v1}


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

static void Test_S20436C24()
{
  extern Class_Descriptor cd_S20436C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S20436C24, buf);
    S20436C24 *dp, &lv = *(dp=new (buf) S20436C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20436C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C24)");
    check_base_class_offset(lv, (S9624C48*)(S20436C25_nt*), 0, "S20436C24");
    check_base_class_offset(lv, (S20436C25_nt*), 0, "S20436C24");
    /*is_ambiguous_... S20436C24::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S20436C24");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C19*), ABISELECT(8,4), "S20436C24");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C19*), ABISELECT(16,8), "S20436C24");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C19*), ABISELECT(48,28), "S20436C24");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C19*), ABISELECT(16,8), "S20436C24");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C19*), 0, "S20436C24");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(24,12), "S20436C24");
    check_base_class_offset(lv, (S20436C15*)(S20436C19*), ABISELECT(24,12), "S20436C24");
    check_base_class_offset(lv, (S20436C19*), ABISELECT(16,8), "S20436C24");
    test_class_info(&lv, &cd_S20436C24);
    dp->~S20436C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C24(Test_S20436C24, "S20436C24", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN9S20436C24C1Ev();
extern void _ZN9S20436C24D1Ev();
Name_Map name_map_S20436C24[] = {
  NSPAIR(_ZN9S20436C24C1Ev),
  NSPAIR(_ZN9S20436C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C25_nt;
extern VTBL_ENTRY _ZTI12S20436C25_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C19;
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
static Base_Class bases_S20436C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20436C25_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    29, //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
    9, //immediately_derived
  0, 1},
  {&cd_S20436C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20436C8,    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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20436C16,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20436C19,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C24[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C242v4Ev();
extern void _ZN9S20436C24D1Ev();
extern void _ZN9S20436C24D0Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C24D1Ev,_ZThn8_N9S20436C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C24D0Ev,_ZThn8_N9S20436C24D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C24D1Ev,_ZTvn4_n28_N9S20436C24D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C24D0Ev,_ZTvn4_n28_N9S20436C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev)();
extern void ABISELECT(_ZThn48_N9S20436C24D1Ev,_ZThn28_N9S20436C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev)();
extern void ABISELECT(_ZThn48_N9S20436C24D0Ev,_ZThn28_N9S20436C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20436C24[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20436C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C24D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C24D1Ev,_ZTvn4_n28_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C24D0Ev,_ZTvn4_n28_N9S20436C24D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C24[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C19__9S20436C24[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C19__9S20436C24[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C19__9S20436C24[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20436C19D1Ev,_ZThn20_N9S20436C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20436C19D0Ev,_ZThn20_N9S20436C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C19__9S20436C24[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19__9S20436C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C19__9S20436C24[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
static  VTT_ENTRY vtt_S20436C24[] = {
  {&(_ZTV9S20436C24[7]),  7,34},
  {&(_ZTV9S20436C24[18]),  18,34},
  {&(_ZTV9S20436C24[32]),  32,34},
  {&(_ZTV9S20436C24[26]),  26,34},
  {&(_ZTV9S20436C24[7]),  7,34},
  {&(_tg__ZTV9S20436C19__9S20436C24[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C24[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C24[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C19__9S20436C24[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C19__9S20436C24[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20436C19__9S20436C24[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C24[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C19__9S20436C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20436C24[];
extern  VTBL_ENTRY _ZTV9S20436C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C24[];
static VTBL_ENTRY alt_thunk_names26[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C19D0Ev,_ZThn20_N9S20436C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20436C19D1Ev,_ZThn20_N9S20436C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20436C24D0Ev,_ZThn28_N9S20436C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20436C24D1Ev,_ZThn28_N9S20436C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C24D0Ev,_ZThn8_N9S20436C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C24D1Ev,_ZThn8_N9S20436C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C24 = {  "S20436C24", // class name
  bases_S20436C24, 10,
  &(vtc_S20436C24[0]), // expected_vtbl_contents
  &(vtt_S20436C24[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI9S20436C24),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20436C24),34, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C24),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names26,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C17  : S20948C8 , virtual S20436C18 , virtual S20436C20 , S20436C24 , S9624C19_nt {
  virtual  ~S20436C17(); // _ZN9S20436C17D2Ev
  S20436C17(); // tgen
};
//SIG(-1 S20436C17) C1{ BC2{ m Fc[7]} VBC3{ VBC4{ v1} BC5{ BC6{ BC7{ m} VBC8{ vd m FD} vd} BC2 BC4 VBC7} VBC9{ BC7 VBC8 BC4 BC10{ BC11{ VBC4 vd} VBC7 vd FC2} vd Fi} BC2 vd Fi} VBC12{ VBC13{ BC4} VBC4 VBC14{ VBC15{ BC16{ m} FC7 FC16} BC3 BC10 BC17{ VBC18{ BC4 VBC16 vd Fi:23} BC10 BC19{ BC20{ BC7 BC15 VBC6 VBC4 Fp} BC15 BC8 BC10} BC11 vd v2} VBC19 vd v3} Fl[2]} BC21{ BC22{ BC7} VBC7 VBC9 v4} BC23{ m} vd}


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

static void Test_S20436C17()
{
  extern Class_Descriptor cd_S20436C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,63)];
    init_test(&cd_S20436C17, buf);
    S20436C17 *dp, &lv = *(dp=new (buf) S20436C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,248), "sizeof(S20436C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C17)");
    /*is_ambiguous_... S20436C17::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C18*), ABISELECT(112,64), "S20436C17");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C20::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C20*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C18::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C18*)(S20436C22*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C22*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C17");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C17");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C23*)(S20436C22*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(16,12), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(64,40), "S20436C17");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C19*), ABISELECT(64,40), "S20436C17");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(64,40), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(64,40), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(16,12), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C3*)(S20436C18*), ABISELECT(24,16), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C3*)(S20436C18*), ABISELECT(32,24), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*)(S20436C18*), ABISELECT(96,56), "S20436C17");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C19*), ABISELECT(96,56), "S20436C17");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(96,56), "S20436C17");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C22*), ABISELECT(96,56), "S20436C17");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(96,56), "S20436C17");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(96,56), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*), ABISELECT(96,56), "S20436C17");
    /*is_ambiguous_... S20436C24::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C24*), ABISELECT(96,56), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C3*)(S20436C18*), ABISELECT(16,12), "S20436C17");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C19*), ABISELECT(104,60), "S20436C17");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C19*), ABISELECT(104,60), "S20436C17");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(112,64), "S20436C17");
    check_base_class_offset(lv, (S20436C15*)(S20436C19*), ABISELECT(112,64), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C19*)(S20436C18*), ABISELECT(104,60), "S20436C17");
    check_base_class_offset(lv, (S20436C19*)(S20436C18*)(S20436C22*), ABISELECT(104,60), "S20436C17");
    check_base_class_offset(lv, (S20436C19*)(S20436C24*), ABISELECT(104,60), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C18*), ABISELECT(40,28), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C18*), ABISELECT(16,12), "S20436C17");
    check_base_class_offset(lv, (S20436C8*)(S20436C21*), ABISELECT(136,80), "S20436C17");
    check_base_class_offset(lv, (S20436C21*)(S20436C20*), ABISELECT(136,80), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*), ABISELECT(328,192), "S20436C17");
    /*is_ambiguous_... S20436C22::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C22*), ABISELECT(328,192), "S20436C17");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(160,92), "S20436C17");
    check_base_class_offset(lv, (S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(160,92), "S20436C17");
    check_base_class_offset(lv, (S20948C8*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(168,96), "S20436C17");
    check_base_class_offset(lv, (S20436C8*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(176,104), "S20436C17");
    check_base_class_offset(lv, (S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(160,92), "S20436C17");
    /*is_ambiguous_... S20436C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C18*)(S20436C22*), ABISELECT(184,108), "S20436C17");
    check_base_class_offset(lv, (S20436C18*)(S20436C22*), ABISELECT(160,92), "S20436C17");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C22*), ABISELECT(200,120), "S20436C17");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C22*), ABISELECT(200,120), "S20436C17");
    check_base_class_offset(lv, (S20436C8*)(S20436C9*), ABISELECT(336,196), "S20436C17");
    check_base_class_offset(lv, (S9624C39*)(S20436C9*), 0, "S20436C17");
    check_base_class_offset(lv, (S20436C9*)(S20436C23*)(S20436C22*), ABISELECT(336,196), "S20436C17");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(224,132), "S20436C17");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(224,132), "S20436C17");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(248,148), "S20436C17");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(249,149), "S20436C17");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(249,149), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*), ABISELECT(240,144), "S20436C17");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(240,144), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*), ABISELECT(240,144), "S20436C17");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(240,144), "S20436C17");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(264,156), "S20436C17");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(264,156), "S20436C17");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(272,160), "S20436C17");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(304,176), "S20436C17");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(304,176), "S20436C17");
    check_base_class_offset(lv, (S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(240,144), "S20436C17");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C23*)(S20436C22*), ABISELECT(320,188), "S20436C17");
    check_base_class_offset(lv, (S20436C23*)(S20436C22*), ABISELECT(224,132), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*), ABISELECT(360,208), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(361,209), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(361,209), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C13*)(S20436C12*), ABISELECT(352,204), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*), ABISELECT(376,216), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*), ABISELECT(376,216), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*), ABISELECT(384,220), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(416,236), "S20436C17");
    /*is_ambiguous_... S20436C17::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C12*), ABISELECT(416,236), "S20436C17");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C12*)(S20436C22*), ABISELECT(352,204), "S20436C17");
    check_base_class_offset(lv, (S20436C22*)(S20436C20*), ABISELECT(160,92), "S20436C17");
    check_base_class_offset(lv, (S20436C20*), ABISELECT(136,80), "S20436C17");
    check_base_class_offset(lv, (S9624C48*)(S20436C25_nt*)(S20436C24*), 0, "S20436C17");
    check_base_class_offset(lv, (S20436C25_nt*)(S20436C24*), 0, "S20436C17");
    check_base_class_offset(lv, (S20436C24*), 0, "S20436C17");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S20436C17");
    test_class_info(&lv, &cd_S20436C17);
    dp->~S20436C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C17(Test_S20436C17, "S20436C17", ABISELECT(432,248));

#else // __cplusplus

extern void _ZN9S20436C17C1Ev();
extern void _ZN9S20436C17D2Ev();
Name_Map name_map_S20436C17[] = {
  NSPAIR(_ZN9S20436C17C1Ev),
  NSPAIR(_ZN9S20436C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C19;
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C18;
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C21;
extern VTBL_ENTRY _ZTI9S20436C21[];
extern  VTBL_ENTRY _ZTV9S20436C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C18;
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C9;
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C23;
extern VTBL_ENTRY _ZTI9S20436C23[];
extern  VTBL_ENTRY _ZTV9S20436C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C22;
extern VTBL_ENTRY _ZTI9S20436C22[];
extern  VTBL_ENTRY _ZTV9S20436C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C22[];
extern Class_Descriptor cd_S20436C20;
extern VTBL_ENTRY _ZTI9S20436C20[];
extern  VTBL_ENTRY _ZTV9S20436C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C20[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C25_nt;
extern VTBL_ENTRY _ZTI12S20436C25_nt[];
extern Class_Descriptor cd_S20436C24;
extern VTBL_ENTRY _ZTI9S20436C24[];
extern  VTBL_ENTRY _ZTV9S20436C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C24[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S20436C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20436C8,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(64,40), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20436C4,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(32,24), //bcp->offset
    30, //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    8, //immediately_derived
  0, 1},
  {&cd_S20436C3,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20436C8,    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
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(112,64), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20436C19,    ABISELECT(104,60), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20436C18,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20436C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20436C21,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(328,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(328,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(160,92), //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
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(168,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(176,104), //bcp->offset
    92, //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
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20436C3,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(184,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
    26, //immediately_derived
  0, 0},
  {&cd_S20436C18,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(200,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(200,120), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S20436C8,    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
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20436C9,    ABISELECT(336,196), //bcp->offset
    144, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S20436C16,    ABISELECT(224,132), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(224,132), //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
    28, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(248,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(249,149), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C14,    ABISELECT(249,149), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(240,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
    38, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20436C13,    ABISELECT(240,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(264,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
    41, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(264,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
    45, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(272,160), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(304,176), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(304,176), //bcp->offset
    129, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(240,144), //bcp->offset
    116, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(320,188), //bcp->offset
    137, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20436C23,    ABISELECT(224,132), //bcp->offset
    103, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(360,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(361,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(361,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20436C13,    ABISELECT(352,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(376,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(376,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(384,220), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(416,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(416,236), //bcp->offset
    165, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(352,204), //bcp->offset
    152, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S20436C22,    ABISELECT(160,92), //bcp->offset
    74, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S20436C20,    ABISELECT(136,80), //bcp->offset
    56, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20436C25_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S20436C24,    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_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20436C17[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C242v4Ev();
extern void _ZN9S20436C17D1Ev();
extern void _ZN9S20436C17D0Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C17D1Ev,_ZThn12_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C17D0Ev,_ZThn12_N9S20436C17D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20436C17D1Ev,_ZTv0_n12_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C17D1Ev,_ZThn40_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C17D0Ev,_ZTv0_n12_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S20436C17D0Ev,_ZThn40_N9S20436C17D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn104_N9S20436C17D1Ev,_ZThn60_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn104_N9S20436C17D0Ev,_ZThn60_N9S20436C17D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C17D1Ev,_ZTvn4_n28_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C17D0Ev,_ZTvn4_n28_N9S20436C17D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S20436C17D1Ev,_ZTv0_n60_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn136_N9S20436C17D1Ev,_ZThn80_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S20436C17D0Ev,_ZTv0_n60_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn136_N9S20436C17D0Ev,_ZThn80_N9S20436C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20436C17D1Ev,_ZTv0_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn160_N9S20436C17D1Ev,_ZThn92_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20436C17D0Ev,_ZTv0_n48_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn160_N9S20436C17D0Ev,_ZThn92_N9S20436C17D0Ev)() __attribute__((weak));
extern void _ZN9S20436C222v3Ev();
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20436C17D1Ev,_ZTvn28_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20436C17D0Ev,_ZTvn28_n48_N9S20436C17D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20436C17D1Ev,_ZTvn40_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20436C17D0Ev,_ZTvn40_n48_N9S20436C17D0Ev)();
extern void _ZN9S20436C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn240_N9S20436C17D1Ev,_ZThn144_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn240_N9S20436C17D0Ev,_ZThn144_N9S20436C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N9S20436C17D1Ev,_ZTvn68_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20436C17D0Ev,_ZTvn68_n48_N9S20436C17D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20436C17D1Ev,_ZTvn84_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20436C17D0Ev,_ZTvn84_n48_N9S20436C17D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20436C17D1Ev,_ZTvn96_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20436C17D0Ev,_ZTvn96_n48_N9S20436C17D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C17D1Ev,_ZTv0_n20_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S20436C17D1Ev,_ZThn196_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C17D0Ev,_ZTv0_n20_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn336_N9S20436C17D0Ev,_ZThn196_N9S20436C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn352_N9S20436C17D1Ev,_ZThn204_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn352_N9S20436C17D0Ev,_ZThn204_N9S20436C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20436C17D1Ev,_ZTvn16_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C17D0Ev,_ZTvn16_n16_N9S20436C17D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C17D1Ev,_ZTvn32_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C17D0Ev,_ZTvn32_n16_N9S20436C17D0Ev)();
static  VTBL_ENTRY vtc_S20436C17[] = {
  ABISELECT(352,204),
  ABISELECT(240,144),
  0,
  ABISELECT(336,196),
  ABISELECT(328,192),
  ABISELECT(160,92),
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(16,12),
  ABISELECT(112,64),
  ABISELECT(64,40),
  ABISELECT(104,60),
  ABISELECT(96,56),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20436C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C17D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C17D1Ev,_ZTv0_n12_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C17D0Ev,_ZTv0_n12_N9S20436C17D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C17D1Ev,_ZTvn4_n28_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C17D0Ev,_ZTvn4_n28_N9S20436C17D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(216,124),
  ABISELECT(104,64),
  ABISELECT(-136,-80),
  ABISELECT(200,116),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-72,-40),
  ABISELECT(192,112),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20436C17D1Ev,_ZTv0_n60_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20436C17D0Ev,_ZTv0_n60_N9S20436C17D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-160,-92),
  ABISELECT(192,112),
  ABISELECT(80,52),
  ABISELECT(-160,-92),
  ABISELECT(176,104),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-96,-52),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C17D1Ev,_ZTv0_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C17D0Ev,_ZTv0_n48_N9S20436C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-104,-64),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C17D1Ev,_ZTvn28_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C17D0Ev,_ZTvn28_n48_N9S20436C17D0Ev),
  ABISELECT(-160,-92),
  ABISELECT(16,12),
  ABISELECT(-224,-132),
  ABISELECT(112,64),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C17D1Ev,_ZTvn40_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C17D0Ev,_ZTvn40_n48_N9S20436C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
  ABISELECT(-144,-88),
  ABISELECT(-128,-80),
  0,
  ABISELECT(-240,-144),
  ABISELECT(-176,-104),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C17D1Ev,_ZTvn68_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C17D0Ev,_ZTvn68_n48_N9S20436C17D0Ev),
  ABISELECT(-208,-120),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-304,-176),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C17D1Ev,_ZTvn84_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C17D0Ev,_ZTvn84_n48_N9S20436C17D0Ev),
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C17D1Ev,_ZTvn96_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C17D0Ev,_ZTvn96_n48_N9S20436C17D0Ev),
  ABISELECT(-336,-196),
  0,
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C17D1Ev,_ZTv0_n20_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C17D0Ev,_ZTv0_n20_N9S20436C17D0Ev),
  ABISELECT(-256,-148),
  ABISELECT(-240,-140),
  ABISELECT(-112,-60),
  ABISELECT(-352,-204),
  ABISELECT(-288,-164),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev),
  ABISELECT(-384,-220),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C17D1Ev,_ZTvn16_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C17D0Ev,_ZTvn16_n16_N9S20436C17D0Ev),
  ABISELECT(-320,-180),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-416,-236),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C17D1Ev,_ZTvn32_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C17D0Ev,_ZTvn32_n16_N9S20436C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20436C17[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C242v4Ev();
extern void _ZN9S20436C24D1Ev();
extern void _ZN9S20436C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C24__9S20436C17[] = {
  ABISELECT(112,64),
  ABISELECT(64,40),
  ABISELECT(104,60),
  ABISELECT(96,56),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20436C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C24D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev)();
extern void ABISELECT(_ZThn104_N9S20436C24D1Ev,_ZThn60_N9S20436C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev)();
extern void ABISELECT(_ZThn104_N9S20436C24D0Ev,_ZThn60_N9S20436C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C24__9S20436C17[] = {
  ABISELECT(-104,-60),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C24D1Ev,_ZThn40_N9S20436C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20436C24D0Ev,_ZThn40_N9S20436C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C24__9S20436C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C24D1Ev,_ZTvn4_n28_N9S20436C24D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C24D0Ev,_ZTvn4_n28_N9S20436C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C24__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C24D1Ev,_ZTvn4_n28_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C24D0Ev,_ZTvn4_n28_N9S20436C24D0Ev),
};
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C18__9S20436C17[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C39S20436C18__9S20436C17[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C39S20436C18__9S20436C17[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20436C4D1Ev,_ZThn28_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20436C4D0Ev,_ZThn28_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C18__9S20436C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20436C3D1Ev,_ZThn28_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S20436C3D0Ev,_ZThn28_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C39S20436C18__9S20436C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C18__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S20436C18D1Ev,_ZThn28_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S20436C18D0Ev,_ZThn28_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C18__9S20436C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn88_N9S20436C18D1Ev,_ZThn48_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn88_N9S20436C18D0Ev,_ZThn48_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C18__9S20436C17[] = {
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C19__9S20436C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C19__9S20436C17[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C20D1Ev();
extern void _ZN9S20436C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C20__9S20436C17[] = {
  ABISELECT(216,124),
  ABISELECT(104,64),
  ABISELECT(-136,-80),
  ABISELECT(200,116),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-72,-40),
  ABISELECT(192,112),
  ABISELECT(24,12),
  ABISELECT(-24,-16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C20D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C20D1Ev,_ZTvn4_n28_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C20D0Ev,_ZTvn4_n28_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C20__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C20D1Ev,_ZTvn4_n28_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C20D0Ev,_ZTvn4_n28_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20436C20D1Ev,_ZThn12_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20436C20D0Ev,_ZThn12_N9S20436C20D0Ev)() __attribute__((weak));
extern void _ZN9S20436C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C22__9S20436C20__9S20436C17[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  ABISELECT(192,112),
  ABISELECT(80,52),
  ABISELECT(-160,-92),
  ABISELECT(176,104),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-96,-52),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C20__9S20436C17[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C88S20436C39S20436C189S20436C22__A2__9S20436C20__9S20436C17[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C20__9S20436C17[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20436C20D1Ev,_ZTvn28_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20436C20D0Ev,_ZTvn28_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C22__A1__9S20436C20__9S20436C17[] = {
  ABISELECT(-104,-64),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C20D1Ev,_ZTvn28_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C20D0Ev,_ZTvn28_n48_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20436C20D1Ev,_ZTvn40_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20436C20D0Ev,_ZTvn40_n48_N9S20436C20D0Ev)();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C239S20436C22__9S20436C20__9S20436C17[] = {
  ABISELECT(-160,-92),
  ABISELECT(16,12),
  ABISELECT(-224,-132),
  ABISELECT(112,64),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C20D1Ev,_ZTvn40_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C20D0Ev,_ZTvn40_n48_N9S20436C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn200_N9S20436C20D1Ev,_ZThn116_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn200_N9S20436C20D0Ev,_ZThn116_N9S20436C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C20__9S20436C17[] = {
  ABISELECT(-200,-116),
  0,
  ABISELECT(-336,-196),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S20436C20D1Ev,_ZThn64_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S20436C20D0Ev,_ZThn64_N9S20436C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20__9S20436C17[] = {
  ABISELECT(-144,-88),
  ABISELECT(-128,-80),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-176,-104),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20436C20D1Ev,_ZTvn68_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20436C20D0Ev,_ZTvn68_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C129S20436C239S20436C22__A1__9S20436C20__9S20436C17[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C20D1Ev,_ZTvn68_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C20D0Ev,_ZTvn68_n48_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20436C20D1Ev,_ZTvn84_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20436C20D0Ev,_ZTvn84_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20__9S20436C17[] = {
  ABISELECT(-208,-120),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C20D1Ev,_ZTvn84_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C20D0Ev,_ZTvn84_n48_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20436C20D1Ev,_ZTvn96_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20436C20D0Ev,_ZTvn96_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C20__9S20436C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C20D1Ev,_ZTvn96_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C20D0Ev,_ZTvn96_n48_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn216_N9S20436C20D1Ev,_ZThn124_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn216_N9S20436C20D0Ev,_ZThn124_N9S20436C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C20__9S20436C17[] = {
  ABISELECT(-256,-148),
  ABISELECT(-240,-140),
  ABISELECT(-112,-60),
  ABISELECT(-216,-124),
  ABISELECT(-288,-164),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20436C20D1Ev,_ZTvn16_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C20D0Ev,_ZTvn16_n16_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C20__9S20436C17[] = {
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C20D1Ev,_ZTvn16_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C20D0Ev,_ZTvn16_n16_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C20D1Ev,_ZTvn32_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C20D0Ev,_ZTvn32_n16_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C20__9S20436C17[] = {
  ABISELECT(-320,-180),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C20D1Ev,_ZTvn32_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C20D0Ev,_ZTvn32_n16_N9S20436C20D0Ev),
};
extern void _ZN9S20436C22D1Ev();
extern void _ZN9S20436C22D0Ev();
extern void _ZN9S20436C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C22__9S20436C17[] = {
  ABISELECT(192,112),
  ABISELECT(80,52),
  ABISELECT(-160,-92),
  ABISELECT(176,104),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN9S20436C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
};
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(-56,-32),
  ABISELECT(-48,-28),
  ABISELECT(-64,-36),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C39S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(-64,-36),
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C39S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C39S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C189S20436C22__A1__9S20436C17[] = {
  ABISELECT(56,32),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C22__A1__9S20436C17[] = {
  ABISELECT(-104,-64),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C22__A1__9S20436C17[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C22__A1__9S20436C17[] = {
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C22__A1__9S20436C17[] = {
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C23D1Ev();
extern void _ZN9S20436C23D0Ev();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-160,-92),
  ABISELECT(16,12),
  ABISELECT(-224,-132),
  ABISELECT(112,64),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C239S20436C22__A2__9S20436C17[] = {
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C17[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C17[] = {
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C239S20436C22__A2__9S20436C17[] = {
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-144,-88),
  ABISELECT(-128,-80),
  0,
  0,
  ABISELECT(-176,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C129S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-128,-80),
  0,
  0,
  ABISELECT(-176,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C129S20436C239S20436C22__9S20436C17[] = {
  0,
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[] = {
  ABISELECT(-208,-120),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[] = {
  0,
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[] = {
  0,
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C129S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C129S20436C239S20436C22__9S20436C17[] = {
  0,
  ABISELECT(128,80),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C129S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-208,-120),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C239S20436C22__A4__9S20436C17[] = {
  0,
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C23D1Ev,_ZThn64_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C23D0Ev,_ZThn64_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-112,-64),
  0,
  ABISELECT(-336,-196),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C239S20436C22__9S20436C17[] = {
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__9S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-144,-88),
  ABISELECT(-128,-80),
  0,
  ABISELECT(-16,-12),
  ABISELECT(-176,-104),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A1__9S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-208,-120),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C16__A2__9S20436C239S20436C22__9S20436C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C22__9S20436C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C22__9S20436C17[] = {
  ABISELECT(96,52),
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C22__9S20436C17[] = {
  ABISELECT(56,32),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__A1__9S20436C22__9S20436C17[] = {
  ABISELECT(-104,-64),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev)();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C23__9S20436C22__9S20436C17[] = {
  ABISELECT(-160,-92),
  ABISELECT(16,12),
  ABISELECT(-224,-132),
  ABISELECT(112,64),
  ABISELECT(-128,-76),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C22__9S20436C17[] = {
  ABISELECT(-176,-104),
  0,
  ABISELECT(-336,-196),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C23__9S20436C22__9S20436C17[] = {
  ABISELECT(-144,-88),
  ABISELECT(-128,-80),
  0,
  ABISELECT(-80,-52),
  ABISELECT(-176,-104),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22__9S20436C17[] = {
  ABISELECT(-208,-120),
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C23__A4__9S20436C22__9S20436C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn192_N9S20436C22D1Ev,_ZThn112_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn192_N9S20436C22D0Ev,_ZThn112_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C22__9S20436C17[] = {
  ABISELECT(-256,-148),
  ABISELECT(-240,-140),
  ABISELECT(-112,-60),
  ABISELECT(-192,-112),
  ABISELECT(-288,-164),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C22__9S20436C17[] = {
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C22__9S20436C17[] = {
  ABISELECT(-320,-180),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C17[] = {
  ABISELECT(-336,-196),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A2__9S20436C17[] = {
  ABISELECT(-176,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__A2__9S20436C17[] = {
  ABISELECT(176,104),
  ABISELECT(176,104),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C17[] = {
  ABISELECT(-256,-148),
  ABISELECT(-240,-140),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-288,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C12__A1__9S20436C17[] = {
  ABISELECT(-240,-140),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-288,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C12__A1__9S20436C17[] = {
  ABISELECT(112,60),
  ABISELECT(-176,-104),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A1__9S20436C17[] = {
  ABISELECT(288,164),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C12__A1__9S20436C17[] = {
  0,
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C17[] = {
  ABISELECT(-320,-180),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C12__A5__9S20436C17[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A5__9S20436C17[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C12__A4__9S20436C17[] = {
  0,
  ABISELECT(304,172),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C12__A1__9S20436C17[] = {
  ABISELECT(112,60),
  ABISELECT(-176,-104),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C12__A1__9S20436C17[] = {
  ABISELECT(288,164),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C12__A1__9S20436C17[] = {
  0,
  ABISELECT(240,140),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12__A1__9S20436C17[] = {
  ABISELECT(-320,-180),
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
static  VTT_ENTRY vtt_S20436C17[] = {
  {&(_ZTV9S20436C17[16]),  16,173},
  {&(_tg__ZTV9S20436C24__9S20436C17[7]),  7,11},
  {&(_tg__ZTV9S20436C19__9S20436C24__9S20436C17[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__9S20436C24__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C24__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C24__9S20436C17[5]),  5,8},
  {&(_ZTV9S20436C17[28]),  28,173},
  {&(_ZTV9S20436C17[53]),  53,173},
  {&(_ZTV9S20436C17[36]),  36,173},
  {&(_ZTV9S20436C17[32]),  32,173},
  {&(_ZTV9S20436C17[45]),  45,173},
  {&(_ZTV9S20436C17[53]),  53,173},
  {&(_ZTV9S20436C17[71]),  71,173},
  {&(_ZTV9S20436C17[71]),  71,173},
  {&(_ZTV9S20436C17[89]),  89,173},
  {&(_ZTV9S20436C17[94]),  94,173},
  {&(_ZTV9S20436C17[100]),  100,173},
  {&(_ZTV9S20436C17[112]),  112,173},
  {&(_ZTV9S20436C17[149]),  149,173},
  {&(_ZTV9S20436C17[123]),  123,173},
  {&(_ZTV9S20436C17[123]),  123,173},
  {&(_ZTV9S20436C17[127]),  127,173},
  {&(_ZTV9S20436C17[134]),  134,173},
  {&(_ZTV9S20436C17[141]),  141,173},
  {&(_ZTV9S20436C17[159]),  159,173},
  {&(_ZTV9S20436C17[163]),  163,173},
  {&(_ZTV9S20436C17[170]),  170,173},
  {&(_tg__ZTV9S20436C18__9S20436C17[6]),  6,8},
  {&(_tg__ZTV8S20436C39S20436C18__9S20436C17[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C39S20436C18__9S20436C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C18__9S20436C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C39S20436C18__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18__9S20436C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C18__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C18__9S20436C17[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C19__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C17[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__9S20436C17[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C19__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C15__9S20436C19__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C20__9S20436C17[14]),  14,17},
  {&(_tg__ZTV9S20436C20__9S20436C17[14]),  14,17},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C20__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C22__9S20436C20__9S20436C17[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20436C20__9S20436C17[3]),  3,5},
  {&(_tg__ZTV8S20436C88S20436C39S20436C189S20436C22__A2__9S20436C20__9S20436C17[2]),  2,3},
  {&(_tg__ZTV9S20436C19__9S20436C20__9S20436C17[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C20__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C22__A1__9S20436C20__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C239S20436C22__9S20436C20__9S20436C17[9]),  9,13},
  {&(_tg__ZTV8S20436C9__9S20436C20__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20__9S20436C17[7]),  7,9},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20__9S20436C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C129S20436C239S20436C22__A1__9S20436C20__9S20436C17[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C20__9S20436C17[4]),  4,7},
  {&(_tg__ZTV9S20436C12__A1__9S20436C20__9S20436C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C20__9S20436C17[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C20__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C22__9S20436C17[11]),  11,14},
  {&(_tg__ZTV9S20436C189S20436C22__A1__9S20436C17[6]),  6,8},
  {&(_tg__ZTV8S20436C39S20436C189S20436C22__A1__9S20436C17[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C39S20436C189S20436C22__A1__9S20436C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C189S20436C22__A1__9S20436C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C39S20436C189S20436C22__A1__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__A1__9S20436C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C189S20436C22__A1__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C189S20436C22__A1__9S20436C17[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__A1__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C22__A1__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C22__A1__9S20436C17[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C22__A1__9S20436C17[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C22__A1__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C239S20436C22__9S20436C17[9]),  9,13},
  {&(_tg__ZTV9S20436C159S20436C239S20436C22__A2__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C17[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C239S20436C22__A2__9S20436C17[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C239S20436C22__A2__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C129S20436C239S20436C22__9S20436C17[6]),  6,8},
  {&(_tg__ZTV9S20436C139S20436C129S20436C239S20436C22__9S20436C17[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C239S20436C22__9S20436C17[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C129S20436C239S20436C22__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C129S20436C239S20436C22__9S20436C17[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C129S20436C239S20436C22__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C129S20436C239S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C17[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C239S20436C22__A4__9S20436C17[3]),  3,4},
  {&(_tg__ZTV8S20436C9__9S20436C239S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C239S20436C22__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C12__9S20436C239S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV9S20436C12__9S20436C239S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20436C239S20436C22__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C12__A1__9S20436C239S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C16__A2__9S20436C239S20436C22__9S20436C17[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C22__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C22__9S20436C17[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C15__A1__9S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C23__9S20436C22__9S20436C17[9]),  9,13},
  {&(_tg__ZTV8S20436C9__9S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C23__A4__9S20436C22__9S20436C17[4]),  4,7},
  {&(_tg__ZTV9S20436C12__A1__9S20436C22__9S20436C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C22__9S20436C17[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C22__9S20436C17[5]),  5,8},
  {&(_tg__ZTV8S20436C9__9S20436C17[3]),  3,6},
  {&(_tg__ZTV8S20436C4__A2__9S20436C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__A2__9S20436C17[3]),  3,5},
  {&(_tg__ZTV9S20436C12__A1__9S20436C17[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C12__A1__9S20436C17[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C12__A1__9S20436C17[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A1__9S20436C17[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C12__A1__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C17[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__A5__9S20436C17[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A5__9S20436C17[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C12__A4__9S20436C17[3]),  3,4},
  {&(_tg__ZTV8S20436C4__9S20436C12__A1__9S20436C17[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C12__A1__9S20436C17[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C12__A1__9S20436C17[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C12__A1__9S20436C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20436C17[];
extern  VTBL_ENTRY _ZTV9S20436C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C17[];
static VTBL_ENTRY alt_thunk_names27[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20436C22D0Ev,_ZThn112_N9S20436C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20436C22D1Ev,_ZThn112_N9S20436C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C23D0Ev,_ZThn64_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C23D1Ev,_ZThn64_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20436C20D0Ev,_ZThn124_N9S20436C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C20D0Ev,_ZThn64_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20436C20D1Ev,_ZThn124_N9S20436C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C20D1Ev,_ZThn64_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20436C20D0Ev,_ZThn116_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20436C20D1Ev,_ZThn116_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20436C20D0Ev,_ZThn12_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20436C20D1Ev,_ZThn12_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20436C18D0Ev,_ZThn48_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20436C18D1Ev,_ZThn48_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20436C18D0Ev,_ZThn28_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20436C18D1Ev,_ZThn28_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C3D0Ev,_ZThn28_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C3D1Ev,_ZThn28_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C4D0Ev,_ZThn28_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20436C4D1Ev,_ZThn28_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20436C24D0Ev,_ZThn40_N9S20436C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20436C24D1Ev,_ZThn40_N9S20436C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C24D0Ev,_ZThn60_N9S20436C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C24D1Ev,_ZThn60_N9S20436C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C17D0Ev,_ZTv0_n20_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20436C17D0Ev,_ZThn196_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C17D1Ev,_ZTv0_n20_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20436C17D1Ev,_ZThn196_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20436C17D0Ev,_ZThn204_N9S20436C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C17D0Ev,_ZThn144_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20436C17D1Ev,_ZThn204_N9S20436C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C17D1Ev,_ZThn144_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C17D0Ev,_ZTv0_n48_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20436C17D0Ev,_ZThn92_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C17D1Ev,_ZTv0_n48_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20436C17D1Ev,_ZThn92_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20436C17D0Ev,_ZTv0_n60_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20436C17D0Ev,_ZThn80_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20436C17D1Ev,_ZTv0_n60_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20436C17D1Ev,_ZThn80_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C17D0Ev,_ZTv0_n12_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20436C17D0Ev,_ZThn40_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C17D1Ev,_ZTv0_n12_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20436C17D1Ev,_ZThn40_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C17D0Ev,_ZThn60_N9S20436C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C17D0Ev,_ZThn12_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C17D1Ev,_ZThn60_N9S20436C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C17D1Ev,_ZThn12_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C17 = {  "S20436C17", // class name
  bases_S20436C17, 64,
  &(vtc_S20436C17[0]), // expected_vtbl_contents
  &(vtt_S20436C17[0]), // expected_vtt_contents
  ABISELECT(432,248), // object size
  NSPAIRA(_ZTI9S20436C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20436C17),173, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20436C17),134, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names27,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20436C1  : virtual S20436C2 , S20436C17 {
  int s20436c1f0[10];
  ~S20436C1(); // tgen
  S20436C1(); // tgen
};
//SIG(1 S20436C1) C1{ VBC2{ VBC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC8{ v1} VBC5} VBC9{ BC8 VBC10{ m} vd Fi:23} VBC8 BC11{ BC7 VBC4 VBC5 vd} BC12{ BC13{ BC5 BC14{ BC10 FC5 FC10} VBC4 VBC8 Fp} BC14 BC6 BC15{ BC16{ VBC8 vd} VBC5 vd FC7}} vd} BC17{ BC7 VBC18{ VBC8 BC3 VBC19{ BC5 VBC6 BC8 BC15 vd Fi} BC7 vd Fi} VBC20{ VBC21{ BC8} VBC8 VBC22{ VBC14 BC18 BC15 BC23{ VBC9 BC15 BC12 BC16 vd v2} VBC12 vd v3} Fl[2]} BC24{ BC25{ BC5} VBC5 VBC19 v4} BC26{ m} vd} Fi[10]}


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

static void Test_S20436C1()
{
  extern Class_Descriptor cd_S20436C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,90)];
    init_test(&cd_S20436C1, buf);
    S20436C1 *dp, &lv = *(dp=new (buf) S20436C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,356), "sizeof(S20436C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20436C1)");
    /*is_ambiguous_... S20436C1::S20436C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*), ABISELECT(160,108), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C3 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*), ABISELECT(192,124), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*), ABISELECT(192,124), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(192,124), "S20436C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C19*), ABISELECT(192,124), "S20436C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(192,124), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C3 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C3*), ABISELECT(160,108), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C3 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C3*), ABISELECT(168,112), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C3 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C3*), ABISELECT(176,120), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C11*)(S20436C2*), ABISELECT(224,140), "S20436C1");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*)(S20436C2*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*)(S20436C18*), ABISELECT(224,140), "S20436C1");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C19*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C22*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(224,140), "S20436C1");
    check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C15*)(S20436C12*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C24::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C24*)(S20436C17*), ABISELECT(224,140), "S20436C1");
    check_base_class_offset(lv, (S20436C3*)(S20436C2*), ABISELECT(160,108), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C9*), ABISELECT(224,140), "S20436C1");
    check_base_class_offset(lv, (S9624C39*)(S20436C9*), 0, "S20436C1");
    check_base_class_offset(lv, (S20436C9*)(S20436C2*), ABISELECT(224,140), "S20436C1");
    check_base_class_offset(lv, (S20436C9*)(S20436C23*)(S20436C22*), ABISELECT(224,140), "S20436C1");
    /*is_ambiguous_... S20436C2::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C2*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*)(S20436C2*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*)(S20436C2*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C18*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C20::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C20*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C18::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C18*)(S20436C22*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C22*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C23*)(S20436C22*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C13*)(S20436C12*), ABISELECT(144,96), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20948C8*)(S20436C11*)(S20436C2*), ABISELECT(72,56), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*), ABISELECT(64,52), "S20436C1");
    check_base_class_offset(lv, (S20436C4*)(S20436C11*)(S20436C2*), ABISELECT(64,52), "S20436C1");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*)(S20436C2*), ABISELECT(64,52), "S20436C1");
    check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(64,52), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C13*)(S20436C12*), ABISELECT(64,52), "S20436C1");
    check_base_class_offset(lv, (S20436C11*)(S20436C2*), ABISELECT(64,52), "S20436C1");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*)(S20436C2*), ABISELECT(88,68), "S20436C1");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*)(S20436C2*), ABISELECT(89,69), "S20436C1");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*)(S20436C2*), ABISELECT(89,69), "S20436C1");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*)(S20436C2*), ABISELECT(80,64), "S20436C1");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*)(S20436C2*), ABISELECT(104,76), "S20436C1");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*)(S20436C2*), ABISELECT(104,76), "S20436C1");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*)(S20436C2*), ABISELECT(112,80), "S20436C1");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*)(S20436C2*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*)(S20436C2*), ABISELECT(144,96), "S20436C1");
    check_base_class_offset(lv, (S20436C12*)(S20436C2*), ABISELECT(80,64), "S20436C1");
    check_base_class_offset(lv, (S20436C2*), ABISELECT(64,52), "S20436C1");
    /*is_ambiguous_... S20436C17::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C17*), ABISELECT(8,4), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(240,148), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C4*)(S20436C3*)(S20436C18*), ABISELECT(240,148), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C3*)(S20436C18*), ABISELECT(248,152), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C3*)(S20436C18*), ABISELECT(256,160), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C3*)(S20436C18*), ABISELECT(240,148), "S20436C1");
    /*is_ambiguous_... S20436C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C19*), ABISELECT(280,176), "S20436C1");
    /*is_ambiguous_... S20436C19::S20436C8 */ AMB_check_base_class_offset(lv, (S20436C8*)(S20436C19*), ABISELECT(280,176), "S20436C1");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C19*), ABISELECT(288,180), "S20436C1");
    check_base_class_offset(lv, (S20436C15*)(S20436C19*), ABISELECT(288,180), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C19*)(S20436C18*), ABISELECT(280,176), "S20436C1");
    check_base_class_offset(lv, (S20436C19*)(S20436C18*)(S20436C22*), ABISELECT(280,176), "S20436C1");
    check_base_class_offset(lv, (S20436C19*)(S20436C24*)(S20436C17*), ABISELECT(280,176), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C18*), ABISELECT(264,164), "S20436C1");
    /*is_ambiguous_... S20436C17::S20436C18 */ AMB_check_base_class_offset(lv, (S20436C18*)(S20436C17*), ABISELECT(240,148), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C21*), ABISELECT(312,196), "S20436C1");
    check_base_class_offset(lv, (S20436C21*)(S20436C20*), ABISELECT(312,196), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*), ABISELECT(504,308), "S20436C1");
    /*is_ambiguous_... S20436C22::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C22*), ABISELECT(504,308), "S20436C1");
    check_base_class_offset(lv, (S9624C48*)(S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(336,208), "S20436C1");
    check_base_class_offset(lv, (S20436C4*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(336,208), "S20436C1");
    check_base_class_offset(lv, (S20948C8*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(344,212), "S20436C1");
    check_base_class_offset(lv, (S20436C8*)(S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(352,220), "S20436C1");
    check_base_class_offset(lv, (S20436C3*)(S20436C18*)(S20436C22*), ABISELECT(336,208), "S20436C1");
    /*is_ambiguous_... S20436C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20436C18*)(S20436C22*), ABISELECT(360,224), "S20436C1");
    check_base_class_offset(lv, (S20436C18*)(S20436C22*), ABISELECT(336,208), "S20436C1");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C22*), ABISELECT(376,236), "S20436C1");
    /*is_ambiguous_... S20436C22::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C22*), ABISELECT(376,236), "S20436C1");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(400,248), "S20436C1");
    /*is_ambiguous_... S20436C23::S20436C15 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C23*)(S20436C22*), ABISELECT(400,248), "S20436C1");
    /*is_ambiguous_... S20436C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(424,264), "S20436C1");
    check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(425,265), "S20436C1");
    check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(425,265), "S20436C1");
    check_base_class_offset(lv, (S20436C13*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(416,260), "S20436C1");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(440,272), "S20436C1");
    /*is_ambiguous_... S20436C12::S20436C14 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(440,272), "S20436C1");
    /*is_ambiguous_... S20436C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(448,276), "S20436C1");
    check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(480,292), "S20436C1");
    check_base_class_offset(lv, (S20436C15*)(S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(480,292), "S20436C1");
    check_base_class_offset(lv, (S20436C12*)(S20436C23*)(S20436C22*), ABISELECT(416,260), "S20436C1");
    /*is_ambiguous_... S20436C23::S20436C16 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C23*)(S20436C22*), ABISELECT(496,304), "S20436C1");
    check_base_class_offset(lv, (S20436C23*)(S20436C22*), ABISELECT(400,248), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20436C13*)(S20436C12*), ABISELECT(520,316), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(521,317), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C13*)(S20436C12*), ABISELECT(521,317), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C13*)(S20436C12*), ABISELECT(512,312), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20436C14*)(S20436C12*), ABISELECT(536,324), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C14*)(S20436C12*), ABISELECT(536,324), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20436C12*), ABISELECT(544,328), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C16*)(S20436C15*)(S20436C12*), ABISELECT(576,344), "S20436C1");
    /*is_ambiguous_... S20436C1::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C15*)(S20436C12*), ABISELECT(576,344), "S20436C1");
    /*is_ambiguous_... S20436C22::S20436C12 */ AMB_check_base_class_offset(lv, (S20436C12*)(S20436C22*), ABISELECT(512,312), "S20436C1");
    check_base_class_offset(lv, (S20436C22*)(S20436C20*), ABISELECT(336,208), "S20436C1");
    check_base_class_offset(lv, (S20436C20*)(S20436C17*), ABISELECT(312,196), "S20436C1");
    check_base_class_offset(lv, (S9624C48*)(S20436C25_nt*)(S20436C24*)(S20436C17*), 0, "S20436C1");
    check_base_class_offset(lv, (S20436C25_nt*)(S20436C24*)(S20436C17*), 0, "S20436C1");
    check_base_class_offset(lv, (S20436C24*)(S20436C17*), 0, "S20436C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20436C17*), 0, "S20436C1");
    check_base_class_offset(lv, (S20436C17*), 0, "S20436C1");
    check_field_offset(lv, s20436c1f0, ABISELECT(16,12), "S20436C1.s20436c1f0");
    test_class_info(&lv, &cd_S20436C1);
    dp->~S20436C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20436C1(Test_S20436C1, "S20436C1", ABISELECT(592,356));

#else // __cplusplus

extern void _ZN8S20436C1C1Ev();
extern void _ZN8S20436C1D1Ev();
Name_Map name_map_S20436C1[] = {
  NSPAIR(_ZN8S20436C1C1Ev),
  NSPAIR(_ZN8S20436C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C9;
extern VTBL_ENTRY _ZTI8S20436C9[];
extern  VTBL_ENTRY _ZTV8S20436C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C9[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20436C11;
extern VTBL_ENTRY _ZTI9S20436C11[];
extern  VTBL_ENTRY _ZTV9S20436C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C2;
extern VTBL_ENTRY _ZTI8S20436C2[];
extern  VTBL_ENTRY _ZTV8S20436C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C2[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C19;
extern VTBL_ENTRY _ZTI9S20436C19[];
extern  VTBL_ENTRY _ZTV9S20436C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C18;
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C21;
extern VTBL_ENTRY _ZTI9S20436C21[];
extern  VTBL_ENTRY _ZTV9S20436C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C4;
extern VTBL_ENTRY _ZTI8S20436C4[];
extern  VTBL_ENTRY _ZTV8S20436C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C8;
extern VTBL_ENTRY _ZTI8S20436C8[];
extern  VTBL_ENTRY _ZTV8S20436C8[];
extern Class_Descriptor cd_S20436C3;
extern VTBL_ENTRY _ZTI8S20436C3[];
extern  VTBL_ENTRY _ZTV8S20436C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20436C18;
extern VTBL_ENTRY _ZTI9S20436C18[];
extern  VTBL_ENTRY _ZTV9S20436C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C18[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C23;
extern VTBL_ENTRY _ZTI9S20436C23[];
extern  VTBL_ENTRY _ZTV9S20436C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20436C13;
extern VTBL_ENTRY _ZTI9S20436C13[];
extern  VTBL_ENTRY _ZTV9S20436C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20436C14;
extern VTBL_ENTRY _ZTI9S20436C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20436C16;
extern VTBL_ENTRY _ZTI9S20436C16[];
extern  VTBL_ENTRY _ZTV9S20436C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C16[];
extern Class_Descriptor cd_S20436C15;
extern VTBL_ENTRY _ZTI9S20436C15[];
extern  VTBL_ENTRY _ZTV9S20436C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C15[];
extern Class_Descriptor cd_S20436C12;
extern VTBL_ENTRY _ZTI9S20436C12[];
extern  VTBL_ENTRY _ZTV9S20436C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C12[];
extern Class_Descriptor cd_S20436C22;
extern VTBL_ENTRY _ZTI9S20436C22[];
extern  VTBL_ENTRY _ZTV9S20436C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C22[];
extern Class_Descriptor cd_S20436C20;
extern VTBL_ENTRY _ZTI9S20436C20[];
extern  VTBL_ENTRY _ZTV9S20436C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C20[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20436C25_nt;
extern VTBL_ENTRY _ZTI12S20436C25_nt[];
extern Class_Descriptor cd_S20436C24;
extern VTBL_ENTRY _ZTI9S20436C24[];
extern  VTBL_ENTRY _ZTV9S20436C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C24[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20436C17;
extern VTBL_ENTRY _ZTI9S20436C17[];
extern  VTBL_ENTRY _ZTV9S20436C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20436C17[];
static Base_Class bases_S20436C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(192,124), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20436C4,    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
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(168,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_S20436C8,    ABISELECT(176,120), //bcp->offset
    63, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20436C3,    ABISELECT(160,108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20436C8,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C9,    ABISELECT(224,140), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20436C8,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20436C11,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,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
    17, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(89,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
    18, //immediately_derived
  0, 0},
  {&cd_S20436C13,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20436C14,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,80), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(144,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(80,64), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20436C2,    ABISELECT(64,52), //bcp->offset
    22, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(248,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
    31, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(256,160), //bcp->offset
    89, //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
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20436C3,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(280,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, 0},
  {&cd_S20436C8,    ABISELECT(280,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
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(288,180), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20436C19,    ABISELECT(280,176), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(264,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20436C18,    ABISELECT(240,148), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    82, //immediately_derived
  0, 1},
  {&cd_S20436C8,    ABISELECT(312,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
    24, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20436C21,    ABISELECT(312,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    77, //immediately_derived
  0, 1},
  {&cd_S9624C39,    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
    42, //immediately_derived
  0, 0},
  {&cd_S20436C14,    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
    76, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(336,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20436C4,    ABISELECT(336,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(344,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20436C8,    ABISELECT(352,220), //bcp->offset
    146, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20436C3,    ABISELECT(336,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(360,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20436C18,    ABISELECT(336,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(376,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(376,236), //bcp->offset
    149, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(400,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(400,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(424,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(425,265), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(425,265), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20436C13,    ABISELECT(416,260), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(440,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
    59, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(440,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
    63, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(448,276), //bcp->offset
    179, //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
    40, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(480,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(480,292), //bcp->offset
    183, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(416,260), //bcp->offset
    170, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(496,304), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S20436C23,    ABISELECT(400,248), //bcp->offset
    157, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(520,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(521,317), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(521,317), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S20436C13,    ABISELECT(512,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(536,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20436C14,    ABISELECT(536,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(544,328), //bcp->offset
    207, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20436C16,    ABISELECT(576,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    185, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S20436C15,    ABISELECT(576,344), //bcp->offset
    211, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20436C12,    ABISELECT(512,312), //bcp->offset
    198, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    76, //immediately_derived
  0, 1},
  {&cd_S20436C22,    ABISELECT(336,208), //bcp->offset
    128, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    77, //immediately_derived
  0, 1},
  {&cd_S20436C20,    ABISELECT(312,196), //bcp->offset
    110, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    82, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S20436C25_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20436C24,    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
    48, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20436C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20436C1[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C242v4Ev();
extern void _ZN8S20436C1D1Ev();
extern void _ZN8S20436C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20436C1D1Ev,_ZThn52_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20436C1D0Ev,_ZThn52_N8S20436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20436C1D1Ev,_ZThn64_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20436C1D0Ev,_ZThn64_N8S20436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N8S20436C1D1Ev,_ZTvn28_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20436C1D0Ev,_ZTvn28_n16_N8S20436C1D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20436C1D1Ev,_ZTvn44_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20436C1D0Ev,_ZTvn44_n16_N8S20436C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20436C1D1Ev,_ZTv0_n20_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20436C1D1Ev,_ZThn108_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20436C1D0Ev,_ZTv0_n20_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20436C1D0Ev,_ZThn108_N8S20436C1D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20436C1D1Ev,_ZTv0_n12_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20436C1D1Ev,_ZThn124_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C1D0Ev,_ZTv0_n12_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20436C1D0Ev,_ZThn124_N8S20436C1D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20436C1D1Ev,_ZTv0_n20_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20436C1D1Ev,_ZThn140_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20436C1D0Ev,_ZTv0_n20_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20436C1D0Ev,_ZThn140_N8S20436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20436C1D1Ev,_ZTv0_n28_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20436C1D1Ev,_ZThn148_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20436C1D0Ev,_ZTv0_n28_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20436C1D0Ev,_ZThn148_N8S20436C1D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20436C1D1Ev,_ZTv0_n28_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S20436C1D1Ev,_ZThn176_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20436C1D0Ev,_ZTv0_n28_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S20436C1D0Ev,_ZThn176_N8S20436C1D0Ev)() __attribute__((weak));
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20436C1D1Ev,_ZTvn4_n28_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20436C1D0Ev,_ZTvn4_n28_N8S20436C1D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20436C1D1Ev,_ZTv0_n60_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn312_N8S20436C1D1Ev,_ZThn196_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20436C1D0Ev,_ZTv0_n60_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn312_N8S20436C1D0Ev,_ZThn196_N8S20436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20436C1D1Ev,_ZTv0_n48_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S20436C1D1Ev,_ZThn208_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20436C1D0Ev,_ZTv0_n48_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S20436C1D0Ev,_ZThn208_N8S20436C1D0Ev)() __attribute__((weak));
extern void _ZN9S20436C222v3Ev();
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20436C1D1Ev,_ZTvn28_n48_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20436C1D0Ev,_ZTvn28_n48_N8S20436C1D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20436C1D1Ev,_ZTvn40_n48_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20436C1D0Ev,_ZTvn40_n48_N8S20436C1D0Ev)();
extern void _ZN9S20436C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S20436C1D1Ev,_ZThn260_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S20436C1D0Ev,_ZThn260_N8S20436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N8S20436C1D1Ev,_ZTvn68_n48_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20436C1D0Ev,_ZTvn68_n48_N8S20436C1D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20436C1D1Ev,_ZTvn84_n48_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20436C1D0Ev,_ZTvn84_n48_N8S20436C1D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20436C1D1Ev,_ZTvn96_n48_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20436C1D0Ev,_ZTvn96_n48_N8S20436C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZThn512_N8S20436C1D1Ev,_ZThn312_N8S20436C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev)();
extern void ABISELECT(_ZThn512_N8S20436C1D0Ev,_ZThn312_N8S20436C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S20436C1D1Ev,_ZTvn16_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20436C1D0Ev,_ZTvn16_n16_N8S20436C1D0Ev)();
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20436C1D1Ev,_ZTvn32_n16_N8S20436C1D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20436C1D0Ev,_ZTvn32_n16_N8S20436C1D0Ev)();
static  VTBL_ENTRY vtc_S20436C1[] = {
  ABISELECT(160,108),
  ABISELECT(64,52),
  ABISELECT(512,312),
  ABISELECT(64,52),
  0,
  ABISELECT(224,140),
  ABISELECT(504,308),
  ABISELECT(336,208),
  ABISELECT(312,196),
  ABISELECT(312,196),
  ABISELECT(240,148),
  ABISELECT(144,96),
  ABISELECT(192,124),
  ABISELECT(280,176),
  ABISELECT(224,140),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C242v4Ev,
  (VTBL_ENTRY)&_ZN8S20436C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C1D0Ev,
  ABISELECT(80,44),
  ABISELECT(-64,-52),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  ABISELECT(-64,-52),
  ABISELECT(128,72),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-80,-64),
  ABISELECT(112,60),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20436C1D1Ev,_ZTvn28_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20436C1D0Ev,_ZTvn28_n16_N8S20436C1D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20436C1D1Ev,_ZTvn44_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20436C1D0Ev,_ZTvn44_n16_N8S20436C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-160,-108),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C1D1Ev,_ZTv0_n20_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C1D0Ev,_ZTv0_n20_N8S20436C1D0Ev),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C1D1Ev,_ZTv0_n12_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C1D0Ev,_ZTv0_n12_N8S20436C1D0Ev),
  ABISELECT(-224,-140),
  0,
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C1D1Ev,_ZTv0_n20_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C1D0Ev,_ZTv0_n20_N8S20436C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-240,-148),
  ABISELECT(40,28),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20436C1D1Ev,_ZTv0_n28_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20436C1D0Ev,_ZTv0_n28_N8S20436C1D0Ev),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-280,-176),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20436C1D1Ev,_ZTv0_n28_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20436C1D0Ev,_ZTv0_n28_N8S20436C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20436C1D1Ev,_ZTvn4_n28_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20436C1D0Ev,_ZTvn4_n28_N8S20436C1D0Ev),
  ABISELECT(-312,-196),
  ABISELECT(200,116),
  ABISELECT(-248,-144),
  ABISELECT(-312,-196),
  ABISELECT(-88,-56),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-120,-72),
  ABISELECT(192,112),
  ABISELECT(24,12),
  ABISELECT(-168,-100),
  0,
  0,
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20436C1D1Ev,_ZTv0_n60_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20436C1D0Ev,_ZTv0_n60_N8S20436C1D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-208),
  ABISELECT(176,104),
  ABISELECT(-272,-156),
  ABISELECT(-336,-208),
  ABISELECT(-112,-68),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-192,-112),
  ABISELECT(-112,-68),
  ABISELECT(-144,-84),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20436C1D1Ev,_ZTv0_n48_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20436C1D0Ev,_ZTv0_n48_N8S20436C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  ABISELECT(-152,-96),
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  ABISELECT(-376,-236),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20436C1D1Ev,_ZTvn28_n48_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20436C1D0Ev,_ZTvn28_n48_N8S20436C1D0Ev),
  ABISELECT(-208,-124),
  ABISELECT(-336,-196),
  ABISELECT(-400,-248),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20436C1D1Ev,_ZTvn40_n48_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20436C1D0Ev,_ZTvn40_n48_N8S20436C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
  ABISELECT(-192,-120),
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  ABISELECT(-416,-260),
  ABISELECT(-224,-136),
  ABISELECT(-416,-260),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev),
  ABISELECT(-448,-276),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20436C1D1Ev,_ZTvn68_n48_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20436C1D0Ev,_ZTvn68_n48_N8S20436C1D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  ABISELECT(-480,-292),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20436C1D1Ev,_ZTvn84_n48_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20436C1D0Ev,_ZTvn84_n48_N8S20436C1D0Ev),
  ABISELECT(-352,-208),
  ABISELECT(-352,-208),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20436C1D1Ev,_ZTvn96_n48_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20436C1D0Ev,_ZTvn96_n48_N8S20436C1D0Ev),
  ABISELECT(-288,-172),
  ABISELECT(-368,-216),
  ABISELECT(-448,-260),
  ABISELECT(-512,-312),
  ABISELECT(-320,-188),
  ABISELECT(-512,-312),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev),
  ABISELECT(-544,-328),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20436C1D1Ev,_ZTvn16_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20436C1D0Ev,_ZTvn16_n16_N8S20436C1D0Ev),
  ABISELECT(-352,-204),
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI8S20436C1[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20436C1D1Ev,_ZTvn32_n16_N8S20436C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20436C1D0Ev,_ZTvn32_n16_N8S20436C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20436C1[];
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C242v4Ev();
extern void _ZN9S20436C17D1Ev();
extern void _ZN9S20436C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C17__8S20436C1[] = {
  ABISELECT(512,312),
  ABISELECT(64,52),
  0,
  ABISELECT(224,140),
  ABISELECT(504,308),
  ABISELECT(336,208),
  ABISELECT(312,196),
  ABISELECT(312,196),
  ABISELECT(240,148),
  ABISELECT(144,96),
  ABISELECT(192,124),
  ABISELECT(280,176),
  ABISELECT(224,140),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20436C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C17D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C242v4Ev();
extern void _ZN9S20436C24D1Ev();
extern void _ZN9S20436C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C249S20436C17__8S20436C1[] = {
  ABISELECT(144,96),
  ABISELECT(192,124),
  ABISELECT(280,176),
  ABISELECT(224,140),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20436C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C24D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev)();
extern void ABISELECT(_ZThn280_N9S20436C24D1Ev,_ZThn176_N9S20436C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev)();
extern void ABISELECT(_ZThn280_N9S20436C24D0Ev,_ZThn176_N9S20436C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C249S20436C17__8S20436C1[] = {
  ABISELECT(-280,-176),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev)();
extern void ABISELECT(_ZThn192_N9S20436C24D1Ev,_ZThn124_N9S20436C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev)();
extern void ABISELECT(_ZThn192_N9S20436C24D0Ev,_ZThn124_N9S20436C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C249S20436C17__8S20436C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C24D1Ev,_ZTvn4_n28_N9S20436C24D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C24D0Ev,_ZTvn4_n28_N9S20436C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C249S20436C17__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C24D1Ev,_ZTvn4_n28_N9S20436C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C24D0Ev,_ZTvn4_n28_N9S20436C24D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C249S20436C17__8S20436C1[] = {
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C24[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn240_N9S20436C17D1Ev,_ZThn148_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn240_N9S20436C17D0Ev,_ZThn148_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C18__9S20436C17__8S20436C1[] = {
  ABISELECT(16,12),
  ABISELECT(-240,-148),
  ABISELECT(40,28),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C17__8S20436C1[] = {
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C17D1Ev,_ZTv0_n12_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S20436C17D1Ev,_ZThn124_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C17D0Ev,_ZTv0_n12_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S20436C17D0Ev,_ZThn124_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C17__8S20436C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C17D1Ev,_ZTv0_n12_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C17D0Ev,_ZTv0_n12_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C88S20436C39S20436C18__A1__9S20436C17__8S20436C1[] = {
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn280_N9S20436C17D1Ev,_ZThn176_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn280_N9S20436C17D0Ev,_ZThn176_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C17__8S20436C1[] = {
  ABISELECT(-280,-176),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C17D1Ev,_ZTvn4_n28_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C17D0Ev,_ZTvn4_n28_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C17__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C17D1Ev,_ZTvn4_n28_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C17D0Ev,_ZTvn4_n28_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S20436C17D1Ev,_ZTv0_n60_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn312_N9S20436C17D1Ev,_ZThn196_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S20436C17D0Ev,_ZTv0_n60_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn312_N9S20436C17D0Ev,_ZThn196_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C20__9S20436C17__8S20436C1[] = {
  ABISELECT(-312,-196),
  ABISELECT(200,116),
  ABISELECT(-248,-144),
  ABISELECT(-312,-196),
  ABISELECT(-88,-56),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-120,-72),
  ABISELECT(192,112),
  ABISELECT(24,12),
  ABISELECT(-168,-100),
  0,
  0,
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20436C17D1Ev,_ZTv0_n60_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20436C17D0Ev,_ZTv0_n60_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20436C17D1Ev,_ZTv0_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S20436C17D1Ev,_ZThn208_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20436C17D0Ev,_ZTv0_n48_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn336_N9S20436C17D0Ev,_ZThn208_N9S20436C17D0Ev)() __attribute__((weak));
extern void _ZN9S20436C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C22__9S20436C17__8S20436C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-208),
  ABISELECT(176,104),
  ABISELECT(-272,-156),
  ABISELECT(-336,-208),
  ABISELECT(-112,-68),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-192,-112),
  ABISELECT(-112,-68),
  ABISELECT(-144,-84),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C17D1Ev,_ZTv0_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C17D0Ev,_ZTv0_n48_N9S20436C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C88S20436C39S20436C189S20436C22__A4__9S20436C17__8S20436C1[] = {
  ABISELECT(-352,-220),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20436C17D1Ev,_ZTvn28_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20436C17D0Ev,_ZTvn28_n48_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C22__A1__9S20436C17__8S20436C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  ABISELECT(-376,-236),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C17D1Ev,_ZTvn28_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C17D0Ev,_ZTvn28_n48_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20436C17D1Ev,_ZTvn40_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20436C17D0Ev,_ZTvn40_n48_N9S20436C17D0Ev)();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C239S20436C22__9S20436C17__8S20436C1[] = {
  ABISELECT(-208,-124),
  ABISELECT(-336,-196),
  ABISELECT(-400,-248),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C17D1Ev,_ZTvn40_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C17D0Ev,_ZTvn40_n48_N9S20436C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C17D1Ev,_ZTv0_n20_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S20436C17D1Ev,_ZThn140_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20436C17D0Ev,_ZTv0_n20_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S20436C17D0Ev,_ZThn140_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C17__8S20436C1[] = {
  ABISELECT(-224,-140),
  0,
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C17D1Ev,_ZTv0_n20_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C17D0Ev,_ZTv0_n20_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn416_N9S20436C17D1Ev,_ZThn260_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn416_N9S20436C17D0Ev,_ZThn260_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C239S20436C22__9S20436C17__8S20436C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  ABISELECT(-416,-260),
  ABISELECT(-224,-136),
  ABISELECT(-416,-260),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C17D1Ev,_ZThn52_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S20436C17D0Ev,_ZThn52_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C4__A2__9S20436C17__8S20436C1[] = {
  ABISELECT(-64,-52),
  ABISELECT(128,72),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20436C17D1Ev,_ZTvn68_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20436C17D0Ev,_ZTvn68_n48_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C129S20436C239S20436C22__A1__9S20436C17__8S20436C1[] = {
  ABISELECT(-448,-276),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C17D1Ev,_ZTvn68_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C17D0Ev,_ZTvn68_n48_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20436C17D1Ev,_ZTvn84_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20436C17D0Ev,_ZTvn84_n48_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  ABISELECT(-480,-292),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C17D1Ev,_ZTvn84_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C17D0Ev,_ZTvn84_n48_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20436C17D1Ev,_ZTvn96_n48_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20436C17D0Ev,_ZTvn96_n48_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C17__8S20436C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-352,-208),
  ABISELECT(-496,-304),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C17D1Ev,_ZTvn96_n48_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C17D0Ev,_ZTvn96_n48_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZThn512_N9S20436C17D1Ev,_ZThn312_N9S20436C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev)();
extern void ABISELECT(_ZThn512_N9S20436C17D0Ev,_ZThn312_N9S20436C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C17__8S20436C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-368,-216),
  ABISELECT(-448,-260),
  ABISELECT(-512,-312),
  ABISELECT(-320,-188),
  ABISELECT(-512,-312),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20436C17D1Ev,_ZTvn16_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C17D0Ev,_ZTvn16_n16_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C17__8S20436C1[] = {
  ABISELECT(-544,-328),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C17D1Ev,_ZTvn16_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C17D0Ev,_ZTvn16_n16_N9S20436C17D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C17D1Ev,_ZTvn32_n16_N9S20436C17D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C17D0Ev,_ZTvn32_n16_N9S20436C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C17__8S20436C1[] = {
  ABISELECT(-352,-204),
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  ABISELECT(-576,-344),
  (VTBL_ENTRY)&(_ZTI9S20436C17[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C17D1Ev,_ZTvn32_n16_N9S20436C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C17D0Ev,_ZTvn32_n16_N9S20436C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev)();
extern void _ZN8S20436C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev)();
extern void _ZN8S20436C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C2__8S20436C1[] = {
  ABISELECT(80,44),
  ABISELECT(-64,-52),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C11D1Ev,_ZTv0_n16_N9S20436C11D1Ev)();
extern void _ZN9S20436C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C11D0Ev,_ZTv0_n16_N9S20436C11D0Ev)();
extern void _ZN9S20436C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C118S20436C2__8S20436C1[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C11D1Ev,_ZTv0_n16_N9S20436C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C11D0Ev,_ZTv0_n16_N9S20436C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S20436C11D1Ev,_ZThn72_N9S20436C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S20436C11D0Ev,_ZThn72_N9S20436C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C118S20436C2__8S20436C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20436C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C13D1Ev,_ZThn60_N9S20436C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C13D0Ev,_ZThn60_N9S20436C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C128S20436C2__8S20436C1[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C128S20436C2__8S20436C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20436C12D1Ev,_ZThn60_N9S20436C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20436C12D0Ev,_ZThn60_N9S20436C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C128S20436C2__8S20436C1[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20436C2D1Ev,_ZThn56_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20436C2D0Ev,_ZThn56_N8S20436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C3__8S20436C2__8S20436C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C2D1Ev,_ZTv0_n12_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20436C2D1Ev,_ZThn72_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C2D0Ev,_ZTv0_n12_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20436C2D0Ev,_ZThn72_N8S20436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C2__8S20436C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C2D1Ev,_ZTv0_n12_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C2D0Ev,_ZTv0_n12_N8S20436C2D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C88S20436C3__8S20436C2__8S20436C1[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20436C2D1Ev,_ZThn88_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S20436C2D0Ev,_ZThn88_N8S20436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20436C9__8S20436C2__8S20436C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-224,-140),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N8S20436C2D1Ev,_ZThn44_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20436C2D0Ev,_ZThn44_N8S20436C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__8S20436C2__8S20436C1[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20436C2D1Ev,_ZThn44_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20436C2D0Ev,_ZThn44_N8S20436C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20436C2D1Ev,_ZThn12_N8S20436C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20436C2D0Ev,_ZThn12_N8S20436C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__8S20436C2__8S20436C1[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20436C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev),
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C3__8S20436C1[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C3__8S20436C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn16_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn16_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C3__8S20436C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20436C3D1Ev,_ZThn16_N8S20436C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20436C3D0Ev,_ZThn16_N8S20436C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C3__8S20436C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN8S20436C9D1Ev();
extern void _ZN8S20436C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C9__8S20436C1[] = {
  ABISELECT(-224,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C9[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C9D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A1__8S20436C1[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20436C4D1Ev,_ZThn72_N8S20436C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20436C4D0Ev,_ZThn72_N8S20436C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C4__A1__8S20436C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C18__8S20436C1[] = {
  ABISELECT(40,28),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C39S20436C18__A1__8S20436C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C39S20436C18__A2__8S20436C1[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C18__A2__8S20436C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C39S20436C18__A1__8S20436C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C18__8S20436C1[] = {
  0,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C18__8S20436C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20436C18D1Ev,_ZThn28_N9S20436C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20436C18D0Ev,_ZThn28_N9S20436C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C18__8S20436C1[] = {
  ABISELECT(-40,-28),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C18__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C19D1Ev();
extern void _ZN9S20436C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C19__8S20436C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C19D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__A1__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C19__A1__8S20436C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C19__A1__8S20436C1[] = {
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C19__A1__8S20436C1[] = {
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C19__8S20436C1[] = {
  ABISELECT(88,52),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D1Ev,_ZTv0_n12_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C19D0Ev,_ZTv0_n12_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C19__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D1Ev,_ZThn4_N9S20436C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20436C19D0Ev,_ZThn4_N9S20436C19D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C19__8S20436C1[] = {
  0,
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI9S20436C19[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C20D1Ev();
extern void _ZN9S20436C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C20__8S20436C1[] = {
  ABISELECT(200,116),
  ABISELECT(-248,-144),
  ABISELECT(-312,-196),
  ABISELECT(-88,-56),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-120,-72),
  ABISELECT(192,112),
  ABISELECT(24,12),
  ABISELECT(-168,-100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C20D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C20__8S20436C1[] = {
  0,
  ABISELECT(168,100),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20436C20D1Ev,_ZThn12_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20436C20D0Ev,_ZThn12_N9S20436C20D0Ev)() __attribute__((weak));
extern void _ZN9S20436C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C22__9S20436C20__8S20436C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  ABISELECT(176,104),
  ABISELECT(-272,-156),
  ABISELECT(-336,-208),
  ABISELECT(-112,-68),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-192,-112),
  ABISELECT(-112,-68),
  ABISELECT(-144,-84),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C20__8S20436C1[] = {
  ABISELECT(120,72),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C20D1Ev,_ZTv0_n12_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C20D0Ev,_ZTv0_n12_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C88S20436C39S20436C189S20436C22__A2__9S20436C20__8S20436C1[] = {
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C20__8S20436C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C20D1Ev,_ZTv0_n28_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C20D0Ev,_ZTv0_n28_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C20D1Ev,_ZTvn4_n28_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C20D0Ev,_ZTvn4_n28_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C20__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C20D1Ev,_ZTvn4_n28_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C20D0Ev,_ZTvn4_n28_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20436C20D1Ev,_ZTvn28_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20436C20D0Ev,_ZTvn28_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C22__A1__9S20436C20__8S20436C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C20D1Ev,_ZTvn28_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20436C20D0Ev,_ZTvn28_n48_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20436C20D1Ev,_ZTvn40_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20436C20D0Ev,_ZTvn40_n48_N9S20436C20D0Ev)();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C239S20436C22__9S20436C20__8S20436C1[] = {
  ABISELECT(-208,-124),
  ABISELECT(-336,-196),
  ABISELECT(-400,-248),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C20D1Ev,_ZTvn40_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20436C20D0Ev,_ZTvn40_n48_N9S20436C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C20__8S20436C1[] = {
  ABISELECT(88,56),
  0,
  ABISELECT(-224,-140),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C20D1Ev,_ZTv0_n20_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C20D0Ev,_ZTv0_n20_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S20436C20D1Ev,_ZThn64_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S20436C20D0Ev,_ZThn64_N9S20436C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20__8S20436C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  ABISELECT(-104,-64),
  ABISELECT(-224,-136),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A1__9S20436C20__8S20436C1[] = {
  ABISELECT(248,144),
  ABISELECT(128,72),
  ABISELECT(248,144),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20436C20D1Ev,_ZTvn68_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20436C20D0Ev,_ZTvn68_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C129S20436C239S20436C22__A1__9S20436C20__8S20436C1[] = {
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C20D1Ev,_ZTvn68_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20436C20D0Ev,_ZTvn68_n48_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20436C20D1Ev,_ZTvn84_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20436C20D0Ev,_ZTvn84_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  ABISELECT(-168,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C20D1Ev,_ZTvn84_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20436C20D0Ev,_ZTvn84_n48_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20436C20D1Ev,_ZTvn96_n48_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20436C20D0Ev,_ZTvn96_n48_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C20__8S20436C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-352,-208),
  ABISELECT(-184,-108),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C20D1Ev,_ZTvn96_n48_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20436C20D0Ev,_ZTvn96_n48_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZThn200_N9S20436C20D1Ev,_ZThn116_N9S20436C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev)();
extern void ABISELECT(_ZThn200_N9S20436C20D0Ev,_ZThn116_N9S20436C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C20__8S20436C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-368,-216),
  ABISELECT(-448,-260),
  ABISELECT(-200,-116),
  ABISELECT(-320,-188),
  ABISELECT(-200,-116),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20436C20D1Ev,_ZTvn16_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C20D0Ev,_ZTvn16_n16_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C20__8S20436C1[] = {
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C20D1Ev,_ZTvn16_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C20D0Ev,_ZTvn16_n16_N9S20436C20D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C20D1Ev,_ZTvn32_n16_N9S20436C20D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C20D0Ev,_ZTvn32_n16_N9S20436C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C20__8S20436C1[] = {
  ABISELECT(-352,-204),
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S20436C20[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C20D1Ev,_ZTvn32_n16_N9S20436C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C20D0Ev,_ZTvn32_n16_N9S20436C20D0Ev),
};
extern void _ZN9S20436C22D1Ev();
extern void _ZN9S20436C22D0Ev();
extern void _ZN9S20436C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C22__8S20436C1[] = {
  ABISELECT(176,104),
  ABISELECT(-272,-156),
  ABISELECT(-336,-208),
  ABISELECT(-112,-68),
  ABISELECT(168,100),
  ABISELECT(-56,-32),
  ABISELECT(-192,-112),
  ABISELECT(-112,-68),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN9S20436C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C222v3Ev,
};
extern void _ZN9S20436C18D1Ev();
extern void _ZN9S20436C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C189S20436C22__A1__8S20436C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(-192,-112),
  ABISELECT(-112,-68),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN9S20436C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C18D0Ev,
};
extern void _ZN8S20436C3D1Ev();
extern void _ZN8S20436C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C39S20436C189S20436C22__A2__8S20436C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&_ZN8S20436C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C3D0Ev,
};
extern void _ZN8S20436C4D1Ev();
extern void _ZN8S20436C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C48S20436C39S20436C189S20436C22__A3__8S20436C1[] = {
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&_ZN8S20436C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20436C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C189S20436C22__A3__8S20436C1[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S20436C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20436C39S20436C189S20436C22__A2__8S20436C1[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI8S20436C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C189S20436C22__A1__8S20436C1[] = {
  0,
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C189S20436C22__A1__8S20436C1[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D1Ev,_ZTv0_n12_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C18D0Ev,_ZTv0_n12_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C189S20436C22__A1__8S20436C1[] = {
  ABISELECT(56,32),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__A1__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20436C18[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D1Ev,_ZTvn4_n28_N9S20436C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C18D0Ev,_ZTvn4_n28_N9S20436C18D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C22__A2__8S20436C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C22__A2__8S20436C1[] = {
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C22__A2__8S20436C1[] = {
  0,
  ABISELECT(232,140),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C22__A2__8S20436C1[] = {
  0,
  ABISELECT(232,140),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C23D1Ev();
extern void _ZN9S20436C23D0Ev();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(-208,-124),
  ABISELECT(-336,-196),
  ABISELECT(-400,-248),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C239S20436C22__A3__8S20436C1[] = {
  ABISELECT(-176,-108),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C239S20436C22__A3__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C239S20436C22__A3__8S20436C1[] = {
  0,
  ABISELECT(256,152),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C239S20436C22__A3__8S20436C1[] = {
  0,
  ABISELECT(256,152),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  0,
  ABISELECT(-224,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  0,
  ABISELECT(-224,-136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(352,208),
  ABISELECT(128,72),
  ABISELECT(352,208),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  0,
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[] = {
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[] = {
  0,
  ABISELECT(336,196),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[] = {
  0,
  ABISELECT(336,196),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(352,208),
  ABISELECT(128,72),
  ABISELECT(352,208),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(224,136),
  ABISELECT(224,136),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  0,
  ABISELECT(272,164),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C129S20436C239S20436C22__A1__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C239S20436C22__A5__8S20436C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-352,-208),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C239S20436C22__A5__8S20436C1[] = {
  0,
  ABISELECT(352,208),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(176,108),
  0,
  ABISELECT(-224,-140),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D1Ev,_ZTv0_n20_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C23D0Ev,_ZTv0_n20_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__A1__9S20436C239S20436C22__8S20436C1[] = {
  0,
  ABISELECT(256,152),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  ABISELECT(-16,-12),
  ABISELECT(-224,-136),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(336,196),
  ABISELECT(128,72),
  ABISELECT(336,196),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(208,124),
  ABISELECT(208,124),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D1Ev,_ZTv0_n12_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C23D0Ev,_ZTv0_n12_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A1__9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D1Ev,_ZThn44_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20436C23D0Ev,_ZThn44_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C16__A2__9S20436C239S20436C22__8S20436C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-352,-208),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20436C23[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D1Ev,_ZThn56_N9S20436C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20436C23D0Ev,_ZThn56_N9S20436C23D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C22__8S20436C1[] = {
  0,
  ABISELECT(192,112),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C22__8S20436C1[] = {
  ABISELECT(144,84),
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D1Ev,_ZTv0_n12_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C22D0Ev,_ZTv0_n12_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C19__9S20436C22__8S20436C1[] = {
  ABISELECT(56,32),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D1Ev,_ZTv0_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20436C22D0Ev,_ZTv0_n28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C19__9S20436C22__8S20436C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D1Ev,_ZTvn4_n28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20436C22D0Ev,_ZTvn4_n28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__A1__9S20436C22__8S20436C1[] = {
  ABISELECT(-152,-96),
  ABISELECT(-232,-140),
  ABISELECT(-232,-140),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D1Ev,_ZThn28_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20436C22D0Ev,_ZThn28_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev)();
extern void _ZN9S20436C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C23__9S20436C22__8S20436C1[] = {
  ABISELECT(-208,-124),
  ABISELECT(-336,-196),
  ABISELECT(-400,-248),
  ABISELECT(-176,-108),
  ABISELECT(-176,-108),
  ABISELECT(-256,-152),
  ABISELECT(-256,-152),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D1Ev,_ZThn40_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C22D0Ev,_ZThn40_N9S20436C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20436C232v2Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C9__9S20436C22__8S20436C1[] = {
  ABISELECT(112,68),
  0,
  ABISELECT(-224,-140),
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D1Ev,_ZTv0_n20_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20436C22D0Ev,_ZTv0_n20_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C129S20436C23__9S20436C22__8S20436C1[] = {
  ABISELECT(-192,-120),
  ABISELECT(-272,-164),
  ABISELECT(-352,-208),
  ABISELECT(-80,-52),
  ABISELECT(-224,-136),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__A1__9S20436C22__8S20436C1[] = {
  ABISELECT(272,156),
  ABISELECT(128,72),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22__8S20436C1[] = {
  ABISELECT(-256,-152),
  ABISELECT(-336,-196),
  ABISELECT(-336,-196),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D1Ev,_ZThn84_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20436C22D0Ev,_ZThn84_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C23__A4__9S20436C22__8S20436C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-352,-208),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D1Ev,_ZThn96_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20436C22D0Ev,_ZThn96_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A1__9S20436C22__8S20436C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-368,-216),
  ABISELECT(-448,-260),
  ABISELECT(-176,-104),
  ABISELECT(-320,-188),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C22__8S20436C1[] = {
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D1Ev,_ZTvn16_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20436C22D0Ev,_ZTvn16_n16_N9S20436C22D0Ev),
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A4__9S20436C22__8S20436C1[] = {
  ABISELECT(-352,-204),
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20436C22[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D1Ev,_ZTvn32_n16_N9S20436C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20436C22D0Ev,_ZTvn32_n16_N9S20436C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void _ZN9S20436C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
extern void _ZN9S20436C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C12__A2__8S20436C1[] = {
  ABISELECT(-288,-172),
  ABISELECT(-368,-216),
  ABISELECT(-448,-260),
  0,
  ABISELECT(-320,-188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void _ZN9S20436C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
extern void _ZN9S20436C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20436C139S20436C12__A2__8S20436C1[] = {
  ABISELECT(-368,-216),
  ABISELECT(-448,-260),
  0,
  ABISELECT(-320,-188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C139S20436C12__A2__8S20436C1[] = {
  ABISELECT(448,260),
  ABISELECT(128,72),
  ABISELECT(448,260),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A2__8S20436C1[] = {
  ABISELECT(320,188),
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C139S20436C12__A2__8S20436C1[] = {
  0,
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI9S20436C13[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C15D1Ev();
extern void _ZN9S20436C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C159S20436C12__A5__8S20436C1[] = {
  ABISELECT(-352,-204),
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C15D0Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void _ZN9S20436C16D1Ev();
extern void _ZN9S20436C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20436C169S20436C159S20436C12__A6__8S20436C1[] = {
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  0,
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20436C16D0Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A6__8S20436C1[] = {
  0,
  ABISELECT(432,248),
  (VTBL_ENTRY)&(_ZTI9S20436C16[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C159S20436C12__A5__8S20436C1[] = {
  0,
  ABISELECT(432,248),
  (VTBL_ENTRY)&(_ZTI9S20436C15[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20436C4__9S20436C12__A2__8S20436C1[] = {
  ABISELECT(448,260),
  ABISELECT(128,72),
  ABISELECT(448,260),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20436C12__A2__8S20436C1[] = {
  ABISELECT(320,188),
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev),
};
extern void _ZN8S20436C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20436C8__9S20436C12__A2__8S20436C1[] = {
  0,
  ABISELECT(368,216),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
};
extern void _ZN8S20436C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20436C15__9S20436C12__A2__8S20436C1[] = {
  ABISELECT(-352,-204),
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20436C12[0]),
  (VTBL_ENTRY)&_ZN8S20436C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D1Ev,_ZThn32_N9S20436C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20436C12D0Ev,_ZThn32_N9S20436C12D0Ev),
};
static  VTT_ENTRY vtt_S20436C1[] = {
  {&(_ZTV8S20436C1[18]),  18,219},
  {&(_tg__ZTV9S20436C17__8S20436C1[16]),  16,20},
  {&(_tg__ZTV9S20436C249S20436C17__8S20436C1[7]),  7,11},
  {&(_tg__ZTV9S20436C19__9S20436C249S20436C17__8S20436C1[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__9S20436C249S20436C17__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C249S20436C17__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C249S20436C17__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C18__9S20436C17__8S20436C1[8]),  8,10},
  {&(_tg__ZTV8S20436C8__9S20436C17__8S20436C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20436C17__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C88S20436C39S20436C18__A1__9S20436C17__8S20436C1[2]),  2,3},
  {&(_tg__ZTV9S20436C19__9S20436C17__8S20436C1[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C17__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C20__9S20436C17__8S20436C1[15]),  15,18},
  {&(_tg__ZTV9S20436C20__9S20436C17__8S20436C1[15]),  15,18},
  {&(_tg__ZTV9S20436C22__9S20436C17__8S20436C1[15]),  15,18},
  {&(_tg__ZTV8S20436C88S20436C39S20436C189S20436C22__A4__9S20436C17__8S20436C1[2]),  2,3},
  {&(_tg__ZTV9S20436C159S20436C22__A1__9S20436C17__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C239S20436C22__9S20436C17__8S20436C1[9]),  9,13},
  {&(_tg__ZTV8S20436C9__9S20436C17__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C17__8S20436C1[7]),  7,9},
  {&(_tg__ZTV8S20436C4__A2__9S20436C17__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20436C129S20436C239S20436C22__A1__9S20436C17__8S20436C1[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C17__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C17__8S20436C1[4]),  4,7},
  {&(_tg__ZTV9S20436C12__A1__9S20436C17__8S20436C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C17__8S20436C1[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C17__8S20436C1[5]),  5,8},
  {&(_ZTV8S20436C1[32]),  32,219},
  {&(_ZTV8S20436C1[61]),  61,219},
  {&(_ZTV8S20436C1[69]),  69,219},
  {&(_ZTV8S20436C1[65]),  65,219},
  {&(_ZTV8S20436C1[76]),  76,219},
  {&(_ZTV8S20436C1[52]),  52,219},
  {&(_ZTV8S20436C1[32]),  32,219},
  {&(_ZTV8S20436C1[41]),  41,219},
  {&(_ZTV8S20436C1[45]),  45,219},
  {&(_ZTV8S20436C1[52]),  52,219},
  {&(_ZTV8S20436C1[87]),  87,219},
  {&(_ZTV8S20436C1[91]),  91,219},
  {&(_ZTV8S20436C1[99]),  99,219},
  {&(_ZTV8S20436C1[107]),  107,219},
  {&(_ZTV8S20436C1[125]),  125,219},
  {&(_ZTV8S20436C1[125]),  125,219},
  {&(_ZTV8S20436C1[143]),  143,219},
  {&(_ZTV8S20436C1[148]),  148,219},
  {&(_ZTV8S20436C1[154]),  154,219},
  {&(_ZTV8S20436C1[166]),  166,219},
  {&(_ZTV8S20436C1[177]),  177,219},
  {&(_ZTV8S20436C1[181]),  181,219},
  {&(_ZTV8S20436C1[188]),  188,219},
  {&(_ZTV8S20436C1[195]),  195,219},
  {&(_ZTV8S20436C1[205]),  205,219},
  {&(_ZTV8S20436C1[209]),  209,219},
  {&(_ZTV8S20436C1[216]),  216,219},
  {&(_tg__ZTV8S20436C2__8S20436C1[10]),  10,12},
  {&(_tg__ZTV9S20436C118S20436C2__8S20436C1[6]),  6,8},
  {&(_tg__ZTV9S20436C118S20436C2__8S20436C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20436C118S20436C2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C128S20436C2__8S20436C1[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C128S20436C2__8S20436C1[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C128S20436C2__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C128S20436C2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C128S20436C2__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C128S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C128S20436C2__8S20436C1[4]),  4,7},
  {&(_tg__ZTV9S20436C169S20436C159S20436C128S20436C2__8S20436C1[4]),  4,7},
  {&(_tg__ZTV9S20436C159S20436C128S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C4__9S20436C128S20436C2__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C128S20436C2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C128S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C15__9S20436C128S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C3__8S20436C2__8S20436C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20436C2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C88S20436C3__8S20436C2__8S20436C1[2]),  2,3},
  {&(_tg__ZTV8S20436C9__8S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C12__8S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C2__8S20436C1[10]),  10,12},
  {&(_tg__ZTV9S20436C12__8S20436C2__8S20436C1[7]),  7,9},
  {&(_tg__ZTV9S20436C159S20436C12__8S20436C2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C3__8S20436C1[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C3__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C3__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C3__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C9__8S20436C1[3]),  3,6},
  {&(_tg__ZTV8S20436C4__A1__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C4__A1__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C18__8S20436C1[6]),  6,8},
  {&(_tg__ZTV8S20436C39S20436C18__A1__8S20436C1[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C39S20436C18__A2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C18__A2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C39S20436C18__A1__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C18__8S20436C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20436C18__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C18__8S20436C1[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C18__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C19__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C19__A1__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C19__A1__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C19__A1__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C19__A1__8S20436C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20436C19__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C15__9S20436C19__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C19__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C20__8S20436C1[14]),  14,17},
  {&(_tg__ZTV9S20436C20__8S20436C1[14]),  14,17},
  {&(_tg__ZTV8S20436C8__A1__9S20436C20__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C22__9S20436C20__8S20436C1[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20436C20__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C88S20436C39S20436C189S20436C22__A2__9S20436C20__8S20436C1[2]),  2,3},
  {&(_tg__ZTV9S20436C19__9S20436C20__8S20436C1[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C20__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C22__A1__9S20436C20__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C239S20436C22__9S20436C20__8S20436C1[9]),  9,13},
  {&(_tg__ZTV8S20436C9__9S20436C20__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__9S20436C20__8S20436C1[7]),  7,9},
  {&(_tg__ZTV8S20436C4__A1__9S20436C20__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20436C129S20436C239S20436C22__A1__9S20436C20__8S20436C1[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A3__9S20436C20__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C239S20436C22__A4__9S20436C20__8S20436C1[4]),  4,7},
  {&(_tg__ZTV9S20436C12__A1__9S20436C20__8S20436C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C20__8S20436C1[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C20__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C22__8S20436C1[11]),  11,14},
  {&(_tg__ZTV9S20436C189S20436C22__A1__8S20436C1[6]),  6,8},
  {&(_tg__ZTV8S20436C39S20436C189S20436C22__A2__8S20436C1[4]),  4,6},
  {&(_tg__ZTV8S20436C48S20436C39S20436C189S20436C22__A3__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C48S20436C39S20436C189S20436C22__A3__8S20436C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20436C39S20436C189S20436C22__A2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C189S20436C22__A1__8S20436C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20436C189S20436C22__A1__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C189S20436C22__A1__8S20436C1[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C189S20436C22__A1__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C159S20436C22__A2__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C22__A2__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C22__A2__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C22__A2__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C239S20436C22__8S20436C1[9]),  9,13},
  {&(_tg__ZTV9S20436C159S20436C239S20436C22__A3__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C239S20436C22__A3__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C239S20436C22__A3__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C239S20436C22__A3__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C129S20436C239S20436C22__A1__8S20436C1[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C129S20436C239S20436C22__A1__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C129S20436C239S20436C22__A4__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C4__9S20436C129S20436C239S20436C22__A1__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C129S20436C239S20436C22__A1__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C129S20436C239S20436C22__A1__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C129S20436C239S20436C22__A1__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C239S20436C22__A5__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C239S20436C22__A5__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C9__9S20436C239S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV8S20436C8__A1__9S20436C239S20436C22__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C12__9S20436C239S20436C22__8S20436C1[7]),  7,9},
  {&(_tg__ZTV8S20436C4__9S20436C239S20436C22__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C239S20436C22__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C159S20436C12__A1__9S20436C239S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C16__A2__9S20436C239S20436C22__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C22__8S20436C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20436C22__8S20436C1[3]),  3,5},
  {&(_tg__ZTV9S20436C19__9S20436C22__8S20436C1[7]),  7,10},
  {&(_tg__ZTV9S20436C159S20436C19__9S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C15__A1__9S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C23__9S20436C22__8S20436C1[9]),  9,13},
  {&(_tg__ZTV8S20436C9__9S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C129S20436C23__9S20436C22__8S20436C1[7]),  7,9},
  {&(_tg__ZTV8S20436C4__A1__9S20436C22__8S20436C1[4]),  4,6},
  {&(_tg__ZTV9S20436C159S20436C129S20436C23__A3__9S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C23__A4__9S20436C22__8S20436C1[4]),  4,7},
  {&(_tg__ZTV9S20436C12__A1__9S20436C22__8S20436C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20436C12__A2__9S20436C22__8S20436C1[2]),  2,4},
  {&(_tg__ZTV9S20436C159S20436C12__A4__9S20436C22__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C12__A2__8S20436C1[7]),  7,9},
  {&(_tg__ZTV9S20436C139S20436C12__A2__8S20436C1[6]),  6,8},
  {&(_tg__ZTV8S20436C4__9S20436C139S20436C12__A2__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C139S20436C12__A2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C139S20436C12__A2__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C159S20436C12__A5__8S20436C1[5]),  5,8},
  {&(_tg__ZTV9S20436C169S20436C159S20436C12__A6__8S20436C1[4]),  4,7},
  {&(_tg__ZTV8S20436C8__9S20436C169S20436C159S20436C12__A6__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C8__9S20436C159S20436C12__A5__8S20436C1[3]),  3,4},
  {&(_tg__ZTV8S20436C4__9S20436C12__A2__8S20436C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20436C12__A2__8S20436C1[3]),  3,5},
  {&(_tg__ZTV8S20436C8__9S20436C12__A2__8S20436C1[3]),  3,4},
  {&(_tg__ZTV9S20436C15__9S20436C12__A2__8S20436C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20436C1[];
extern  VTBL_ENTRY _ZTV8S20436C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20436C1[];
static VTBL_ENTRY alt_thunk_names28[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D0Ev,_ZTv0_n16_N9S20436C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D0Ev,_ZThn104_N9S20436C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D0Ev,_ZThn52_N9S20436C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C22D1Ev,_ZTv0_n16_N9S20436C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20436C22D1Ev,_ZThn104_N9S20436C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20436C22D1Ev,_ZThn52_N9S20436C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D0Ev,_ZTv0_n16_N9S20436C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D0Ev,_ZThn12_N9S20436C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C23D1Ev,_ZTv0_n16_N9S20436C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20436C23D1Ev,_ZThn12_N9S20436C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C20D0Ev,_ZTv0_n16_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20436C20D0Ev,_ZThn116_N9S20436C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C20D0Ev,_ZThn64_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C20D1Ev,_ZTv0_n16_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20436C20D1Ev,_ZThn116_N9S20436C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20436C20D1Ev,_ZThn64_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C20D0Ev,_ZTv0_n48_N9S20436C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20436C20D0Ev,_ZThn12_N9S20436C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C20D1Ev,_ZTv0_n48_N9S20436C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20436C20D1Ev,_ZThn12_N9S20436C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D0Ev,_ZTv0_n28_N9S20436C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20436C18D0Ev,_ZThn28_N9S20436C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C18D1Ev,_ZTv0_n28_N9S20436C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20436C18D1Ev,_ZThn28_N9S20436C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D0Ev,_ZTv0_n12_N8S20436C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C3D0Ev,_ZThn16_N8S20436C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C3D1Ev,_ZTv0_n12_N8S20436C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C3D1Ev,_ZThn16_N8S20436C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D0Ev,_ZTv0_n12_N8S20436C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C4D0Ev,_ZThn72_N8S20436C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D0Ev,_ZThn16_N8S20436C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C4D1Ev,_ZTv0_n12_N8S20436C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C4D1Ev,_ZThn72_N8S20436C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20436C4D1Ev,_ZThn16_N8S20436C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C2D0Ev,_ZTv0_n12_N8S20436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C2D0Ev,_ZThn72_N8S20436C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C2D1Ev,_ZTv0_n12_N8S20436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20436C2D1Ev,_ZThn72_N8S20436C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20436C2D0Ev,_ZTv0_n20_N8S20436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20436C2D0Ev,_ZThn88_N8S20436C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C2D0Ev,_ZThn56_N8S20436C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20436C2D1Ev,_ZTv0_n20_N8S20436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20436C2D1Ev,_ZThn88_N8S20436C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20436C2D1Ev,_ZThn56_N8S20436C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D0Ev,_ZTv0_n12_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C12D0Ev,_ZThn60_N9S20436C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C12D1Ev,_ZTv0_n12_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C12D1Ev,_ZThn60_N9S20436C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D0Ev,_ZTv0_n12_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C13D0Ev,_ZThn60_N9S20436C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C13D1Ev,_ZTv0_n12_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20436C13D1Ev,_ZThn60_N9S20436C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D0Ev,_ZTv0_n16_N9S20436C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  (VTBL_ENTRY)_ZN9S20436C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C13D1Ev,_ZTv0_n16_N9S20436C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  (VTBL_ENTRY)_ZN9S20436C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D0Ev,_ZTv0_n16_N9S20436C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  (VTBL_ENTRY)_ZN9S20436C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C12D1Ev,_ZTv0_n16_N9S20436C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  (VTBL_ENTRY)_ZN9S20436C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C11D0Ev,_ZTv0_n12_N9S20436C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20436C11D0Ev,_ZThn72_N9S20436C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C11D1Ev,_ZTv0_n12_N9S20436C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20436C11D1Ev,_ZThn72_N9S20436C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C11D0Ev,_ZTv0_n16_N9S20436C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20436C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C11D1Ev,_ZTv0_n16_N9S20436C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20436C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20436C2D0Ev,_ZTv0_n16_N8S20436C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C2D0Ev,_ZThn12_N8S20436C2D0Ev),
  (VTBL_ENTRY)_ZN8S20436C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20436C2D1Ev,_ZTv0_n16_N8S20436C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20436C2D1Ev,_ZThn12_N8S20436C2D1Ev),
  (VTBL_ENTRY)_ZN8S20436C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C17D0Ev,_ZTv0_n16_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20436C17D0Ev,_ZThn312_N9S20436C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20436C17D0Ev,_ZThn52_N9S20436C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S20436C17D0Ev,_ZThn260_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20436C17D1Ev,_ZTv0_n16_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20436C17D1Ev,_ZThn312_N9S20436C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20436C17D1Ev,_ZThn52_N9S20436C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S20436C17D1Ev,_ZThn260_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C17D0Ev,_ZTv0_n20_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20436C17D0Ev,_ZThn140_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20436C17D1Ev,_ZTv0_n20_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20436C17D1Ev,_ZThn140_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C17D0Ev,_ZTv0_n48_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20436C17D0Ev,_ZThn208_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20436C17D1Ev,_ZTv0_n48_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20436C17D1Ev,_ZThn208_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20436C17D0Ev,_ZTv0_n60_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20436C17D0Ev,_ZThn196_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20436C17D1Ev,_ZTv0_n60_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20436C17D1Ev,_ZThn196_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C17D0Ev,_ZTv0_n12_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20436C17D0Ev,_ZThn124_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C17D1Ev,_ZTv0_n12_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20436C17D1Ev,_ZThn124_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C17D0Ev,_ZTv0_n28_N9S20436C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20436C17D0Ev,_ZThn176_N9S20436C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C17D0Ev,_ZThn148_N9S20436C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C17D1Ev,_ZTv0_n28_N9S20436C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20436C17D1Ev,_ZThn176_N9S20436C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20436C17D1Ev,_ZThn148_N9S20436C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C24D0Ev,_ZTv0_n12_N9S20436C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20436C24D0Ev,_ZThn124_N9S20436C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20436C24D1Ev,_ZTv0_n12_N9S20436C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20436C24D1Ev,_ZThn124_N9S20436C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C24D0Ev,_ZTv0_n28_N9S20436C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20436C24D0Ev,_ZThn176_N9S20436C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20436C24D1Ev,_ZTv0_n28_N9S20436C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20436C24D1Ev,_ZThn176_N9S20436C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20436C1D0Ev,_ZTv0_n48_N8S20436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20436C1D0Ev,_ZThn208_N8S20436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20436C1D1Ev,_ZTv0_n48_N8S20436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20436C1D1Ev,_ZThn208_N8S20436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20436C1D0Ev,_ZTv0_n60_N8S20436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20436C1D0Ev,_ZThn196_N8S20436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20436C1D1Ev,_ZTv0_n60_N8S20436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20436C1D1Ev,_ZThn196_N8S20436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20436C1D0Ev,_ZTv0_n28_N8S20436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S20436C1D0Ev,_ZThn176_N8S20436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20436C1D0Ev,_ZThn148_N8S20436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20436C1D1Ev,_ZTv0_n28_N8S20436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S20436C1D1Ev,_ZThn176_N8S20436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20436C1D1Ev,_ZThn148_N8S20436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C1D0Ev,_ZTv0_n12_N8S20436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20436C1D0Ev,_ZThn124_N8S20436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20436C1D1Ev,_ZTv0_n12_N8S20436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20436C1D1Ev,_ZThn124_N8S20436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20436C1D0Ev,_ZTv0_n20_N8S20436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20436C1D0Ev,_ZThn140_N8S20436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20436C1D0Ev,_ZThn108_N8S20436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20436C1D1Ev,_ZTv0_n20_N8S20436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20436C1D1Ev,_ZThn140_N8S20436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20436C1D1Ev,_ZThn108_N8S20436C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20436C1D0Ev,_ZTv0_n16_N8S20436C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S20436C1D0Ev,_ZThn312_N8S20436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20436C1D0Ev,_ZThn260_N8S20436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20436C1D0Ev,_ZThn64_N8S20436C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20436C1D0Ev,_ZThn52_N8S20436C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20436C1D1Ev,_ZTv0_n16_N8S20436C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S20436C1D1Ev,_ZThn312_N8S20436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20436C1D1Ev,_ZThn260_N8S20436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20436C1D1Ev,_ZThn64_N8S20436C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20436C1D1Ev,_ZThn52_N8S20436C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20436C1 = {  "S20436C1", // class name
  bases_S20436C1, 83,
  &(vtc_S20436C1[0]), // expected_vtbl_contents
  &(vtt_S20436C1[0]), // expected_vtt_contents
  ABISELECT(592,356), // object size
  NSPAIRA(_ZTI8S20436C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20436C1),219, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20436C1),191, //virtual table table var
  49, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names28,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C4  : S9624C48 , virtual S20948C7_nt {
  virtual  ~S20435C4(); // _ZN8S20435C4D2Ev
  S20435C4(); // tgen
};
//SIG(-1 S20435C4) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S20435C4()
{
  extern Class_Descriptor cd_S20435C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20435C4, buf);
    S20435C4 *dp, &lv = *(dp=new (buf) S20435C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20435C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C4)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20435C4");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S20435C4");
    test_class_info(&lv, &cd_S20435C4);
    dp->~S20435C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C4(Test_S20435C4, "S20435C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20435C4C1Ev();
extern void _ZN8S20435C4D2Ev();
Name_Map name_map_S20435C4[] = {
  NSPAIR(_ZN8S20435C4C1Ev),
  NSPAIR(_ZN8S20435C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S20435C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20435C4[];
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20435C4D1Ev,_ZThn4_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20435C4D0Ev,_ZThn4_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C4[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20435C4[];
static  VTT_ENTRY vtt_S20435C4[] = {
  {&(_ZTV8S20435C4[3]),  3,10},
  {&(_ZTV8S20435C4[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
static VTBL_ENTRY alt_thunk_names29[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C4D0Ev,_ZThn4_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C4D1Ev,_ZThn4_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C4 = {  "S20435C4", // class name
  bases_S20435C4, 2,
  &(vtc_S20435C4[0]), // expected_vtbl_contents
  &(vtt_S20435C4[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20435C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20435C4),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20435C4),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names29,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C8  {
  virtual void  v1(); // _ZN8S20435C82v1Ev
  ~S20435C8(); // tgen
  S20435C8(); // tgen
};
//SIG(-1 S20435C8) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20435C8C1Ev();
extern void _ZN8S20435C8D1Ev();
Name_Map name_map_S20435C8[] = {
  NSPAIR(_ZN8S20435C8C1Ev),
  NSPAIR(_ZN8S20435C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20435C8[];
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY vtc_S20435C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C8[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
Class_Descriptor cd_S20435C8 = {  "S20435C8", // class name
  0,0,//no base classes
  &(vtc_S20435C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20435C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20435C8),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  S20435C3  : S20435C4 , S20948C8 , S20435C8 , virtual S9624C48 {
  ~S20435C3(); // tgen
  S20435C3(); // tgen
};
//SIG(-1 S20435C3) C1{ BC2{ BC3{ m} VBC4{ vd m FD} vd} BC5{ m Fc[7]} BC6{ v1} VBC3}


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

static void Test_S20435C3()
{
  extern Class_Descriptor cd_S20435C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20435C3, buf);
    S20435C3 *dp, &lv = *(dp=new (buf) S20435C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20435C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C3)");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*), 0, "S20435C3");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(32,16), "S20435C3");
    check_base_class_offset(lv, (S20435C4*), 0, "S20435C3");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20435C3");
    check_base_class_offset(lv, (S20435C8*), ABISELECT(16,12), "S20435C3");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(64,32), "S20435C3");
    test_class_info(&lv, &cd_S20435C3);
    dp->~S20435C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C3(Test_S20435C3, "S20435C3", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20435C3C1Ev();
extern void _ZN8S20435C3D1Ev();
Name_Map name_map_S20435C3[] = {
  NSPAIR(_ZN8S20435C3C1Ev),
  NSPAIR(_ZN8S20435C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20435C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20435C4,    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_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C8,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20435C3[];
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C3D1Ev,_ZThn16_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C3D0Ev,_ZThn16_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C3[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20435C3[];
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__8S20435C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn16_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn16_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__8S20435C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
static  VTT_ENTRY vtt_S20435C3[] = {
  {&(_ZTV8S20435C3[4]),  4,14},
  {&(_tg__ZTV8S20435C4__8S20435C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__8S20435C3[3]),  3,5},
  {&(_ZTV8S20435C3[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
static VTBL_ENTRY alt_thunk_names30[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn16_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn16_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C3D0Ev,_ZThn16_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C3D1Ev,_ZThn16_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C3 = {  "S20435C3", // class name
  bases_S20435C3, 6,
  &(vtc_S20435C3[0]), // expected_vtbl_contents
  &(vtt_S20435C3[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20435C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20435C3),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20435C3),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names30,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C9  : S20435C8 , virtual S9624C39 {
  int s20435c9f0:23;
  virtual  ~S20435C9(); // _ZN8S20435C9D2Ev
  S20435C9(); // tgen
};
//SIG(-1 S20435C9) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S20435C9()
{
  extern Class_Descriptor cd_S20435C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20435C9, buf);
    S20435C9 *dp, &lv = *(dp=new (buf) S20435C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20435C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20435C9)");
    check_base_class_offset(lv, (S20435C8*), 0, "S20435C9");
    check_base_class_offset(lv, (S9624C39*), 0, "S20435C9");
    set_bf_and_test(lv, s20435c9f0, ABISELECT(8,4), 0, 23, 1, "S20435C9");
    set_bf_and_test(lv, s20435c9f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S20435C9");
    test_class_info(&lv, &cd_S20435C9);
    dp->~S20435C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C9(Test_S20435C9, "S20435C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20435C9C1Ev();
extern void _ZN8S20435C9D2Ev();
Name_Map name_map_S20435C9[] = {
  NSPAIR(_ZN8S20435C9C1Ev),
  NSPAIR(_ZN8S20435C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20435C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20435C9[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY vtc_S20435C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S20435C9[];
static  VTT_ENTRY vtt_S20435C9[] = {
  {&(_ZTV8S20435C9[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
Class_Descriptor cd_S20435C9 = {  "S20435C9", // class name
  bases_S20435C9, 2,
  &(vtc_S20435C9[0]), // expected_vtbl_contents
  &(vtt_S20435C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20435C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20435C9),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20435C9),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  S20435C11  : S20948C8 , virtual S20435C4 , virtual S9624C48 {
  virtual  ~S20435C11(); // _ZN9S20435C11D2Ev
  S20435C11(); // tgen
};
//SIG(-1 S20435C11) C1{ BC2{ m Fc[7]} VBC3{ BC4{ m} VBC5{ vd m FD} vd} VBC4 vd}


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

static void Test_S20435C11()
{
  extern Class_Descriptor cd_S20435C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20435C11, buf);
    S20435C11 *dp, &lv = *(dp=new (buf) S20435C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20435C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C11)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20435C11");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*), 0, "S20435C11");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(16,12), "S20435C11");
    check_base_class_offset(lv, (S20435C4*), 0, "S20435C11");
    /*is_ambiguous_... S20435C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(48,28), "S20435C11");
    test_class_info(&lv, &cd_S20435C11);
    dp->~S20435C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C11(Test_S20435C11, "S20435C11", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S20435C11C1Ev();
extern void _ZN9S20435C11D2Ev();
Name_Map name_map_S20435C11[] = {
  NSPAIR(_ZN9S20435C11C1Ev),
  NSPAIR(_ZN9S20435C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20435C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C11[];
extern void _ZN9S20435C11D1Ev();
extern void _ZN9S20435C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C11D1Ev,_ZThn12_N9S20435C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C11D0Ev,_ZThn12_N9S20435C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C11[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C11[0]),
  (VTBL_ENTRY)&_ZN9S20435C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C11[];
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C11[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn16_N8S20435C4D1Ev,_ZThn12_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn16_N8S20435C4D0Ev,_ZThn12_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__9S20435C11[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
static  VTT_ENTRY vtt_S20435C11[] = {
  {&(_ZTV9S20435C11[6]),  6,13},
  {&(_ZTV9S20435C11[6]),  6,13},
  {&(_ZTV9S20435C11[11]),  11,13},
  {&(_tg__ZTV8S20435C4__9S20435C11[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__9S20435C11[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20435C11[];
extern  VTBL_ENTRY _ZTV9S20435C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C11[];
static VTBL_ENTRY alt_thunk_names31[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C4D0Ev,_ZThn12_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C4D1Ev,_ZThn12_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C11D0Ev,_ZThn12_N9S20435C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C11D1Ev,_ZThn12_N9S20435C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C11 = {  "S20435C11", // class name
  bases_S20435C11, 5,
  &(vtc_S20435C11[0]), // expected_vtbl_contents
  &(vtt_S20435C11[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S20435C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20435C11),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C11),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names31,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C14  : S9624C39 {
  ::S9624C48 s20435c14f0;
  ::S9624C39 s20435c14f1;
};
//SIG(-1 S20435C14) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S20435C14()
{
  extern Class_Descriptor cd_S20435C14;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S20435C14, buf);
    S20435C14 &lv = *(new (buf) S20435C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S20435C14)");
    check2(__alignof__(lv), 1, "__alignof__(S20435C14)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20435C14");
    check_field_offset(lv, s20435c14f0, 0, "S20435C14.s20435c14f0");
    check_field_offset(lv, s20435c14f1, 1, "S20435C14.s20435c14f1");
    test_class_info(&lv, &cd_S20435C14);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C14(Test_S20435C14, "S20435C14", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20435C13  : S9624C48 , S20435C14 , virtual S20435C4 , virtual S20435C8 {
  void *s20435c13f0;
  ~S20435C13(); // tgen
  S20435C13(); // tgen
};
//SIG(-1 S20435C13) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S20435C13()
{
  extern Class_Descriptor cd_S20435C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20435C13, buf);
    S20435C13 *dp, &lv = *(dp=new (buf) S20435C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S20435C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C13)");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S20435C13");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*), ABISELECT(9,5), "S20435C13");
    check_base_class_offset(lv, (S20435C14*), ABISELECT(9,5), "S20435C13");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*), 0, "S20435C13");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(32,12), "S20435C13");
    check_base_class_offset(lv, (S20435C4*), 0, "S20435C13");
    check_base_class_offset(lv, (S20435C8*), ABISELECT(64,28), "S20435C13");
    check_field_offset(lv, s20435c13f0, ABISELECT(16,8), "S20435C13.s20435c13f0");
    test_class_info(&lv, &cd_S20435C13);
    dp->~S20435C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C13(Test_S20435C13, "S20435C13", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN9S20435C13C1Ev();
extern void _ZN9S20435C13D1Ev();
Name_Map name_map_S20435C13[] = {
  NSPAIR(_ZN9S20435C13C1Ev),
  NSPAIR(_ZN9S20435C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
static Base_Class bases_S20435C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C13[];
extern void _ZN9S20435C13D1Ev();
extern void _ZN9S20435C13D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20435C13D1Ev,_ZThn12_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn32_N9S20435C13D0Ev,_ZThn12_N9S20435C13D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY vtc_S20435C13[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C13D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern VTBL_ENTRY _ZTV9S20435C13[];
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C13[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn12_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn12_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__9S20435C13[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
static  VTT_ENTRY vtt_S20435C13[] = {
  {&(_ZTV9S20435C13[6]),  6,17},
  {&(_ZTV9S20435C13[6]),  6,17},
  {&(_ZTV9S20435C13[11]),  11,17},
  {&(_ZTV9S20435C13[16]),  16,17},
  {&(_tg__ZTV8S20435C4__9S20435C13[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__9S20435C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
static VTBL_ENTRY alt_thunk_names32[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn12_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn12_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C13D0Ev,_ZThn12_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C13D1Ev,_ZThn12_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C13 = {  "S20435C13", // class name
  bases_S20435C13, 7,
  &(vtc_S20435C13[0]), // expected_vtbl_contents
  &(vtt_S20435C13[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI9S20435C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20435C13),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C13),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names32,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C16  : virtual S20435C8 {
  virtual  ~S20435C16(); // _ZN9S20435C16D2Ev
  S20435C16(); // tgen
};
//SIG(-1 S20435C16) C1{ VBC2{ v1} vd}


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

static void Test_S20435C16()
{
  extern Class_Descriptor cd_S20435C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20435C16, buf);
    S20435C16 *dp, &lv = *(dp=new (buf) S20435C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20435C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20435C16)");
    check_base_class_offset(lv, (S20435C8*), 0, "S20435C16");
    test_class_info(&lv, &cd_S20435C16);
    dp->~S20435C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C16(Test_S20435C16, "S20435C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20435C16C1Ev();
extern void _ZN9S20435C16D2Ev();
Name_Map name_map_S20435C16[] = {
  NSPAIR(_ZN9S20435C16C1Ev),
  NSPAIR(_ZN9S20435C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
static Base_Class bases_S20435C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    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 _ZTI9S20435C16[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY vtc_S20435C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S20435C16[];
static  VTT_ENTRY vtt_S20435C16[] = {
  {&(_ZTV9S20435C16[4]),  4,7},
  {&(_ZTV9S20435C16[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
Class_Descriptor cd_S20435C16 = {  "S20435C16", // class name
  bases_S20435C16, 1,
  &(vtc_S20435C16[0]), // expected_vtbl_contents
  &(vtt_S20435C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20435C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20435C16),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C16),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  S20435C15  : S20435C16 , virtual S9624C48 {
  ::S20948C8 s20435c15f0;
  virtual  ~S20435C15(); // _ZN9S20435C15D2Ev
  S20435C15(); // tgen
};
//SIG(-1 S20435C15) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S20435C15()
{
  extern Class_Descriptor cd_S20435C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20435C15, buf);
    S20435C15 *dp, &lv = *(dp=new (buf) S20435C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20435C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20435C15)");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*), 0, "S20435C15");
    check_base_class_offset(lv, (S20435C16*), 0, "S20435C15");
    check_base_class_offset(lv, (S9624C48*), 0, "S20435C15");
    check_field_offset(lv, s20435c15f0, ABISELECT(8,4), "S20435C15.s20435c15f0");
    test_class_info(&lv, &cd_S20435C15);
    dp->~S20435C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C15(Test_S20435C15, "S20435C15", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S20435C15C1Ev();
extern void _ZN9S20435C15D2Ev();
Name_Map name_map_S20435C15[] = {
  NSPAIR(_ZN9S20435C15C1Ev),
  NSPAIR(_ZN9S20435C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20435C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    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_S20435C16,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20435C15[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY vtc_S20435C15[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern VTBL_ENTRY _ZTV9S20435C15[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C16__9S20435C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
static  VTT_ENTRY vtt_S20435C15[] = {
  {&(_ZTV9S20435C15[5]),  5,8},
  {&(_tg__ZTV9S20435C16__9S20435C15[4]),  4,7},
  {&(_tg__ZTV9S20435C16__9S20435C15[4]),  4,7},
  {&(_ZTV9S20435C15[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
Class_Descriptor cd_S20435C15 = {  "S20435C15", // class name
  bases_S20435C15, 3,
  &(vtc_S20435C15[0]), // expected_vtbl_contents
  &(vtt_S20435C15[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S20435C15),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20435C15),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C15),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C12  : S20435C13 , S20435C14 , S20948C7_nt , S20435C15 {
  ~S20435C12(); // tgen
  S20435C12(); // tgen
};
//SIG(-1 S20435C12) C1{ BC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} BC4 BC7 BC9{ BC10{ VBC8 vd} VBC3 vd FC11{ m Fc[7]}}}


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

static void Test_S20435C12()
{
  extern Class_Descriptor cd_S20435C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20435C12, buf);
    S20435C12 *dp, &lv = *(dp=new (buf) S20435C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20435C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C12)");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*), ABISELECT(8,4), "S20435C12");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*), ABISELECT(9,5), "S20435C12");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*), ABISELECT(9,5), "S20435C12");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*), 0, "S20435C12");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(80,44), "S20435C12");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*), 0, "S20435C12");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*), ABISELECT(64,32), "S20435C12");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*), ABISELECT(64,32), "S20435C12");
    check_base_class_offset(lv, (S20435C13*), 0, "S20435C12");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*), ABISELECT(24,12), "S20435C12");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*), ABISELECT(24,12), "S20435C12");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,16), "S20435C12");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*), ABISELECT(64,32), "S20435C12");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*), ABISELECT(112,60), "S20435C12");
    check_base_class_offset(lv, (S20435C15*), ABISELECT(64,32), "S20435C12");
    test_class_info(&lv, &cd_S20435C12);
    dp->~S20435C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C12(Test_S20435C12, "S20435C12", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN9S20435C12C1Ev();
extern void _ZN9S20435C12D1Ev();
Name_Map name_map_S20435C12[] = {
  NSPAIR(_ZN9S20435C12C1Ev),
  NSPAIR(_ZN9S20435C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
static Base_Class bases_S20435C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20435C4,    0, //bcp->offset
    -1, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20435C8,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20435C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20435C14,    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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C16,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20435C15,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C12[];
extern void _ZN9S20435C12D1Ev();
extern void _ZN9S20435C12D0Ev();
extern void ABISELECT(_ZThn32_N9S20435C12D1Ev,_ZThn16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn32_N9S20435C12D0Ev,_ZThn16_N9S20435C12D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C12D1Ev,_ZThn44_N9S20435C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
extern void ABISELECT(_ZThn80_N9S20435C12D0Ev,_ZThn44_N9S20435C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C12[] = {
  ABISELECT(112,60),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN9S20435C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C12D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20435C12D1Ev,_ZThn16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20435C12D0Ev,_ZThn16_N9S20435C12D0Ev),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C12[];
extern void _ZN9S20435C13D1Ev();
extern void _ZN9S20435C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C13__9S20435C12[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C13D1Ev,_ZThn44_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S20435C13D0Ev,_ZThn44_N9S20435C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C13__9S20435C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C13__9S20435C12[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C15__9S20435C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C12[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn80_N8S20435C4D1Ev,_ZThn44_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn80_N8S20435C4D0Ev,_ZThn44_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__9S20435C12[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
static  VTT_ENTRY vtt_S20435C12[] = {
  {&(_ZTV9S20435C12[7]),  7,26},
  {&(_tg__ZTV9S20435C13__9S20435C12[6]),  6,8},
  {&(_tg__ZTV9S20435C13__9S20435C12[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C13__9S20435C12[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C13__9S20435C12[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C12[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C15__9S20435C12[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C15__9S20435C12[4]),  4,7},
  {&(_tg__ZTV9S20435C15__9S20435C12[5]),  5,8},
  {&(_ZTV9S20435C12[7]),  7,26},
  {&(_ZTV9S20435C12[24]),  24,26},
  {&(_ZTV9S20435C12[18]),  18,26},
  {&(_ZTV9S20435C12[18]),  18,26},
  {&(_tg__ZTV8S20435C4__9S20435C12[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__9S20435C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
static VTBL_ENTRY alt_thunk_names33[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20435C4D0Ev,_ZThn44_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20435C4D1Ev,_ZThn44_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C13D0Ev,_ZThn44_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C13D1Ev,_ZThn44_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C12D0Ev,_ZThn44_N9S20435C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C12D1Ev,_ZThn44_N9S20435C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C12 = {  "S20435C12", // class name
  bases_S20435C12, 14,
  &(vtc_S20435C12[0]), // expected_vtbl_contents
  &(vtt_S20435C12[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI9S20435C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20435C12),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C12),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names33,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C2  : virtual S20435C3 , virtual S20435C9 , virtual S20435C8 , S20435C11 , S20435C12 {
  virtual  ~S20435C2(); // _ZN8S20435C2D2Ev
  S20435C2(); // tgen
};
//SIG(-1 S20435C2) C1{ VBC2{ BC3{ BC4{ m} VBC5{ vd m FD} vd} BC6{ m Fc[7]} BC7{ v1} VBC4} VBC8{ BC7 VBC9{ m} vd Fi:23} VBC7 BC10{ BC6 VBC3 VBC4 vd} BC11{ BC12{ BC4 BC13{ BC9 FC4 FC9} VBC3 VBC7 Fp} BC13 BC5 BC14{ BC15{ VBC7 vd} VBC4 vd FC6}} vd}


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

static void Test_S20435C2()
{
  extern Class_Descriptor cd_S20435C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S20435C2, buf);
    S20435C2 *dp, &lv = *(dp=new (buf) S20435C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S20435C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C2)");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*), ABISELECT(96,56), "S20435C2");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*), ABISELECT(128,72), "S20435C2");
    /*is_ambiguous_... S20435C2::S20435C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(128,72), "S20435C2");
    check_base_class_offset(lv, (S20435C4*)(S20435C3*), ABISELECT(96,56), "S20435C2");
    check_base_class_offset(lv, (S20948C8*)(S20435C3*), ABISELECT(104,60), "S20435C2");
    check_base_class_offset(lv, (S20435C8*)(S20435C3*), ABISELECT(112,68), "S20435C2");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*), ABISELECT(160,88), "S20435C2");
    /*is_ambiguous_... S20435C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C11*), ABISELECT(160,88), "S20435C2");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*), ABISELECT(160,88), "S20435C2");
    check_base_class_offset(lv, (S20435C3*), ABISELECT(96,56), "S20435C2");
    check_base_class_offset(lv, (S20435C8*)(S20435C9*), ABISELECT(160,88), "S20435C2");
    check_base_class_offset(lv, (S9624C39*)(S20435C9*), 0, "S20435C2");
    check_base_class_offset(lv, (S20435C9*), ABISELECT(160,88), "S20435C2");
    /*is_ambiguous_... S20435C2::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*), ABISELECT(80,44), "S20435C2");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*), ABISELECT(80,44), "S20435C2");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(80,44), "S20435C2");
    check_base_class_offset(lv, (S20948C8*)(S20435C11*), ABISELECT(8,4), "S20435C2");
    /*is_ambiguous_... S20435C2::S20435C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*), 0, "S20435C2");
    check_base_class_offset(lv, (S20435C4*)(S20435C11*), 0, "S20435C2");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*), 0, "S20435C2");
    check_base_class_offset(lv, (S20435C11*), 0, "S20435C2");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*), ABISELECT(24,16), "S20435C2");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(25,17), "S20435C2");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(25,17), "S20435C2");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*), ABISELECT(16,12), "S20435C2");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*), ABISELECT(40,24), "S20435C2");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*), ABISELECT(40,24), "S20435C2");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*), ABISELECT(48,28), "S20435C2");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(80,44), "S20435C2");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*), ABISELECT(80,44), "S20435C2");
    check_base_class_offset(lv, (S20435C12*), ABISELECT(16,12), "S20435C2");
    test_class_info(&lv, &cd_S20435C2);
    dp->~S20435C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C2(Test_S20435C2, "S20435C2", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S20435C2C1Ev();
extern void _ZN8S20435C2D2Ev();
Name_Map name_map_S20435C2[] = {
  NSPAIR(_ZN8S20435C2C1Ev),
  NSPAIR(_ZN8S20435C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C9;
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C11;
extern VTBL_ENTRY _ZTI9S20435C11[];
extern  VTBL_ENTRY _ZTV9S20435C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
static Base_Class bases_S20435C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20435C4,    ABISELECT(96,56), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(112,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    6, //immediately_derived
  0, 1},
  {&cd_S20435C3,    ABISELECT(96,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C9,    ABISELECT(160,88), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20435C11,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20435C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20435C14,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20435C2[];
extern void ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev)();
extern void _ZN8S20435C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev)();
extern void _ZN8S20435C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20435C2D1Ev,_ZThn12_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20435C2D0Ev,_ZThn12_N8S20435C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S20435C2D1Ev,_ZThn28_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20435C2D0Ev,_ZThn28_N8S20435C2D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N8S20435C2D1Ev,_ZThn44_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20435C2D0Ev,_ZThn44_N8S20435C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20435C2D1Ev,_ZThn56_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20435C2D0Ev,_ZThn56_N8S20435C2D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20435C2D1Ev,_ZTv0_n12_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20435C2D1Ev,_ZThn72_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C2D0Ev,_ZTv0_n12_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20435C2D0Ev,_ZThn72_N8S20435C2D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20435C2D1Ev,_ZThn88_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S20435C2D0Ev,_ZThn88_N8S20435C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C2[] = {
  ABISELECT(80,44),
  0,
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20435C2D1Ev,_ZThn28_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20435C2D0Ev,_ZThn28_N8S20435C2D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20435C2D1Ev,_ZThn44_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20435C2D0Ev,_ZThn44_N8S20435C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C2D1Ev,_ZTv0_n12_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C2D0Ev,_ZTv0_n12_N8S20435C2D0Ev),
  ABISELECT(-160,-88),
  0,
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20435C2[];
extern void ABISELECT(_ZTv0_n32_N9S20435C11D1Ev,_ZTv0_n16_N9S20435C11D1Ev)();
extern void _ZN9S20435C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C11D0Ev,_ZTv0_n16_N9S20435C11D0Ev)();
extern void _ZN9S20435C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C11__8S20435C2[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C11D1Ev,_ZTv0_n16_N9S20435C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C11D0Ev,_ZTv0_n16_N9S20435C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S20435C11D1Ev,_ZThn72_N9S20435C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S20435C11D0Ev,_ZThn72_N9S20435C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C11__8S20435C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20435C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__8S20435C2[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C12__8S20435C2[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C12__8S20435C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C13D1Ev,_ZThn60_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C13D0Ev,_ZThn60_N9S20435C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C12__8S20435C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C12__8S20435C2[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__8S20435C2[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C12__8S20435C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C12__8S20435C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C12D1Ev,_ZThn60_N9S20435C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C12D0Ev,_ZThn60_N9S20435C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C12__8S20435C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12__8S20435C2[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C3__8S20435C2[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C3__8S20435C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn16_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn16_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C3__8S20435C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C3D1Ev,_ZThn16_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C3D0Ev,_ZThn16_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C3__8S20435C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C9__8S20435C2[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A1__8S20435C2[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20435C4D1Ev,_ZThn72_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20435C4D0Ev,_ZThn72_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__A1__8S20435C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
static  VTT_ENTRY vtt_S20435C2[] = {
  {&(_ZTV8S20435C2[10]),  10,57},
  {&(_tg__ZTV9S20435C11__8S20435C2[6]),  6,8},
  {&(_tg__ZTV9S20435C11__8S20435C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C11__8S20435C2[3]),  3,5},
  {&(_tg__ZTV9S20435C12__8S20435C2[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C12__8S20435C2[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C12__8S20435C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C12__8S20435C2[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C12__8S20435C2[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C12__8S20435C2[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__8S20435C2[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__8S20435C2[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C12__8S20435C2[5]),  5,8},
  {&(_tg__ZTV8S20435C4__9S20435C12__8S20435C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C12__8S20435C2[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C12__8S20435C2[5]),  5,8},
  {&(_tg__ZTV9S20435C15__9S20435C12__8S20435C2[5]),  5,8},
  {&(_ZTV8S20435C2[39]),  39,57},
  {&(_ZTV8S20435C2[47]),  47,57},
  {&(_ZTV8S20435C2[43]),  43,57},
  {&(_ZTV8S20435C2[54]),  54,57},
  {&(_ZTV8S20435C2[30]),  30,57},
  {&(_ZTV8S20435C2[10]),  10,57},
  {&(_ZTV8S20435C2[19]),  19,57},
  {&(_ZTV8S20435C2[30]),  30,57},
  {&(_tg__ZTV8S20435C3__8S20435C2[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C3__8S20435C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C3__8S20435C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C3__8S20435C2[3]),  3,5},
  {&(_tg__ZTV8S20435C9__8S20435C2[3]),  3,6},
  {&(_tg__ZTV8S20435C4__A1__8S20435C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__A1__8S20435C2[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20435C2[];
extern  VTBL_ENTRY _ZTV8S20435C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C2[];
static VTBL_ENTRY alt_thunk_names34[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C3D0Ev,_ZThn16_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C3D1Ev,_ZThn16_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C4D0Ev,_ZThn72_N8S20435C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn16_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C4D1Ev,_ZThn72_N8S20435C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn16_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C12D0Ev,_ZThn60_N9S20435C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C12D1Ev,_ZThn60_N9S20435C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C13D0Ev,_ZThn60_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C13D1Ev,_ZThn60_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20435C11D0Ev,_ZThn72_N9S20435C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20435C11D1Ev,_ZThn72_N9S20435C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C11D0Ev,_ZTv0_n16_N9S20435C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C11D1Ev,_ZTv0_n16_N9S20435C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C2D0Ev,_ZTv0_n12_N8S20435C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C2D0Ev,_ZThn72_N8S20435C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C2D1Ev,_ZTv0_n12_N8S20435C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C2D1Ev,_ZThn72_N8S20435C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20435C2D0Ev,_ZThn88_N8S20435C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C2D0Ev,_ZThn56_N8S20435C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20435C2D1Ev,_ZThn88_N8S20435C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C2D1Ev,_ZThn56_N8S20435C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C2D0Ev,_ZThn12_N8S20435C2D0Ev),
  (VTBL_ENTRY)_ZN8S20435C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C2D1Ev,_ZThn12_N8S20435C2D1Ev),
  (VTBL_ENTRY)_ZN8S20435C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C2 = {  "S20435C2", // class name
  bases_S20435C2, 25,
  &(vtc_S20435C2[0]), // expected_vtbl_contents
  &(vtt_S20435C2[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S20435C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20435C2),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20435C2),32, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names34,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C19  : S9624C48 , virtual S20948C7_nt , S20435C8 , S20435C15 {
  int s20435c19f0;
  virtual  ~S20435C19(); // _ZN9S20435C19D2Ev
  S20435C19(); // tgen
};
//SIG(-1 S20435C19) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


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

static void Test_S20435C19()
{
  extern Class_Descriptor cd_S20435C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20435C19, buf);
    S20435C19 *dp, &lv = *(dp=new (buf) S20435C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20435C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C19)");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20435C19");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S20435C19");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*), 0, "S20435C19");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*), ABISELECT(8,4), "S20435C19");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*), ABISELECT(8,4), "S20435C19");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*), ABISELECT(64,36), "S20435C19");
    check_base_class_offset(lv, (S20435C15*), ABISELECT(8,4), "S20435C19");
    check_field_offset(lv, s20435c19f0, ABISELECT(24,16), "S20435C19.s20435c19f0");
    test_class_info(&lv, &cd_S20435C19);
    dp->~S20435C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C19(Test_S20435C19, "S20435C19", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN9S20435C19C1Ev();
extern void _ZN9S20435C19D2Ev();
Name_Map name_map_S20435C19[] = {
  NSPAIR(_ZN9S20435C19C1Ev),
  NSPAIR(_ZN9S20435C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
static Base_Class bases_S20435C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20435C16,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20435C15,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S20435C19[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20435C19D1Ev,_ZThn20_N9S20435C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20435C19D0Ev,_ZThn20_N9S20435C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C19[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C19[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C15__9S20435C19[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
static  VTT_ENTRY vtt_S20435C19[] = {
  {&(_ZTV9S20435C19[5]),  5,21},
  {&(_tg__ZTV9S20435C15__9S20435C19[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C15__9S20435C19[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C15__9S20435C19[4]),  4,7},
  {&(_tg__ZTV9S20435C15__9S20435C19[5]),  5,8},
  {&(_ZTV9S20435C19[19]),  19,21},
  {&(_ZTV9S20435C19[13]),  13,21},
  {&(_ZTV9S20435C19[13]),  13,21},
};
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
static VTBL_ENTRY alt_thunk_names35[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C19D0Ev,_ZThn20_N9S20435C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C19D1Ev,_ZThn20_N9S20435C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C19 = {  "S20435C19", // class name
  bases_S20435C19, 7,
  &(vtc_S20435C19[0]), // expected_vtbl_contents
  &(vtt_S20435C19[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI9S20435C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20435C19),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C19),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names35,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C18  : virtual S20435C8 , S20435C3 , virtual S20435C19 , S20948C8 {
  int s20435c18f0;
  virtual  ~S20435C18(); // _ZN9S20435C18D2Ev
  S20435C18(); // tgen
};
//SIG(-1 S20435C18) C1{ VBC2{ v1} BC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC2 VBC5} VBC8{ BC5 VBC6 BC2 BC9{ BC10{ VBC2 vd} VBC5 vd FC7} vd Fi} BC7 vd Fi}


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

static void Test_S20435C18()
{
  extern Class_Descriptor cd_S20435C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,18)];
    init_test(&cd_S20435C18, buf);
    S20435C18 *dp, &lv = *(dp=new (buf) S20435C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S20435C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C18)");
    /*is_ambiguous_... S20435C18::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*), ABISELECT(96,52), "S20435C18");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(96,52), "S20435C18");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*), 0, "S20435C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*), ABISELECT(48,28), "S20435C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C19*), ABISELECT(48,28), "S20435C18");
    check_base_class_offset(lv, (S20435C4*)(S20435C3*), 0, "S20435C18");
    check_base_class_offset(lv, (S20948C8*)(S20435C3*), ABISELECT(8,4), "S20435C18");
    check_base_class_offset(lv, (S20435C8*)(S20435C3*), ABISELECT(16,12), "S20435C18");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*), ABISELECT(80,44), "S20435C18");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C19*), ABISELECT(80,44), "S20435C18");
    check_base_class_offset(lv, (S20435C3*), 0, "S20435C18");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C19*), ABISELECT(88,48), "S20435C18");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C19*), ABISELECT(88,48), "S20435C18");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(96,52), "S20435C18");
    check_base_class_offset(lv, (S20435C15*)(S20435C19*), ABISELECT(96,52), "S20435C18");
    check_base_class_offset(lv, (S20435C19*), ABISELECT(88,48), "S20435C18");
    /*is_ambiguous_... S20435C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(24,16), "S20435C18");
    check_field_offset(lv, s20435c18f0, ABISELECT(32,24), "S20435C18.s20435c18f0");
    test_class_info(&lv, &cd_S20435C18);
    dp->~S20435C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C18(Test_S20435C18, "S20435C18", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN9S20435C18C1Ev();
extern void _ZN9S20435C18D2Ev();
Name_Map name_map_S20435C18[] = {
  NSPAIR(_ZN9S20435C18C1Ev),
  NSPAIR(_ZN9S20435C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C19;
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S20435C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20435C4,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C8,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20435C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20435C8,    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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(96,52), //bcp->offset
    26, //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20435C19,    ABISELECT(88,48), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C18[];
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S20435C18D1Ev,_ZThn28_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S20435C18D0Ev,_ZThn28_N9S20435C18D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn88_N9S20435C18D1Ev,_ZThn48_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn88_N9S20435C18D0Ev,_ZThn48_N9S20435C18D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY vtc_S20435C18[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C18[];
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C3__9S20435C18[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C3__9S20435C18[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20435C4D1Ev,_ZThn28_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20435C4D0Ev,_ZThn28_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C3__9S20435C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20435C3D1Ev,_ZThn28_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S20435C3D0Ev,_ZThn28_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C3__9S20435C18[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C18[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C19__9S20435C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C19__9S20435C18[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19__9S20435C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
};
static  VTT_ENTRY vtt_S20435C18[] = {
  {&(_ZTV9S20435C18[6]),  6,34},
  {&(_tg__ZTV8S20435C3__9S20435C18[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C3__9S20435C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C3__9S20435C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C3__9S20435C18[3]),  3,5},
  {&(_ZTV9S20435C18[31]),  31,34},
  {&(_ZTV9S20435C18[14]),  14,34},
  {&(_ZTV9S20435C18[23]),  23,34},
  {&(_ZTV9S20435C18[31]),  31,34},
  {&(_tg__ZTV9S20435C19__9S20435C18[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C18[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C18[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C19__9S20435C18[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C18[5]),  5,8},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
static VTBL_ENTRY alt_thunk_names36[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C3D0Ev,_ZThn28_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C3D1Ev,_ZThn28_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C4D0Ev,_ZThn28_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C4D1Ev,_ZThn28_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20435C18D0Ev,_ZThn48_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20435C18D1Ev,_ZThn48_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20435C18D0Ev,_ZThn28_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20435C18D1Ev,_ZThn28_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C18 = {  "S20435C18", // class name
  bases_S20435C18, 14,
  &(vtc_S20435C18[0]), // expected_vtbl_contents
  &(vtt_S20435C18[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI9S20435C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20435C18),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C18),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names36,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C21  : S20435C8 {
  ~S20435C21(); // tgen
  S20435C21(); // tgen
};
//SIG(-1 S20435C21) C1{ BC2{ v1}}


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

static void Test_S20435C21()
{
  extern Class_Descriptor cd_S20435C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20435C21, buf);
    S20435C21 *dp, &lv = *(dp=new (buf) S20435C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20435C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20435C21)");
    check_base_class_offset(lv, (S20435C8*), 0, "S20435C21");
    test_class_info(&lv, &cd_S20435C21);
    dp->~S20435C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C21(Test_S20435C21, "S20435C21", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20435C21C1Ev();
extern void _ZN9S20435C21D1Ev();
Name_Map name_map_S20435C21[] = {
  NSPAIR(_ZN9S20435C21C1Ev),
  NSPAIR(_ZN9S20435C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
static Base_Class bases_S20435C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C21[];
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY vtc_S20435C21[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C21[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern VTBL_ENTRY _ZTI9S20435C21[];
extern  VTBL_ENTRY _ZTV9S20435C21[];
Class_Descriptor cd_S20435C21 = {  "S20435C21", // class name
  bases_S20435C21, 1,
  &(vtc_S20435C21[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20435C21),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20435C21),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C23  : virtual S20435C9 , S20435C15 , S20435C12 , S20435C16 {
  virtual  ~S20435C23(); // _ZN9S20435C23D2Ev
  virtual void  v2(); // _ZN9S20435C232v2Ev
  S20435C23(); // tgen
};
//SIG(-1 S20435C23) C1{ VBC2{ BC3{ v2} VBC4{ m} vd Fi:23} BC5{ BC6{ VBC3 vd} VBC7{ m} vd FC8{ m Fc[7]}} BC9{ BC10{ BC7 BC11{ BC4 FC7 FC4} VBC12{ BC7 VBC13{ vd m FD} vd} VBC3 Fp} BC11 BC13 BC5} BC6 vd v1}


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

static void Test_S20435C23()
{
  extern Class_Descriptor cd_S20435C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S20435C23, buf);
    S20435C23 *dp, &lv = *(dp=new (buf) S20435C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S20435C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C23)");
    check_base_class_offset(lv, (S20435C8*)(S20435C9*), ABISELECT(104,60), "S20435C23");
    check_base_class_offset(lv, (S9624C39*)(S20435C9*), 0, "S20435C23");
    check_base_class_offset(lv, (S20435C9*), ABISELECT(104,60), "S20435C23");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*), 0, "S20435C23");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*), 0, "S20435C23");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*), 0, "S20435C23");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*), 0, "S20435C23");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*), 0, "S20435C23");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*), 0, "S20435C23");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*), 0, "S20435C23");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*), 0, "S20435C23");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*), ABISELECT(24,16), "S20435C23");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(25,17), "S20435C23");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(25,17), "S20435C23");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*), ABISELECT(16,12), "S20435C23");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(128,68), "S20435C23");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*), ABISELECT(16,12), "S20435C23");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*), ABISELECT(16,12), "S20435C23");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*), ABISELECT(40,24), "S20435C23");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*), ABISELECT(40,24), "S20435C23");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*), ABISELECT(48,28), "S20435C23");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(80,44), "S20435C23");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*), ABISELECT(80,44), "S20435C23");
    check_base_class_offset(lv, (S20435C12*), ABISELECT(16,12), "S20435C23");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C16*), ABISELECT(96,56), "S20435C23");
    test_class_info(&lv, &cd_S20435C23);
    dp->~S20435C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C23(Test_S20435C23, "S20435C23", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN9S20435C23C1Ev();
extern void _ZN9S20435C23D2Ev();
Name_Map name_map_S20435C23[] = {
  NSPAIR(_ZN9S20435C23C1Ev),
  NSPAIR(_ZN9S20435C23D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C9;
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
static Base_Class bases_S20435C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    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
    2, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20435C9,    ABISELECT(104,60), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20435C16,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20435C15,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(128,68), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20435C4,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20435C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(80,44), //bcp->offset
    26, //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
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C16,    ABISELECT(96,56), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C23[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C23D1Ev();
extern void _ZN9S20435C23D0Ev();
extern void _ZN9S20435C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N9S20435C23D1Ev,_ZThn28_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn48_N9S20435C23D0Ev,_ZThn28_N9S20435C23D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn104_N9S20435C23D1Ev,_ZThn60_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn104_N9S20435C23D0Ev,_ZThn60_N9S20435C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn128_N9S20435C23D1Ev,_ZThn68_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn128_N9S20435C23D0Ev,_ZThn68_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C23[] = {
  ABISELECT(128,68),
  ABISELECT(16,12),
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20435C23D1Ev,_ZThn28_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20435C23D0Ev,_ZThn28_N9S20435C23D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C23[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C23[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C15__9S20435C23[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__9S20435C23[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C12__9S20435C23[] = {
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C13D1Ev,_ZThn56_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C13D0Ev,_ZThn56_N9S20435C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C12__9S20435C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C12__9S20435C23[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A1__9S20435C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C12__A1__9S20435C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A1__9S20435C23[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C12__A1__9S20435C23[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C12D1Ev,_ZThn56_N9S20435C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C12D0Ev,_ZThn56_N9S20435C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C12__9S20435C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C12__9S20435C23[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12__9S20435C23[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C16__A2__9S20435C23[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C16__A2__9S20435C23[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C23[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C23[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn112_N8S20435C4D1Ev,_ZThn56_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn112_N8S20435C4D0Ev,_ZThn56_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__9S20435C23[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
static  VTT_ENTRY vtt_S20435C23[] = {
  {&(_ZTV9S20435C23[9]),  9,54},
  {&(_tg__ZTV9S20435C15__9S20435C23[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C15__9S20435C23[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C15__9S20435C23[4]),  4,7},
  {&(_tg__ZTV9S20435C15__9S20435C23[5]),  5,8},
  {&(_tg__ZTV9S20435C12__9S20435C23[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C12__9S20435C23[6]),  6,8},
  {&(_tg__ZTV9S20435C139S20435C12__9S20435C23[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C12__9S20435C23[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C12__9S20435C23[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C12__A1__9S20435C23[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__A1__9S20435C23[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A1__9S20435C23[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C12__A1__9S20435C23[3]),  3,4},
  {&(_tg__ZTV9S20435C12__9S20435C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C12__9S20435C23[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C12__9S20435C23[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C12__9S20435C23[5]),  5,8},
  {&(_tg__ZTV9S20435C16__A2__9S20435C23[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C16__A2__9S20435C23[3]),  3,4},
  {&(_ZTV9S20435C23[46]),  46,54},
  {&(_ZTV9S20435C23[9]),  9,54},
  {&(_ZTV9S20435C23[20]),  20,54},
  {&(_ZTV9S20435C23[20]),  20,54},
  {&(_ZTV9S20435C23[52]),  52,54},
  {&(_ZTV9S20435C23[31]),  31,54},
  {&(_ZTV9S20435C23[38]),  38,54},
  {&(_tg__ZTV8S20435C9__9S20435C23[3]),  3,6},
  {&(_tg__ZTV8S20435C4__9S20435C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__9S20435C23[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20435C23[];
extern  VTBL_ENTRY _ZTV9S20435C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C23[];
static VTBL_ENTRY alt_thunk_names37[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20435C4D0Ev,_ZThn56_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20435C4D1Ev,_ZThn56_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C12D0Ev,_ZThn56_N9S20435C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C12D1Ev,_ZThn56_N9S20435C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C13D0Ev,_ZThn56_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C13D1Ev,_ZThn56_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20435C23D0Ev,_ZThn68_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20435C23D1Ev,_ZThn68_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C23D0Ev,_ZThn60_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C23D1Ev,_ZThn60_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C23 = {  "S20435C23", // class name
  bases_S20435C23, 21,
  &(vtc_S20435C23[0]), // expected_vtbl_contents
  &(vtt_S20435C23[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI9S20435C23),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20435C23),54, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C23),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names37,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C22  : virtual S20435C14 , S20435C18 , S20435C15 , S20435C23 , virtual S20435C12 {
  virtual  ~S20435C22(); // _ZN9S20435C22D2Ev
  virtual void  v3(); // _ZN9S20435C222v3Ev
  S20435C22(); // tgen
};
//SIG(-1 S20435C22) C1{ VBC2{ BC3{ m} FC4{ m} FC3} BC5{ VBC6{ v2} BC7{ BC8{ BC4 VBC9{ vd m FD} vd} BC10{ m Fc[7]} BC6 VBC4} VBC11{ BC4 VBC9 BC6 BC12{ BC13{ VBC6 vd} VBC4 vd FC10} vd Fi} BC10 vd Fi} BC12 BC14{ VBC15{ BC6 VBC3 vd Fi:23} BC12 BC16{ BC17{ BC4 BC2 VBC8 VBC6 Fp} BC2 BC9 BC12} BC13 vd v3} VBC16 vd v1}


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

static void Test_S20435C22()
{
  extern Class_Descriptor cd_S20435C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,50)];
    init_test(&cd_S20435C22, buf);
    S20435C22 *dp, &lv = *(dp=new (buf) S20435C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,196), "sizeof(S20435C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C22)");
    /*is_ambiguous_... S20435C22::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*), ABISELECT(168,100), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*), ABISELECT(168,100), "S20435C22");
    /*is_ambiguous_... S20435C18::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C18*), ABISELECT(224,128), "S20435C22");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(224,128), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*), ABISELECT(224,128), "S20435C22");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C23*), ABISELECT(224,128), "S20435C22");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*)(S20435C23*), ABISELECT(224,128), "S20435C22");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*), ABISELECT(224,128), "S20435C22");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C23*), ABISELECT(224,128), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*), ABISELECT(224,128), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(224,128), "S20435C22");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*)(S20435C18*), 0, "S20435C22");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(176,104), "S20435C22");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C19*), ABISELECT(176,104), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(176,104), "S20435C22");
    check_base_class_offset(lv, (S20435C4*)(S20435C3*)(S20435C18*), 0, "S20435C22");
    check_base_class_offset(lv, (S20948C8*)(S20435C3*)(S20435C18*), ABISELECT(8,4), "S20435C22");
    check_base_class_offset(lv, (S20435C8*)(S20435C3*)(S20435C18*), ABISELECT(16,12), "S20435C22");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*)(S20435C18*), ABISELECT(208,120), "S20435C22");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C19*), ABISELECT(208,120), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*), ABISELECT(208,120), "S20435C22");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C23*), ABISELECT(208,120), "S20435C22");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*)(S20435C23*), ABISELECT(208,120), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*), ABISELECT(208,120), "S20435C22");
    check_base_class_offset(lv, (S20435C3*)(S20435C18*), 0, "S20435C22");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C19*), ABISELECT(216,124), "S20435C22");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C19*), ABISELECT(216,124), "S20435C22");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(224,128), "S20435C22");
    check_base_class_offset(lv, (S20435C15*)(S20435C19*), ABISELECT(224,128), "S20435C22");
    check_base_class_offset(lv, (S20435C19*)(S20435C18*), ABISELECT(216,124), "S20435C22");
    /*is_ambiguous_... S20435C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C18*), ABISELECT(24,16), "S20435C22");
    check_base_class_offset(lv, (S20435C18*), 0, "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*), ABISELECT(40,28), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*), ABISELECT(40,28), "S20435C22");
    check_base_class_offset(lv, (S20435C8*)(S20435C9*), ABISELECT(248,144), "S20435C22");
    check_base_class_offset(lv, (S9624C39*)(S20435C9*), 0, "S20435C22");
    check_base_class_offset(lv, (S20435C9*)(S20435C23*), ABISELECT(248,144), "S20435C22");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C23*), ABISELECT(64,40), "S20435C22");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C23*), ABISELECT(64,40), "S20435C22");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*)(S20435C23*), ABISELECT(88,56), "S20435C22");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*), ABISELECT(89,57), "S20435C22");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*), ABISELECT(89,57), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*), ABISELECT(80,52), "S20435C22");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*)(S20435C23*), ABISELECT(80,52), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*), ABISELECT(80,52), "S20435C22");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*)(S20435C23*), ABISELECT(80,52), "S20435C22");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*)(S20435C23*), ABISELECT(104,64), "S20435C22");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*)(S20435C23*), ABISELECT(104,64), "S20435C22");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*)(S20435C23*), ABISELECT(112,68), "S20435C22");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*), ABISELECT(144,84), "S20435C22");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*)(S20435C23*), ABISELECT(144,84), "S20435C22");
    check_base_class_offset(lv, (S20435C12*)(S20435C23*), ABISELECT(80,52), "S20435C22");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C23*), ABISELECT(160,96), "S20435C22");
    check_base_class_offset(lv, (S20435C23*), ABISELECT(64,40), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*), ABISELECT(280,156), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(281,157), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(281,157), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C13*)(S20435C12*), ABISELECT(272,152), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*), ABISELECT(296,164), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*), ABISELECT(296,164), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*), ABISELECT(304,168), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(336,184), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C12*), ABISELECT(336,184), "S20435C22");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C12*), ABISELECT(272,152), "S20435C22");
    test_class_info(&lv, &cd_S20435C22);
    dp->~S20435C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C22(Test_S20435C22, "S20435C22", ABISELECT(352,196));

#else // __cplusplus

extern void _ZN9S20435C22C1Ev();
extern void _ZN9S20435C22D2Ev();
Name_Map name_map_S20435C22[] = {
  NSPAIR(_ZN9S20435C22C1Ev),
  NSPAIR(_ZN9S20435C22D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C19;
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C18;
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C9;
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C23;
extern VTBL_ENTRY _ZTI9S20435C23[];
extern  VTBL_ENTRY _ZTV9S20435C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
static Base_Class bases_S20435C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(168,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
  0, 0},
  {&cd_S20435C14,    ABISELECT(168,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_S20435C8,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(176,104), //bcp->offset
    66, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20435C4,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C8,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(208,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
    9, //immediately_derived
  0, 1},
  {&cd_S20435C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(224,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20435C19,    ABISELECT(216,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20435C18,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C16,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C8,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20435C9,    ABISELECT(248,144), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20435C16,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20435C15,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C14,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20435C13,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20435C23,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C14,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20435C13,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(296,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(304,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(336,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(272,152), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C22[];
extern void _ZN9S20435C22D1Ev();
extern void _ZN9S20435C22D0Ev();
extern void _ZN9S20435C222v3Ev();
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev)();
extern void _ZN9S20435C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N9S20435C22D1Ev,_ZThn68_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C22D0Ev,_ZThn68_N9S20435C22D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn216_N9S20435C22D1Ev,_ZThn124_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn216_N9S20435C22D0Ev,_ZThn124_N9S20435C22D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn248_N9S20435C22D1Ev,_ZThn144_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn248_N9S20435C22D0Ev,_ZThn144_N9S20435C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn272_N9S20435C22D1Ev,_ZThn152_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn272_N9S20435C22D0Ev,_ZThn152_N9S20435C22D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY vtc_S20435C22[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN9S20435C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20435C22D1Ev,_ZThn68_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20435C22D0Ev,_ZThn68_N9S20435C22D0Ev),
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev),
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C22[];
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C18__9S20435C22[] = {
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C39S20435C18__9S20435C22[] = {
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C39S20435C18__9S20435C22[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20435C4D1Ev,_ZThn104_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20435C4D0Ev,_ZThn104_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C18__9S20435C22[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S20435C3D1Ev,_ZThn104_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S20435C3D0Ev,_ZThn104_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C39S20435C18__9S20435C22[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C18__9S20435C22[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C18D1Ev,_ZThn104_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C18D0Ev,_ZThn104_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C18__9S20435C22[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn216_N9S20435C18D1Ev,_ZThn124_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn216_N9S20435C18D0Ev,_ZThn124_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C18__9S20435C22[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C15__A1__9S20435C22[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C15__A1__9S20435C22[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C15__A1__9S20435C22[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C15__A1__9S20435C22[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C23D1Ev();
extern void _ZN9S20435C23D0Ev();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C23__9S20435C22[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C23__A2__9S20435C22[] = {
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C23__A2__9S20435C22[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C23__A2__9S20435C22[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C23__A2__9S20435C22[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C23__9S20435C22[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C129S20435C23__9S20435C22[] = {
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C13D1Ev,_ZThn52_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20435C13D0Ev,_ZThn52_N9S20435C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C23__9S20435C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C129S20435C23__9S20435C22[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C129S20435C23__A3__9S20435C22[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C23__A3__9S20435C22[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C129S20435C23__A3__9S20435C22[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C12D1Ev,_ZThn52_N9S20435C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S20435C12D0Ev,_ZThn52_N9S20435C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C129S20435C23__9S20435C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C129S20435C23__9S20435C22[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C129S20435C23__9S20435C22[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C23__A4__9S20435C22[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C23__A4__9S20435C22[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn184_N9S20435C23D1Ev,_ZThn104_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn184_N9S20435C23D0Ev,_ZThn104_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C23__9S20435C22[] = {
  ABISELECT(-184,-104),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C23__9S20435C22[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__9S20435C23__9S20435C22[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C23D1Ev,_ZThn64_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C23D0Ev,_ZThn64_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C23__9S20435C22[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A1__9S20435C23__9S20435C22[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C16__A2__9S20435C23__9S20435C22[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C22[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C22[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C19__9S20435C22[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C19__9S20435C22[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19__9S20435C22[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C22[] = {
  ABISELECT(-248,-144),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A1__9S20435C22[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn96_N8S20435C4D1Ev,_ZThn52_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn96_N8S20435C4D0Ev,_ZThn52_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__A1__9S20435C22[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C22[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C12__A1__9S20435C22[] = {
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C12__A1__9S20435C22[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A1__9S20435C22[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C12__A1__9S20435C22[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C22[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C12__A5__9S20435C22[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A5__9S20435C22[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C12__A4__9S20435C22[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C12__A1__9S20435C22[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C12__A1__9S20435C22[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C12__A1__9S20435C22[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12__A1__9S20435C22[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
static  VTT_ENTRY vtt_S20435C22[] = {
  {&(_ZTV9S20435C22[11]),  11,118},
  {&(_tg__ZTV9S20435C18__9S20435C22[6]),  6,8},
  {&(_tg__ZTV8S20435C39S20435C18__9S20435C22[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C39S20435C18__9S20435C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C18__9S20435C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C39S20435C18__9S20435C22[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18__9S20435C22[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C18__9S20435C22[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C18__9S20435C22[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C15__A1__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C15__A1__9S20435C22[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C15__A1__9S20435C22[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C15__A1__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C23__9S20435C22[9]),  9,13},
  {&(_tg__ZTV9S20435C159S20435C23__A2__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C23__A2__9S20435C22[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C23__A2__9S20435C22[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C23__A2__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C129S20435C23__9S20435C22[6]),  6,8},
  {&(_tg__ZTV9S20435C139S20435C129S20435C23__9S20435C22[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C23__9S20435C22[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C129S20435C23__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C129S20435C23__A3__9S20435C22[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C23__A3__9S20435C22[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C129S20435C23__A3__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C129S20435C23__9S20435C22[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C129S20435C23__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C129S20435C23__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C23__A4__9S20435C22[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C23__A4__9S20435C22[3]),  3,4},
  {&(_tg__ZTV8S20435C9__9S20435C23__9S20435C22[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C23__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C12__9S20435C23__9S20435C22[7]),  7,9},
  {&(_tg__ZTV9S20435C12__9S20435C23__9S20435C22[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C23__9S20435C22[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C12__A1__9S20435C23__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C16__A2__9S20435C23__9S20435C22[4]),  4,7},
  {&(_ZTV9S20435C22[86]),  86,118},
  {&(_ZTV9S20435C22[69]),  69,118},
  {&(_ZTV9S20435C22[78]),  78,118},
  {&(_ZTV9S20435C22[86]),  86,118},
  {&(_ZTV9S20435C22[22]),  22,118},
  {&(_ZTV9S20435C22[34]),  34,118},
  {&(_ZTV9S20435C22[94]),  94,118},
  {&(_ZTV9S20435C22[45]),  45,118},
  {&(_ZTV9S20435C22[45]),  45,118},
  {&(_ZTV9S20435C22[56]),  56,118},
  {&(_ZTV9S20435C22[63]),  63,118},
  {&(_ZTV9S20435C22[104]),  104,118},
  {&(_ZTV9S20435C22[108]),  108,118},
  {&(_ZTV9S20435C22[115]),  115,118},
  {&(_tg__ZTV9S20435C19__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C22[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C22[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C19__9S20435C22[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C22[5]),  5,8},
  {&(_tg__ZTV8S20435C9__9S20435C22[3]),  3,6},
  {&(_tg__ZTV8S20435C4__A1__9S20435C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__A1__9S20435C22[3]),  3,5},
  {&(_tg__ZTV9S20435C12__A1__9S20435C22[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C12__A1__9S20435C22[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C12__A1__9S20435C22[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A1__9S20435C22[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C12__A1__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C22[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__A5__9S20435C22[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A5__9S20435C22[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C12__A4__9S20435C22[3]),  3,4},
  {&(_tg__ZTV8S20435C4__9S20435C12__A1__9S20435C22[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C12__A1__9S20435C22[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C12__A1__9S20435C22[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C12__A1__9S20435C22[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20435C22[];
extern  VTBL_ENTRY _ZTV9S20435C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C22[];
static VTBL_ENTRY alt_thunk_names38[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C23D0Ev,_ZThn64_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C23D1Ev,_ZThn64_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20435C23D0Ev,_ZThn104_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20435C23D1Ev,_ZThn104_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C12D0Ev,_ZThn52_N9S20435C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C12D1Ev,_ZThn52_N9S20435C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C13D0Ev,_ZThn52_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C13D1Ev,_ZThn52_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20435C18D0Ev,_ZThn124_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20435C18D1Ev,_ZThn124_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C18D0Ev,_ZThn104_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C18D1Ev,_ZThn104_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C3D0Ev,_ZThn104_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C3D1Ev,_ZThn104_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C4D0Ev,_ZThn52_N8S20435C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C4D0Ev,_ZThn104_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C4D1Ev,_ZThn52_N8S20435C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C4D1Ev,_ZThn104_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20435C22D0Ev,_ZThn144_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20435C22D1Ev,_ZThn144_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20435C22D0Ev,_ZThn124_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20435C22D1Ev,_ZThn124_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20435C22D0Ev,_ZThn152_N9S20435C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20435C22D1Ev,_ZThn152_N9S20435C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C22 = {  "S20435C22", // class name
  bases_S20435C22, 48,
  &(vtc_S20435C22[0]), // expected_vtbl_contents
  &(vtt_S20435C22[0]), // expected_vtt_contents
  ABISELECT(352,196), // object size
  NSPAIRA(_ZTI9S20435C22),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20435C22),118, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C22),79, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names38,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C20  : virtual S20435C21 , virtual S20435C8 , virtual S20435C22 {
  __tsi64 s20435c20f0;
  long s20435c20f1;
  ~S20435C20(); // tgen
  S20435C20(); // tgen
};
//SIG(-1 S20435C20) C1{ VBC2{ BC3{ v1}} VBC3 VBC4{ VBC5{ BC6{ m} FC7{ m} FC6} BC8{ VBC3 BC9{ BC10{ BC7 VBC11{ vd m FD} vd} BC12{ m Fc[7]} BC3 VBC7} VBC13{ BC7 VBC11 BC3 BC14{ BC15{ VBC3 vd} VBC7 vd FC12} vd Fi} BC12 vd Fi} BC14 BC16{ VBC17{ BC3 VBC6 vd Fi:23} BC14 BC18{ BC19{ BC7 BC5 VBC10 VBC3 Fp} BC5 BC11 BC14} BC15 vd v2} VBC18 vd v3} FL Fl}


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

static void Test_S20435C20()
{
  extern Class_Descriptor cd_S20435C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S20435C20, buf);
    S20435C20 *dp, &lv = *(dp=new (buf) S20435C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S20435C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C20)");
    check_base_class_offset(lv, (S20435C8*)(S20435C21*), 0, "S20435C20");
    check_base_class_offset(lv, (S20435C21*), 0, "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C18::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C18*)(S20435C22*), ABISELECT(248,140), "S20435C20");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C22*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(248,140), "S20435C20");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(248,140), "S20435C20");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C23*)(S20435C22*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(248,140), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*), ABISELECT(200,116), "S20435C20");
    /*is_ambiguous_... S20435C22::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C22*), ABISELECT(200,116), "S20435C20");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(32,16), "S20435C20");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(208,120), "S20435C20");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C19*), ABISELECT(208,120), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(208,120), "S20435C20");
    check_base_class_offset(lv, (S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(32,16), "S20435C20");
    check_base_class_offset(lv, (S20948C8*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(40,20), "S20435C20");
    check_base_class_offset(lv, (S20435C8*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(48,28), "S20435C20");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*)(S20435C18*)(S20435C22*), 0, "S20435C20");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C19*), 0, "S20435C20");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C22*), 0, "S20435C20");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C23*)(S20435C22*), 0, "S20435C20");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), 0, "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*), 0, "S20435C20");
    check_base_class_offset(lv, (S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(32,16), "S20435C20");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C19*), ABISELECT(240,136), "S20435C20");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C19*), ABISELECT(240,136), "S20435C20");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(248,140), "S20435C20");
    check_base_class_offset(lv, (S20435C15*)(S20435C19*), ABISELECT(248,140), "S20435C20");
    check_base_class_offset(lv, (S20435C19*)(S20435C18*)(S20435C22*), ABISELECT(240,136), "S20435C20");
    /*is_ambiguous_... S20435C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C18*)(S20435C22*), ABISELECT(56,32), "S20435C20");
    check_base_class_offset(lv, (S20435C18*)(S20435C22*), ABISELECT(32,16), "S20435C20");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C22*), ABISELECT(72,44), "S20435C20");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C22*), ABISELECT(72,44), "S20435C20");
    check_base_class_offset(lv, (S20435C8*)(S20435C9*), ABISELECT(272,156), "S20435C20");
    check_base_class_offset(lv, (S9624C39*)(S20435C9*), 0, "S20435C20");
    check_base_class_offset(lv, (S20435C9*)(S20435C23*)(S20435C22*), ABISELECT(272,156), "S20435C20");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(96,56), "S20435C20");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(96,56), "S20435C20");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(120,72), "S20435C20");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(121,73), "S20435C20");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(121,73), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*), ABISELECT(112,68), "S20435C20");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(112,68), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*), ABISELECT(112,68), "S20435C20");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(112,68), "S20435C20");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(136,80), "S20435C20");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(136,80), "S20435C20");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(144,84), "S20435C20");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(176,100), "S20435C20");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(176,100), "S20435C20");
    check_base_class_offset(lv, (S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(112,68), "S20435C20");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C23*)(S20435C22*), ABISELECT(192,112), "S20435C20");
    check_base_class_offset(lv, (S20435C23*)(S20435C22*), ABISELECT(96,56), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*), ABISELECT(296,168), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(297,169), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(297,169), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C13*)(S20435C12*), ABISELECT(288,164), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*), ABISELECT(312,176), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*), ABISELECT(312,176), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*), ABISELECT(320,180), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(352,196), "S20435C20");
    /*is_ambiguous_... S20435C20::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C12*), ABISELECT(352,196), "S20435C20");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C12*)(S20435C22*), ABISELECT(288,164), "S20435C20");
    check_base_class_offset(lv, (S20435C22*), ABISELECT(32,16), "S20435C20");
    check_field_offset(lv, s20435c20f0, ABISELECT(8,4), "S20435C20.s20435c20f0");
    check_field_offset(lv, s20435c20f1, ABISELECT(16,12), "S20435C20.s20435c20f1");
    test_class_info(&lv, &cd_S20435C20);
    dp->~S20435C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C20(Test_S20435C20, "S20435C20", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN9S20435C20C1Ev();
extern void _ZN9S20435C20D1Ev();
Name_Map name_map_S20435C20[] = {
  NSPAIR(_ZN9S20435C20C1Ev),
  NSPAIR(_ZN9S20435C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C21;
extern VTBL_ENTRY _ZTI9S20435C21[];
extern  VTBL_ENTRY _ZTV9S20435C21[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C19;
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C18;
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C9;
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C23;
extern VTBL_ENTRY _ZTI9S20435C23[];
extern  VTBL_ENTRY _ZTV9S20435C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C22;
extern VTBL_ENTRY _ZTI9S20435C22[];
extern  VTBL_ENTRY _ZTV9S20435C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C22[];
static Base_Class bases_S20435C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20435C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20435C21,    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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    ABISELECT(248,140), //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    ABISELECT(200,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(200,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
    50, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(208,120), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20435C4,    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
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C3,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(240,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
    16, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(240,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
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(248,140), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20435C19,    ABISELECT(240,136), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20435C18,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20435C8,    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
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C9,    ABISELECT(272,156), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20435C16,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(96,56), //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
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(121,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
    28, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(121,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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20435C13,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(144,84), //bcp->offset
    68, //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
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(176,100), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(112,68), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(192,112), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20435C23,    ABISELECT(96,56), //bcp->offset
    46, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(296,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(297,169), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C14,    ABISELECT(297,169), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C13,    ABISELECT(288,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    45, //immediately_derived
  0, 0},
  {&cd_S20435C14,    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
    49, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(320,180), //bcp->offset
    127, //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
    13, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(352,196), //bcp->offset
    131, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(288,164), //bcp->offset
    118, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S20435C22,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C20[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C20D1Ev();
extern void _ZN9S20435C20D0Ev();
extern void ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S20435C20D1Ev,_ZThn16_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S20435C20D0Ev,_ZThn16_N9S20435C20D0Ev)() __attribute__((weak));
extern void _ZN9S20435C222v3Ev();
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20435C20D1Ev,_ZTvn28_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20435C20D0Ev,_ZTvn28_n48_N9S20435C20D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20435C20D1Ev,_ZTvn40_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20435C20D0Ev,_ZTvn40_n48_N9S20435C20D0Ev)();
extern void _ZN9S20435C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C20D1Ev,_ZThn68_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C20D0Ev,_ZThn68_N9S20435C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N9S20435C20D1Ev,_ZTvn68_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20435C20D0Ev,_ZTvn68_n48_N9S20435C20D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20435C20D1Ev,_ZTvn84_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20435C20D0Ev,_ZTvn84_n48_N9S20435C20D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20435C20D1Ev,_ZTvn96_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20435C20D0Ev,_ZTvn96_n48_N9S20435C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn208_N9S20435C20D1Ev,_ZThn120_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn208_N9S20435C20D0Ev,_ZThn120_N9S20435C20D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn240_N9S20435C20D1Ev,_ZThn136_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn240_N9S20435C20D0Ev,_ZThn136_N9S20435C20D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C20D1Ev,_ZTvn4_n28_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C20D0Ev,_ZTvn4_n28_N9S20435C20D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn272_N9S20435C20D1Ev,_ZThn156_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn272_N9S20435C20D0Ev,_ZThn156_N9S20435C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn288_N9S20435C20D1Ev,_ZThn164_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn288_N9S20435C20D0Ev,_ZThn164_N9S20435C20D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20435C20D1Ev,_ZTvn16_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C20D0Ev,_ZTvn16_n16_N9S20435C20D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C20D1Ev,_ZTvn32_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C20D0Ev,_ZTvn32_n16_N9S20435C20D0Ev)();
static  VTBL_ENTRY vtc_S20435C20[] = {
  ABISELECT(288,164),
  ABISELECT(112,68),
  0,
  ABISELECT(272,156),
  ABISELECT(240,136),
  0,
  ABISELECT(208,120),
  ABISELECT(200,116),
  ABISELECT(32,16),
  ABISELECT(248,140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C20D0Ev,
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-16),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-72,-44),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C20D1Ev,_ZTvn28_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C20D0Ev,_ZTvn28_n48_N9S20435C20D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(176,100),
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C20D1Ev,_ZTvn40_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C20D0Ev,_ZTvn40_n48_N9S20435C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  ABISELECT(-112,-68),
  ABISELECT(96,52),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C20D1Ev,_ZTvn68_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C20D0Ev,_ZTvn68_n48_N9S20435C20D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C20D1Ev,_ZTvn84_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C20D0Ev,_ZTvn84_n48_N9S20435C20D0Ev),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C20D1Ev,_ZTvn96_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C20D0Ev,_ZTvn96_n48_N9S20435C20D0Ev),
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev),
  ABISELECT(-240,-136),
  0,
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev),
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C20D1Ev,_ZTvn4_n28_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C20D0Ev,_ZTvn4_n28_N9S20435C20D0Ev),
  ABISELECT(-272,-156),
  0,
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev),
  ABISELECT(-288,-164),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-288,-164),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C20D1Ev,_ZTvn16_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C20D0Ev,_ZTvn16_n16_N9S20435C20D0Ev),
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C20D1Ev,_ZTvn32_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C20D0Ev,_ZTvn32_n16_N9S20435C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C20[];
extern void _ZN9S20435C22D1Ev();
extern void _ZN9S20435C22D0Ev();
extern void _ZN9S20435C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C22__9S20435C20[] = {
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-16),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN9S20435C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
};
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C39S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C39S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20435C4D1Ev,_ZThn104_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20435C4D0Ev,_ZThn104_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn176_N8S20435C3D1Ev,_ZThn104_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn176_N8S20435C3D0Ev,_ZThn104_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C39S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C18D1Ev,_ZThn104_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C18D0Ev,_ZThn104_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn208_N9S20435C18D1Ev,_ZThn120_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn208_N9S20435C18D0Ev,_ZThn120_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C189S20435C22__9S20435C20[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C22__A1__9S20435C20[] = {
  ABISELECT(-72,-44),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C22__A1__9S20435C20[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C22__A1__9S20435C20[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C22__A1__9S20435C20[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C23D1Ev();
extern void _ZN9S20435C23D0Ev();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(176,100),
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C239S20435C22__A2__9S20435C20[] = {
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C20[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C20[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C239S20435C22__A2__9S20435C20[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C129S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C13D1Ev,_ZThn52_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20435C13D0Ev,_ZThn52_N9S20435C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C129S20435C239S20435C22__9S20435C20[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C12D1Ev,_ZThn52_N9S20435C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
extern void ABISELECT(_ZThn96_N9S20435C12D0Ev,_ZThn52_N9S20435C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C129S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C129S20435C239S20435C22__9S20435C20[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C129S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C20[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C239S20435C22__A4__9S20435C20[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C23D1Ev,_ZThn100_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C23D0Ev,_ZThn100_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-176,-100),
  0,
  ABISELECT(-272,-156),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C239S20435C22__9S20435C20[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__9S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C23D1Ev,_ZThn64_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C23D0Ev,_ZThn64_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A1__9S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C16__A2__9S20435C239S20435C22__9S20435C20[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C22__9S20435C20[] = {
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C22__9S20435C20[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn208_N9S20435C22D1Ev,_ZThn120_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn208_N9S20435C22D0Ev,_ZThn120_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C22__9S20435C20[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__A1__9S20435C22__9S20435C20[] = {
  ABISELECT(-72,-44),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev)();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C23__9S20435C22__9S20435C20[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(176,100),
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn240_N9S20435C22D1Ev,_ZThn140_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn240_N9S20435C22D0Ev,_ZThn140_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C22__9S20435C20[] = {
  ABISELECT(-240,-140),
  0,
  ABISELECT(-272,-156),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C23__9S20435C22__9S20435C20[] = {
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22__9S20435C20[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C23__A4__9S20435C22__9S20435C20[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn256_N9S20435C22D1Ev,_ZThn148_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn256_N9S20435C22D0Ev,_ZThn148_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C22__9S20435C20[] = {
  ABISELECT(-288,-164),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-256,-148),
  ABISELECT(-80,-44),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C22__9S20435C20[] = {
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C22__9S20435C20[] = {
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C20[] = {
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C20[] = {
  ABISELECT(-248,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C19__9S20435C20[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C19__9S20435C20[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19__9S20435C20[] = {
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C20[] = {
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A1__9S20435C20[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn96_N8S20435C4D1Ev,_ZThn52_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn96_N8S20435C4D0Ev,_ZThn52_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__A1__9S20435C20[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C20[] = {
  ABISELECT(-288,-164),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C12__A1__9S20435C20[] = {
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C12__A1__9S20435C20[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A1__9S20435C20[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C12__A1__9S20435C20[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C20[] = {
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C12__A5__9S20435C20[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A5__9S20435C20[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C12__A4__9S20435C20[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C12__A1__9S20435C20[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C12__A1__9S20435C20[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C12__A1__9S20435C20[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12__A1__9S20435C20[] = {
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
static  VTT_ENTRY vtt_S20435C20[] = {
  {&(_ZTV9S20435C20[14]),  14,139},
  {&(_ZTV9S20435C20[14]),  14,139},
  {&(_ZTV9S20435C20[107]),  107,139},
  {&(_ZTV9S20435C20[32]),  32,139},
  {&(_ZTV9S20435C20[90]),  90,139},
  {&(_ZTV9S20435C20[37]),  37,139},
  {&(_ZTV9S20435C20[99]),  99,139},
  {&(_ZTV9S20435C20[107]),  107,139},
  {&(_ZTV9S20435C20[43]),  43,139},
  {&(_ZTV9S20435C20[55]),  55,139},
  {&(_ZTV9S20435C20[115]),  115,139},
  {&(_ZTV9S20435C20[66]),  66,139},
  {&(_ZTV9S20435C20[66]),  66,139},
  {&(_ZTV9S20435C20[70]),  70,139},
  {&(_ZTV9S20435C20[77]),  77,139},
  {&(_ZTV9S20435C20[84]),  84,139},
  {&(_ZTV9S20435C20[125]),  125,139},
  {&(_ZTV9S20435C20[129]),  129,139},
  {&(_ZTV9S20435C20[136]),  136,139},
  {&(_tg__ZTV9S20435C22__9S20435C20[11]),  11,14},
  {&(_tg__ZTV9S20435C189S20435C22__9S20435C20[6]),  6,8},
  {&(_tg__ZTV8S20435C39S20435C189S20435C22__9S20435C20[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C39S20435C189S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C189S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C39S20435C189S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C189S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C189S20435C22__9S20435C20[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C22__A1__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C22__A1__9S20435C20[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C22__A1__9S20435C20[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C22__A1__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C239S20435C22__9S20435C20[9]),  9,13},
  {&(_tg__ZTV9S20435C159S20435C239S20435C22__A2__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C20[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C20[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C239S20435C22__A2__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C129S20435C239S20435C22__9S20435C20[6]),  6,8},
  {&(_tg__ZTV9S20435C139S20435C129S20435C239S20435C22__9S20435C20[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C239S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C129S20435C239S20435C22__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C129S20435C239S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C129S20435C239S20435C22__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C129S20435C239S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C20[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C239S20435C22__A4__9S20435C20[3]),  3,4},
  {&(_tg__ZTV8S20435C9__9S20435C239S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C239S20435C22__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C12__9S20435C239S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV9S20435C12__9S20435C239S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C239S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C12__A1__9S20435C239S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C16__A2__9S20435C239S20435C22__9S20435C20[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C22__9S20435C20[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C22__9S20435C20[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C15__A1__9S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C23__9S20435C22__9S20435C20[9]),  9,13},
  {&(_tg__ZTV8S20435C9__9S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C23__A4__9S20435C22__9S20435C20[4]),  4,7},
  {&(_tg__ZTV9S20435C12__A1__9S20435C22__9S20435C20[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C22__9S20435C20[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C22__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C19__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C20[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C20[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C20[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C19__9S20435C20[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C20[5]),  5,8},
  {&(_tg__ZTV8S20435C9__9S20435C20[3]),  3,6},
  {&(_tg__ZTV8S20435C4__A1__9S20435C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__A1__9S20435C20[3]),  3,5},
  {&(_tg__ZTV9S20435C12__A1__9S20435C20[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C12__A1__9S20435C20[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C12__A1__9S20435C20[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A1__9S20435C20[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C12__A1__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C20[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__A5__9S20435C20[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A5__9S20435C20[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C12__A4__9S20435C20[3]),  3,4},
  {&(_tg__ZTV8S20435C4__9S20435C12__A1__9S20435C20[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C12__A1__9S20435C20[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C12__A1__9S20435C20[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C12__A1__9S20435C20[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20435C20[];
extern  VTBL_ENTRY _ZTV9S20435C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C20[];
static VTBL_ENTRY alt_thunk_names39[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20435C22D0Ev,_ZThn148_N9S20435C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20435C22D1Ev,_ZThn148_N9S20435C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C22D0Ev,_ZThn140_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C22D1Ev,_ZThn140_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20435C22D0Ev,_ZThn120_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20435C22D1Ev,_ZThn120_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C23D0Ev,_ZThn64_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C23D1Ev,_ZThn64_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C23D0Ev,_ZThn100_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C23D1Ev,_ZThn100_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C12D0Ev,_ZThn52_N9S20435C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C12D1Ev,_ZThn52_N9S20435C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C13D0Ev,_ZThn52_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20435C13D1Ev,_ZThn52_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20435C18D0Ev,_ZThn120_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20435C18D1Ev,_ZThn120_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C18D0Ev,_ZThn104_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C18D1Ev,_ZThn104_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C3D0Ev,_ZThn104_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C3D1Ev,_ZThn104_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C4D0Ev,_ZThn52_N8S20435C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C4D0Ev,_ZThn104_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C4D1Ev,_ZThn52_N8S20435C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20435C4D1Ev,_ZThn104_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20435C20D0Ev,_ZThn156_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20435C20D1Ev,_ZThn156_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C20D0Ev,_ZThn136_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C20D1Ev,_ZThn136_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20435C20D0Ev,_ZThn120_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20435C20D1Ev,_ZThn120_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20435C20D0Ev,_ZThn164_N9S20435C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C20D0Ev,_ZThn68_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20435C20D1Ev,_ZThn164_N9S20435C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C20D1Ev,_ZThn68_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C20D0Ev,_ZThn16_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C20D1Ev,_ZThn16_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C20 = {  "S20435C20", // class name
  bases_S20435C20, 51,
  &(vtc_S20435C20[0]), // expected_vtbl_contents
  &(vtt_S20435C20[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI9S20435C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20435C20),139, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C20),98, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names39,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C25  : S9624C48 {
};
//SIG(-1 S20435C25) C1{ BC2{ m}}



static void Test_S20435C25()
{
  extern Class_Descriptor cd_S20435C25;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S20435C25, buf);
    S20435C25 &lv = *(new (buf) S20435C25());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S20435C25)");
    check2(__alignof__(lv), 1, "__alignof__(S20435C25)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20435C25");
    test_class_info(&lv, &cd_S20435C25);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C25(Test_S20435C25, "S20435C25", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20435C24  : S20435C25 , virtual S9624C48 , virtual S20435C19 {
  virtual void  v4(); // _ZN9S20435C242v4Ev
  ~S20435C24(); // tgen
  S20435C24(); // tgen
};
//SIG(-1 S20435C24) C1{ BC2{ BC3{ m}} VBC3 VBC4{ BC3 VBC5{ vd m FD} BC6{ v2} BC7{ BC8{ VBC6 vd} VBC3 vd FC9{ m Fc[7]}} vd Fi} v1}


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

static void Test_S20435C24()
{
  extern Class_Descriptor cd_S20435C24;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S20435C24, buf);
    S20435C24 *dp, &lv = *(dp=new (buf) S20435C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20435C24)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C24)");
    check_base_class_offset(lv, (S9624C48*)(S20435C25*), 0, "S20435C24");
    check_base_class_offset(lv, (S20435C25*), 0, "S20435C24");
    /*is_ambiguous_... S20435C24::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S20435C24");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C19*), ABISELECT(8,4), "S20435C24");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C19*), ABISELECT(16,8), "S20435C24");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C19*), ABISELECT(48,28), "S20435C24");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C19*), ABISELECT(16,8), "S20435C24");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C19*), 0, "S20435C24");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(24,12), "S20435C24");
    check_base_class_offset(lv, (S20435C15*)(S20435C19*), ABISELECT(24,12), "S20435C24");
    check_base_class_offset(lv, (S20435C19*), ABISELECT(16,8), "S20435C24");
    test_class_info(&lv, &cd_S20435C24);
    dp->~S20435C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C24(Test_S20435C24, "S20435C24", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN9S20435C24C1Ev();
extern void _ZN9S20435C24D1Ev();
Name_Map name_map_S20435C24[] = {
  NSPAIR(_ZN9S20435C24C1Ev),
  NSPAIR(_ZN9S20435C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C25;
extern VTBL_ENTRY _ZTI9S20435C25[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C19;
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
static Base_Class bases_S20435C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20435C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    29, //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
    9, //immediately_derived
  0, 1},
  {&cd_S20435C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20435C8,    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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20435C16,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20435C19,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C24[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C242v4Ev();
extern void _ZN9S20435C24D1Ev();
extern void _ZN9S20435C24D0Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C24D1Ev,_ZThn8_N9S20435C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C24D0Ev,_ZThn8_N9S20435C24D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C24D1Ev,_ZTvn4_n28_N9S20435C24D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C24D0Ev,_ZTvn4_n28_N9S20435C24D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev)();
extern void ABISELECT(_ZThn48_N9S20435C24D1Ev,_ZThn28_N9S20435C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev)();
extern void ABISELECT(_ZThn48_N9S20435C24D0Ev,_ZThn28_N9S20435C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20435C24[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20435C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C24D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C24D1Ev,_ZTvn4_n28_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C24D0Ev,_ZTvn4_n28_N9S20435C24D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C24[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C24[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C19__9S20435C24[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C19__9S20435C24[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C19__9S20435C24[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20435C19D1Ev,_ZThn20_N9S20435C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20435C19D0Ev,_ZThn20_N9S20435C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C19__9S20435C24[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19__9S20435C24[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C19__9S20435C24[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
static  VTT_ENTRY vtt_S20435C24[] = {
  {&(_ZTV9S20435C24[7]),  7,34},
  {&(_ZTV9S20435C24[18]),  18,34},
  {&(_ZTV9S20435C24[32]),  32,34},
  {&(_ZTV9S20435C24[26]),  26,34},
  {&(_ZTV9S20435C24[7]),  7,34},
  {&(_tg__ZTV9S20435C19__9S20435C24[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C24[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C24[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C19__9S20435C24[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C19__9S20435C24[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20435C19__9S20435C24[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C24[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C19__9S20435C24[3]),  3,4},
};
extern VTBL_ENTRY _ZTI9S20435C24[];
extern  VTBL_ENTRY _ZTV9S20435C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C24[];
static VTBL_ENTRY alt_thunk_names40[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C19D0Ev,_ZThn20_N9S20435C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20435C19D1Ev,_ZThn20_N9S20435C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20435C24D0Ev,_ZThn28_N9S20435C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20435C24D1Ev,_ZThn28_N9S20435C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C24D0Ev,_ZThn8_N9S20435C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C24D1Ev,_ZThn8_N9S20435C24D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C24 = {  "S20435C24", // class name
  bases_S20435C24, 10,
  &(vtc_S20435C24[0]), // expected_vtbl_contents
  &(vtt_S20435C24[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI9S20435C24),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20435C24),34, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C24),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names40,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C17  : S20948C8 , virtual S20435C18 , virtual S20435C20 , S20435C24 , S9624C19_nt {
  virtual  ~S20435C17(); // _ZN9S20435C17D2Ev
  S20435C17(); // tgen
};
//SIG(-1 S20435C17) C1{ BC2{ m Fc[7]} VBC3{ VBC4{ v1} BC5{ BC6{ BC7{ m} VBC8{ vd m FD} vd} BC2 BC4 VBC7} VBC9{ BC7 VBC8 BC4 BC10{ BC11{ VBC4 vd} VBC7 vd FC2} vd Fi} BC2 vd Fi} VBC12{ VBC13{ BC4} VBC4 VBC14{ VBC15{ BC16{ m} FC7 FC16} BC3 BC10 BC17{ VBC18{ BC4 VBC16 vd Fi:23} BC10 BC19{ BC20{ BC7 BC15 VBC6 VBC4 Fp} BC15 BC8 BC10} BC11 vd v2} VBC19 vd v3} FL Fl} BC21{ BC22{ BC7} VBC7 VBC9 v4} BC23{ m} vd}


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

static void Test_S20435C17()
{
  extern Class_Descriptor cd_S20435C17;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,64)];
    init_test(&cd_S20435C17, buf);
    S20435C17 *dp, &lv = *(dp=new (buf) S20435C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,252), "sizeof(S20435C17)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C17)");
    /*is_ambiguous_... S20435C17::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C18*), ABISELECT(112,64), "S20435C17");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C20::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C20*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C18::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C18*)(S20435C22*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C22*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(112,64), "S20435C17");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(112,64), "S20435C17");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C23*)(S20435C22*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(16,12), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(64,40), "S20435C17");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C19*), ABISELECT(64,40), "S20435C17");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(64,40), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(64,40), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(16,12), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C3*)(S20435C18*), ABISELECT(24,16), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C3*)(S20435C18*), ABISELECT(32,24), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*)(S20435C18*), ABISELECT(96,56), "S20435C17");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C19*), ABISELECT(96,56), "S20435C17");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(96,56), "S20435C17");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C22*), ABISELECT(96,56), "S20435C17");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(96,56), "S20435C17");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(96,56), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*), ABISELECT(96,56), "S20435C17");
    /*is_ambiguous_... S20435C24::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C24*), ABISELECT(96,56), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C3*)(S20435C18*), ABISELECT(16,12), "S20435C17");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C19*), ABISELECT(104,60), "S20435C17");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C19*), ABISELECT(104,60), "S20435C17");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(112,64), "S20435C17");
    check_base_class_offset(lv, (S20435C15*)(S20435C19*), ABISELECT(112,64), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C19*)(S20435C18*), ABISELECT(104,60), "S20435C17");
    check_base_class_offset(lv, (S20435C19*)(S20435C18*)(S20435C22*), ABISELECT(104,60), "S20435C17");
    check_base_class_offset(lv, (S20435C19*)(S20435C24*), ABISELECT(104,60), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C18*), ABISELECT(40,28), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C18*), ABISELECT(16,12), "S20435C17");
    check_base_class_offset(lv, (S20435C8*)(S20435C21*), ABISELECT(136,80), "S20435C17");
    check_base_class_offset(lv, (S20435C21*)(S20435C20*), ABISELECT(136,80), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*), ABISELECT(328,196), "S20435C17");
    /*is_ambiguous_... S20435C22::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C22*), ABISELECT(328,196), "S20435C17");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(160,96), "S20435C17");
    check_base_class_offset(lv, (S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(160,96), "S20435C17");
    check_base_class_offset(lv, (S20948C8*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(168,100), "S20435C17");
    check_base_class_offset(lv, (S20435C8*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(176,108), "S20435C17");
    check_base_class_offset(lv, (S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(160,96), "S20435C17");
    /*is_ambiguous_... S20435C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C18*)(S20435C22*), ABISELECT(184,112), "S20435C17");
    check_base_class_offset(lv, (S20435C18*)(S20435C22*), ABISELECT(160,96), "S20435C17");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C22*), ABISELECT(200,124), "S20435C17");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C22*), ABISELECT(200,124), "S20435C17");
    check_base_class_offset(lv, (S20435C8*)(S20435C9*), ABISELECT(336,200), "S20435C17");
    check_base_class_offset(lv, (S9624C39*)(S20435C9*), 0, "S20435C17");
    check_base_class_offset(lv, (S20435C9*)(S20435C23*)(S20435C22*), ABISELECT(336,200), "S20435C17");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(224,136), "S20435C17");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(224,136), "S20435C17");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(248,152), "S20435C17");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(249,153), "S20435C17");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(249,153), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*), ABISELECT(240,148), "S20435C17");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(240,148), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*), ABISELECT(240,148), "S20435C17");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(240,148), "S20435C17");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(264,160), "S20435C17");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(264,160), "S20435C17");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(272,164), "S20435C17");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(304,180), "S20435C17");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(304,180), "S20435C17");
    check_base_class_offset(lv, (S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(240,148), "S20435C17");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C23*)(S20435C22*), ABISELECT(320,192), "S20435C17");
    check_base_class_offset(lv, (S20435C23*)(S20435C22*), ABISELECT(224,136), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*), ABISELECT(360,212), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(361,213), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(361,213), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C13*)(S20435C12*), ABISELECT(352,208), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*), ABISELECT(376,220), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*), ABISELECT(376,220), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*), ABISELECT(384,224), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(416,240), "S20435C17");
    /*is_ambiguous_... S20435C17::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C12*), ABISELECT(416,240), "S20435C17");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C12*)(S20435C22*), ABISELECT(352,208), "S20435C17");
    check_base_class_offset(lv, (S20435C22*)(S20435C20*), ABISELECT(160,96), "S20435C17");
    check_base_class_offset(lv, (S20435C20*), ABISELECT(136,80), "S20435C17");
    check_base_class_offset(lv, (S9624C48*)(S20435C25*)(S20435C24*), 0, "S20435C17");
    check_base_class_offset(lv, (S20435C25*)(S20435C24*), 0, "S20435C17");
    check_base_class_offset(lv, (S20435C24*), 0, "S20435C17");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S20435C17");
    test_class_info(&lv, &cd_S20435C17);
    dp->~S20435C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C17(Test_S20435C17, "S20435C17", ABISELECT(432,252));

#else // __cplusplus

extern void _ZN9S20435C17C1Ev();
extern void _ZN9S20435C17D2Ev();
Name_Map name_map_S20435C17[] = {
  NSPAIR(_ZN9S20435C17C1Ev),
  NSPAIR(_ZN9S20435C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C19;
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C18;
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C21;
extern VTBL_ENTRY _ZTI9S20435C21[];
extern  VTBL_ENTRY _ZTV9S20435C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C18;
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C9;
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C23;
extern VTBL_ENTRY _ZTI9S20435C23[];
extern  VTBL_ENTRY _ZTV9S20435C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C22;
extern VTBL_ENTRY _ZTI9S20435C22[];
extern  VTBL_ENTRY _ZTV9S20435C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C22[];
extern Class_Descriptor cd_S20435C20;
extern VTBL_ENTRY _ZTI9S20435C20[];
extern  VTBL_ENTRY _ZTV9S20435C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C20[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C25;
extern VTBL_ENTRY _ZTI9S20435C25[];
extern Class_Descriptor cd_S20435C24;
extern VTBL_ENTRY _ZTI9S20435C24[];
extern  VTBL_ENTRY _ZTV9S20435C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C24[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S20435C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20435C8,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(64,40), //bcp->offset
    33, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20435C4,    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
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(32,24), //bcp->offset
    30, //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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    8, //immediately_derived
  0, 1},
  {&cd_S20435C3,    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
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20435C8,    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
    3, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(112,64), //bcp->offset
    48, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    38, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20435C19,    ABISELECT(104,60), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20435C18,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20435C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20435C21,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(328,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
    19, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(328,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
    58, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(160,96), //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
    21, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(168,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_S20435C8,    ABISELECT(176,108), //bcp->offset
    92, //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
    22, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20435C3,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20435C18,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(200,124), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(200,124), //bcp->offset
    95, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(336,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
    13, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20435C9,    ABISELECT(336,200), //bcp->offset
    144, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    119, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S20435C16,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(224,136), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(248,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(249,153), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C14,    ABISELECT(249,153), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    38, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    120, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20435C13,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(264,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(264,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(272,164), //bcp->offset
    125, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(304,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(304,180), //bcp->offset
    129, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(240,148), //bcp->offset
    116, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(320,192), //bcp->offset
    137, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20435C23,    ABISELECT(224,136), //bcp->offset
    103, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    78, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(360,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(361,213), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(361,213), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20435C13,    ABISELECT(352,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    123, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(376,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(376,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(384,224), //bcp->offset
    161, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(416,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(416,240), //bcp->offset
    165, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(352,208), //bcp->offset
    152, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    122, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    58, //immediately_derived
  0, 1},
  {&cd_S20435C22,    ABISELECT(160,96), //bcp->offset
    74, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    59, //immediately_derived
  0, 1},
  {&cd_S20435C20,    ABISELECT(136,80), //bcp->offset
    56, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20435C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S20435C24,    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_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20435C17[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C242v4Ev();
extern void _ZN9S20435C17D1Ev();
extern void _ZN9S20435C17D0Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C17D1Ev,_ZThn12_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C17D0Ev,_ZThn12_N9S20435C17D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20435C17D1Ev,_ZTv0_n12_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C17D1Ev,_ZThn40_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C17D0Ev,_ZTv0_n12_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S20435C17D0Ev,_ZThn40_N9S20435C17D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn104_N9S20435C17D1Ev,_ZThn60_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn104_N9S20435C17D0Ev,_ZThn60_N9S20435C17D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C17D1Ev,_ZTvn4_n28_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C17D0Ev,_ZTvn4_n28_N9S20435C17D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S20435C17D1Ev,_ZTv0_n60_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn136_N9S20435C17D1Ev,_ZThn80_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S20435C17D0Ev,_ZTv0_n60_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn136_N9S20435C17D0Ev,_ZThn80_N9S20435C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20435C17D1Ev,_ZTv0_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn160_N9S20435C17D1Ev,_ZThn96_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20435C17D0Ev,_ZTv0_n48_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn160_N9S20435C17D0Ev,_ZThn96_N9S20435C17D0Ev)() __attribute__((weak));
extern void _ZN9S20435C222v3Ev();
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20435C17D1Ev,_ZTvn28_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20435C17D0Ev,_ZTvn28_n48_N9S20435C17D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20435C17D1Ev,_ZTvn40_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20435C17D0Ev,_ZTvn40_n48_N9S20435C17D0Ev)();
extern void _ZN9S20435C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn240_N9S20435C17D1Ev,_ZThn148_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn240_N9S20435C17D0Ev,_ZThn148_N9S20435C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N9S20435C17D1Ev,_ZTvn68_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20435C17D0Ev,_ZTvn68_n48_N9S20435C17D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20435C17D1Ev,_ZTvn84_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20435C17D0Ev,_ZTvn84_n48_N9S20435C17D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20435C17D1Ev,_ZTvn96_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20435C17D0Ev,_ZTvn96_n48_N9S20435C17D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C17D1Ev,_ZTv0_n20_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S20435C17D1Ev,_ZThn200_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C17D0Ev,_ZTv0_n20_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn336_N9S20435C17D0Ev,_ZThn200_N9S20435C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn352_N9S20435C17D1Ev,_ZThn208_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn352_N9S20435C17D0Ev,_ZThn208_N9S20435C17D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20435C17D1Ev,_ZTvn16_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C17D0Ev,_ZTvn16_n16_N9S20435C17D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C17D1Ev,_ZTvn32_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C17D0Ev,_ZTvn32_n16_N9S20435C17D0Ev)();
static  VTBL_ENTRY vtc_S20435C17[] = {
  ABISELECT(352,208),
  ABISELECT(240,148),
  0,
  ABISELECT(336,200),
  ABISELECT(328,196),
  ABISELECT(160,96),
  ABISELECT(136,80),
  ABISELECT(136,80),
  ABISELECT(16,12),
  ABISELECT(112,64),
  ABISELECT(64,40),
  ABISELECT(104,60),
  ABISELECT(96,56),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20435C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C17D0Ev,
  ABISELECT(16,12),
  ABISELECT(-16,-12),
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C17D1Ev,_ZTv0_n12_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C17D0Ev,_ZTv0_n12_N9S20435C17D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C17D1Ev,_ZTvn4_n28_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C17D0Ev,_ZTvn4_n28_N9S20435C17D0Ev),
  ABISELECT(-136,-80),
  ABISELECT(216,128),
  ABISELECT(104,68),
  ABISELECT(-136,-80),
  ABISELECT(200,120),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-72,-40),
  ABISELECT(192,116),
  ABISELECT(24,16),
  ABISELECT(-24,-16),
  0,
  0,
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20435C17D1Ev,_ZTv0_n60_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20435C17D0Ev,_ZTv0_n60_N9S20435C17D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-160,-96),
  ABISELECT(192,112),
  ABISELECT(80,52),
  ABISELECT(-160,-96),
  ABISELECT(176,104),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-48,-32),
  ABISELECT(-64,-40),
  ABISELECT(-96,-56),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C17D1Ev,_ZTv0_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C17D0Ev,_ZTv0_n48_N9S20435C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-104,-68),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C17D1Ev,_ZTvn28_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C17D0Ev,_ZTvn28_n48_N9S20435C17D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(16,12),
  ABISELECT(-224,-136),
  ABISELECT(112,64),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  ABISELECT(-224,-136),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C17D1Ev,_ZTvn40_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C17D0Ev,_ZTvn40_n48_N9S20435C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  0,
  ABISELECT(-240,-148),
  ABISELECT(-176,-108),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev),
  ABISELECT(-272,-164),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C17D1Ev,_ZTvn68_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C17D0Ev,_ZTvn68_n48_N9S20435C17D0Ev),
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C17D1Ev,_ZTvn84_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C17D0Ev,_ZTvn84_n48_N9S20435C17D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C17D1Ev,_ZTvn96_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C17D0Ev,_ZTvn96_n48_N9S20435C17D0Ev),
  ABISELECT(-336,-200),
  0,
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C17D1Ev,_ZTv0_n20_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C17D0Ev,_ZTv0_n20_N9S20435C17D0Ev),
  ABISELECT(-256,-152),
  ABISELECT(-240,-144),
  ABISELECT(-112,-60),
  ABISELECT(-352,-208),
  ABISELECT(-288,-168),
  ABISELECT(-352,-208),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev),
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C17D1Ev,_ZTvn16_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C17D0Ev,_ZTvn16_n16_N9S20435C17D0Ev),
  ABISELECT(-320,-184),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-416,-240),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C17D1Ev,_ZTvn32_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C17D0Ev,_ZTvn32_n16_N9S20435C17D0Ev),
};
extern VTBL_ENTRY _ZTV9S20435C17[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C242v4Ev();
extern void _ZN9S20435C24D1Ev();
extern void _ZN9S20435C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C24__9S20435C17[] = {
  ABISELECT(112,64),
  ABISELECT(64,40),
  ABISELECT(104,60),
  ABISELECT(96,56),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20435C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C24D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev)();
extern void ABISELECT(_ZThn104_N9S20435C24D1Ev,_ZThn60_N9S20435C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev)();
extern void ABISELECT(_ZThn104_N9S20435C24D0Ev,_ZThn60_N9S20435C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C24__9S20435C17[] = {
  ABISELECT(-104,-60),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C24D1Ev,_ZThn40_N9S20435C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev)();
extern void ABISELECT(_ZThn64_N9S20435C24D0Ev,_ZThn40_N9S20435C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C24__9S20435C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C24D1Ev,_ZTvn4_n28_N9S20435C24D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C24D0Ev,_ZTvn4_n28_N9S20435C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C24__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C24D1Ev,_ZTvn4_n28_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C24D0Ev,_ZTvn4_n28_N9S20435C24D0Ev),
};
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C18__9S20435C17[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C39S20435C18__9S20435C17[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C39S20435C18__9S20435C17[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20435C4D1Ev,_ZThn28_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20435C4D0Ev,_ZThn28_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C18__9S20435C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20435C3D1Ev,_ZThn28_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S20435C3D0Ev,_ZThn28_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C39S20435C18__9S20435C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C18__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S20435C18D1Ev,_ZThn28_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn48_N9S20435C18D0Ev,_ZThn28_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C18__9S20435C17[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn88_N9S20435C18D1Ev,_ZThn48_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn88_N9S20435C18D0Ev,_ZThn48_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C18__9S20435C17[] = {
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C17[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C19__9S20435C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C19__9S20435C17[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C20D1Ev();
extern void _ZN9S20435C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C20__9S20435C17[] = {
  ABISELECT(216,128),
  ABISELECT(104,68),
  ABISELECT(-136,-80),
  ABISELECT(200,120),
  ABISELECT(-32,-20),
  ABISELECT(-40,-24),
  ABISELECT(-72,-40),
  ABISELECT(192,116),
  ABISELECT(24,16),
  ABISELECT(-24,-16),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C20D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C20D1Ev,_ZTvn4_n28_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C20D0Ev,_ZTvn4_n28_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C20__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C20D1Ev,_ZTvn4_n28_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C20D0Ev,_ZTvn4_n28_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20435C20D1Ev,_ZThn16_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20435C20D0Ev,_ZThn16_N9S20435C20D0Ev)() __attribute__((weak));
extern void _ZN9S20435C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C22__9S20435C20__9S20435C17[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(192,112),
  ABISELECT(80,52),
  ABISELECT(-160,-96),
  ABISELECT(176,104),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-48,-32),
  ABISELECT(-64,-40),
  ABISELECT(-96,-56),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C20__9S20435C17[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C88S20435C39S20435C189S20435C22__A2__9S20435C20__9S20435C17[] = {
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C20__9S20435C17[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20435C20D1Ev,_ZTvn28_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20435C20D0Ev,_ZTvn28_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C22__A1__9S20435C20__9S20435C17[] = {
  ABISELECT(-104,-68),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C20D1Ev,_ZTvn28_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C20D0Ev,_ZTvn28_n48_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20435C20D1Ev,_ZTvn40_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20435C20D0Ev,_ZTvn40_n48_N9S20435C20D0Ev)();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C239S20435C22__9S20435C20__9S20435C17[] = {
  ABISELECT(-160,-96),
  ABISELECT(16,12),
  ABISELECT(-224,-136),
  ABISELECT(112,64),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C20D1Ev,_ZTvn40_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C20D0Ev,_ZTvn40_n48_N9S20435C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn200_N9S20435C20D1Ev,_ZThn120_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn200_N9S20435C20D0Ev,_ZThn120_N9S20435C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C20__9S20435C17[] = {
  ABISELECT(-200,-120),
  0,
  ABISELECT(-336,-200),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S20435C20D1Ev,_ZThn68_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S20435C20D0Ev,_ZThn68_N9S20435C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20__9S20435C17[] = {
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  0,
  ABISELECT(-104,-68),
  ABISELECT(-176,-108),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20435C20D1Ev,_ZTvn68_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20435C20D0Ev,_ZTvn68_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C129S20435C239S20435C22__A1__9S20435C20__9S20435C17[] = {
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C20D1Ev,_ZTvn68_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C20D0Ev,_ZTvn68_n48_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20435C20D1Ev,_ZTvn84_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20435C20D0Ev,_ZTvn84_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20__9S20435C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C20D1Ev,_ZTvn84_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C20D0Ev,_ZTvn84_n48_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20435C20D1Ev,_ZTvn96_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20435C20D0Ev,_ZTvn96_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C20__9S20435C17[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C20D1Ev,_ZTvn96_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C20D0Ev,_ZTvn96_n48_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn216_N9S20435C20D1Ev,_ZThn128_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn216_N9S20435C20D0Ev,_ZThn128_N9S20435C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C20__9S20435C17[] = {
  ABISELECT(-256,-152),
  ABISELECT(-240,-144),
  ABISELECT(-112,-60),
  ABISELECT(-216,-128),
  ABISELECT(-288,-168),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20435C20D1Ev,_ZTvn16_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C20D0Ev,_ZTvn16_n16_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C20__9S20435C17[] = {
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C20D1Ev,_ZTvn16_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C20D0Ev,_ZTvn16_n16_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C20D1Ev,_ZTvn32_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C20D0Ev,_ZTvn32_n16_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C20__9S20435C17[] = {
  ABISELECT(-320,-184),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-280,-160),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C20D1Ev,_ZTvn32_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C20D0Ev,_ZTvn32_n16_N9S20435C20D0Ev),
};
extern void _ZN9S20435C22D1Ev();
extern void _ZN9S20435C22D0Ev();
extern void _ZN9S20435C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C22__9S20435C17[] = {
  ABISELECT(192,112),
  ABISELECT(80,52),
  ABISELECT(-160,-96),
  ABISELECT(176,104),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-48,-32),
  ABISELECT(-64,-40),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN9S20435C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
};
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(-56,-36),
  ABISELECT(-48,-32),
  ABISELECT(-64,-40),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C39S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(-64,-40),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C39S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C39S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C189S20435C22__A1__9S20435C17[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C22__A1__9S20435C17[] = {
  ABISELECT(-104,-68),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C22__A1__9S20435C17[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C22__A1__9S20435C17[] = {
  0,
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C22__A1__9S20435C17[] = {
  0,
  ABISELECT(88,60),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C23D1Ev();
extern void _ZN9S20435C23D0Ev();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-160,-96),
  ABISELECT(16,12),
  ABISELECT(-224,-136),
  ABISELECT(112,64),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C239S20435C22__A2__9S20435C17[] = {
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C17[] = {
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C17[] = {
  0,
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C239S20435C22__A2__9S20435C17[] = {
  0,
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  0,
  0,
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C129S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-128,-84),
  0,
  0,
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C129S20435C239S20435C22__9S20435C17[] = {
  0,
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[] = {
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[] = {
  0,
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[] = {
  0,
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C129S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C129S20435C239S20435C22__9S20435C17[] = {
  0,
  ABISELECT(128,84),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C129S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C17[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C239S20435C22__A4__9S20435C17[] = {
  0,
  ABISELECT(208,128),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C23D1Ev,_ZThn64_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C23D0Ev,_ZThn64_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-112,-64),
  0,
  ABISELECT(-336,-200),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C239S20435C22__9S20435C17[] = {
  0,
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__9S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  0,
  ABISELECT(-16,-12),
  ABISELECT(-176,-108),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(160,96),
  ABISELECT(160,96),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A1__9S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C16__A2__9S20435C239S20435C22__9S20435C17[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C22__9S20435C17[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C22__9S20435C17[] = {
  ABISELECT(96,56),
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C22__9S20435C17[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__A1__9S20435C22__9S20435C17[] = {
  ABISELECT(-104,-68),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev)();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C23__9S20435C22__9S20435C17[] = {
  ABISELECT(-160,-96),
  ABISELECT(16,12),
  ABISELECT(-224,-136),
  ABISELECT(112,64),
  ABISELECT(-128,-80),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C22__9S20435C17[] = {
  ABISELECT(-176,-104),
  0,
  ABISELECT(-336,-200),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C23__9S20435C22__9S20435C17[] = {
  ABISELECT(-144,-92),
  ABISELECT(-128,-84),
  0,
  ABISELECT(-80,-52),
  ABISELECT(-176,-108),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22__9S20435C17[] = {
  ABISELECT(-208,-124),
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C23__A4__9S20435C22__9S20435C17[] = {
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn192_N9S20435C22D1Ev,_ZThn112_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn192_N9S20435C22D0Ev,_ZThn112_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C22__9S20435C17[] = {
  ABISELECT(-256,-152),
  ABISELECT(-240,-144),
  ABISELECT(-112,-60),
  ABISELECT(-192,-112),
  ABISELECT(-288,-168),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C22__9S20435C17[] = {
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C22__9S20435C17[] = {
  ABISELECT(-320,-184),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-256,-144),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C17[] = {
  ABISELECT(-336,-200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A2__9S20435C17[] = {
  ABISELECT(-176,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__A2__9S20435C17[] = {
  ABISELECT(176,108),
  ABISELECT(176,108),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C17[] = {
  ABISELECT(-256,-152),
  ABISELECT(-240,-144),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-288,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C12__A1__9S20435C17[] = {
  ABISELECT(-240,-144),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-288,-168),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C12__A1__9S20435C17[] = {
  ABISELECT(112,60),
  ABISELECT(-176,-108),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A1__9S20435C17[] = {
  ABISELECT(288,168),
  ABISELECT(288,168),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C12__A1__9S20435C17[] = {
  0,
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C17[] = {
  ABISELECT(-320,-184),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C12__A5__9S20435C17[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A5__9S20435C17[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C12__A4__9S20435C17[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C12__A1__9S20435C17[] = {
  ABISELECT(112,60),
  ABISELECT(-176,-108),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C12__A1__9S20435C17[] = {
  ABISELECT(288,168),
  ABISELECT(288,168),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C12__A1__9S20435C17[] = {
  0,
  ABISELECT(240,144),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12__A1__9S20435C17[] = {
  ABISELECT(-320,-184),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
static  VTT_ENTRY vtt_S20435C17[] = {
  {&(_ZTV9S20435C17[16]),  16,173},
  {&(_tg__ZTV9S20435C24__9S20435C17[7]),  7,11},
  {&(_tg__ZTV9S20435C19__9S20435C24__9S20435C17[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__9S20435C24__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C24__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C24__9S20435C17[5]),  5,8},
  {&(_ZTV9S20435C17[28]),  28,173},
  {&(_ZTV9S20435C17[53]),  53,173},
  {&(_ZTV9S20435C17[36]),  36,173},
  {&(_ZTV9S20435C17[32]),  32,173},
  {&(_ZTV9S20435C17[45]),  45,173},
  {&(_ZTV9S20435C17[53]),  53,173},
  {&(_ZTV9S20435C17[71]),  71,173},
  {&(_ZTV9S20435C17[71]),  71,173},
  {&(_ZTV9S20435C17[89]),  89,173},
  {&(_ZTV9S20435C17[94]),  94,173},
  {&(_ZTV9S20435C17[100]),  100,173},
  {&(_ZTV9S20435C17[112]),  112,173},
  {&(_ZTV9S20435C17[149]),  149,173},
  {&(_ZTV9S20435C17[123]),  123,173},
  {&(_ZTV9S20435C17[123]),  123,173},
  {&(_ZTV9S20435C17[127]),  127,173},
  {&(_ZTV9S20435C17[134]),  134,173},
  {&(_ZTV9S20435C17[141]),  141,173},
  {&(_ZTV9S20435C17[159]),  159,173},
  {&(_ZTV9S20435C17[163]),  163,173},
  {&(_ZTV9S20435C17[170]),  170,173},
  {&(_tg__ZTV9S20435C18__9S20435C17[6]),  6,8},
  {&(_tg__ZTV8S20435C39S20435C18__9S20435C17[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C39S20435C18__9S20435C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C18__9S20435C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C39S20435C18__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18__9S20435C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C18__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C18__9S20435C17[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C19__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C17[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__9S20435C17[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C19__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C15__9S20435C19__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C20__9S20435C17[14]),  14,17},
  {&(_tg__ZTV9S20435C20__9S20435C17[14]),  14,17},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C20__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C22__9S20435C20__9S20435C17[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20435C20__9S20435C17[3]),  3,5},
  {&(_tg__ZTV8S20435C88S20435C39S20435C189S20435C22__A2__9S20435C20__9S20435C17[2]),  2,3},
  {&(_tg__ZTV9S20435C19__9S20435C20__9S20435C17[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C20__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C22__A1__9S20435C20__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C239S20435C22__9S20435C20__9S20435C17[9]),  9,13},
  {&(_tg__ZTV8S20435C9__9S20435C20__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20__9S20435C17[7]),  7,9},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20__9S20435C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C129S20435C239S20435C22__A1__9S20435C20__9S20435C17[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C20__9S20435C17[4]),  4,7},
  {&(_tg__ZTV9S20435C12__A1__9S20435C20__9S20435C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C20__9S20435C17[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C20__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C22__9S20435C17[11]),  11,14},
  {&(_tg__ZTV9S20435C189S20435C22__A1__9S20435C17[6]),  6,8},
  {&(_tg__ZTV8S20435C39S20435C189S20435C22__A1__9S20435C17[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C39S20435C189S20435C22__A1__9S20435C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C189S20435C22__A1__9S20435C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C39S20435C189S20435C22__A1__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__A1__9S20435C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C189S20435C22__A1__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C189S20435C22__A1__9S20435C17[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__A1__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C22__A1__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C22__A1__9S20435C17[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C22__A1__9S20435C17[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C22__A1__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C239S20435C22__9S20435C17[9]),  9,13},
  {&(_tg__ZTV9S20435C159S20435C239S20435C22__A2__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C17[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C239S20435C22__A2__9S20435C17[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C239S20435C22__A2__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C129S20435C239S20435C22__9S20435C17[6]),  6,8},
  {&(_tg__ZTV9S20435C139S20435C129S20435C239S20435C22__9S20435C17[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C239S20435C22__9S20435C17[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C129S20435C239S20435C22__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C129S20435C239S20435C22__9S20435C17[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C129S20435C239S20435C22__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C129S20435C239S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C17[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C239S20435C22__A4__9S20435C17[3]),  3,4},
  {&(_tg__ZTV8S20435C9__9S20435C239S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C239S20435C22__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C12__9S20435C239S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV9S20435C12__9S20435C239S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20435C239S20435C22__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C12__A1__9S20435C239S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C16__A2__9S20435C239S20435C22__9S20435C17[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C22__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C22__9S20435C17[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C15__A1__9S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C23__9S20435C22__9S20435C17[9]),  9,13},
  {&(_tg__ZTV8S20435C9__9S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C23__A4__9S20435C22__9S20435C17[4]),  4,7},
  {&(_tg__ZTV9S20435C12__A1__9S20435C22__9S20435C17[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C22__9S20435C17[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C22__9S20435C17[5]),  5,8},
  {&(_tg__ZTV8S20435C9__9S20435C17[3]),  3,6},
  {&(_tg__ZTV8S20435C4__A2__9S20435C17[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__A2__9S20435C17[3]),  3,5},
  {&(_tg__ZTV9S20435C12__A1__9S20435C17[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C12__A1__9S20435C17[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C12__A1__9S20435C17[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A1__9S20435C17[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C12__A1__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C17[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__A5__9S20435C17[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A5__9S20435C17[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C12__A4__9S20435C17[3]),  3,4},
  {&(_tg__ZTV8S20435C4__9S20435C12__A1__9S20435C17[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C12__A1__9S20435C17[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C12__A1__9S20435C17[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C12__A1__9S20435C17[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20435C17[];
extern  VTBL_ENTRY _ZTV9S20435C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C17[];
static VTBL_ENTRY alt_thunk_names41[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20435C22D0Ev,_ZThn112_N9S20435C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20435C22D1Ev,_ZThn112_N9S20435C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C23D0Ev,_ZThn64_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C23D1Ev,_ZThn64_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20435C20D0Ev,_ZThn128_N9S20435C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C20D0Ev,_ZThn68_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20435C20D1Ev,_ZThn128_N9S20435C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C20D1Ev,_ZThn68_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20435C20D0Ev,_ZThn120_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20435C20D1Ev,_ZThn120_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20435C20D0Ev,_ZThn16_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20435C20D1Ev,_ZThn16_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20435C18D0Ev,_ZThn48_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20435C18D1Ev,_ZThn48_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20435C18D0Ev,_ZThn28_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20435C18D1Ev,_ZThn28_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C3D0Ev,_ZThn28_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C3D1Ev,_ZThn28_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C4D0Ev,_ZThn28_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20435C4D1Ev,_ZThn28_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20435C24D0Ev,_ZThn40_N9S20435C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20435C24D1Ev,_ZThn40_N9S20435C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C24D0Ev,_ZThn60_N9S20435C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C24D1Ev,_ZThn60_N9S20435C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C17D0Ev,_ZTv0_n20_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20435C17D0Ev,_ZThn200_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C17D1Ev,_ZTv0_n20_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20435C17D1Ev,_ZThn200_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20435C17D0Ev,_ZThn208_N9S20435C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C17D0Ev,_ZThn148_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20435C17D1Ev,_ZThn208_N9S20435C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C17D1Ev,_ZThn148_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C17D0Ev,_ZTv0_n48_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20435C17D0Ev,_ZThn96_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C17D1Ev,_ZTv0_n48_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S20435C17D1Ev,_ZThn96_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20435C17D0Ev,_ZTv0_n60_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20435C17D0Ev,_ZThn80_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20435C17D1Ev,_ZTv0_n60_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S20435C17D1Ev,_ZThn80_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C17D0Ev,_ZTv0_n12_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20435C17D0Ev,_ZThn40_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C17D1Ev,_ZTv0_n12_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20435C17D1Ev,_ZThn40_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C17D0Ev,_ZThn60_N9S20435C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C17D0Ev,_ZThn12_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C17D1Ev,_ZThn60_N9S20435C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C17D1Ev,_ZThn12_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C17 = {  "S20435C17", // class name
  bases_S20435C17, 64,
  &(vtc_S20435C17[0]), // expected_vtbl_contents
  &(vtt_S20435C17[0]), // expected_vtt_contents
  ABISELECT(432,252), // object size
  NSPAIRA(_ZTI9S20435C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20435C17),173, //virtual function table var
  16, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20435C17),134, //virtual table table var
  38, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names41,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20435C1  : virtual S20435C2 , S20435C17 {
  int s20435c1f0[10];
  ~S20435C1(); // tgen
  S20435C1(); // tgen
};
//SIG(1 S20435C1) C1{ VBC2{ VBC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC8{ v1} VBC5} VBC9{ BC8 VBC10{ m} vd Fi:23} VBC8 BC11{ BC7 VBC4 VBC5 vd} BC12{ BC13{ BC5 BC14{ BC10 FC5 FC10} VBC4 VBC8 Fp} BC14 BC6 BC15{ BC16{ VBC8 vd} VBC5 vd FC7}} vd} BC17{ BC7 VBC18{ VBC8 BC3 VBC19{ BC5 VBC6 BC8 BC15 vd Fi} BC7 vd Fi} VBC20{ VBC21{ BC8} VBC8 VBC22{ VBC14 BC18 BC15 BC23{ VBC9 BC15 BC12 BC16 vd v2} VBC12 vd v3} FL Fl} BC24{ BC25{ BC5} VBC5 VBC19 v4} BC26{ m} vd} Fi[10]}


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

static void Test_S20435C1()
{
  extern Class_Descriptor cd_S20435C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(38,91)];
    init_test(&cd_S20435C1, buf);
    S20435C1 *dp, &lv = *(dp=new (buf) S20435C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(592,360), "sizeof(S20435C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20435C1)");
    /*is_ambiguous_... S20435C1::S20435C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*), ABISELECT(160,108), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C3 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*), ABISELECT(192,124), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*), ABISELECT(192,124), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(192,124), "S20435C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C19*), ABISELECT(192,124), "S20435C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(192,124), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C3 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C3*), ABISELECT(160,108), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C3 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C3*), ABISELECT(168,112), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C3 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C3*), ABISELECT(176,120), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C11*)(S20435C2*), ABISELECT(224,140), "S20435C1");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*)(S20435C2*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*)(S20435C18*), ABISELECT(224,140), "S20435C1");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C19*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C22*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(224,140), "S20435C1");
    check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C15*)(S20435C12*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C24::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C24*)(S20435C17*), ABISELECT(224,140), "S20435C1");
    check_base_class_offset(lv, (S20435C3*)(S20435C2*), ABISELECT(160,108), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C9*), ABISELECT(224,140), "S20435C1");
    check_base_class_offset(lv, (S9624C39*)(S20435C9*), 0, "S20435C1");
    check_base_class_offset(lv, (S20435C9*)(S20435C2*), ABISELECT(224,140), "S20435C1");
    check_base_class_offset(lv, (S20435C9*)(S20435C23*)(S20435C22*), ABISELECT(224,140), "S20435C1");
    /*is_ambiguous_... S20435C2::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C2*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*)(S20435C2*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*)(S20435C2*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C18*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C20::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C20*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C18::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C18*)(S20435C22*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C22*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C23*)(S20435C22*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C13*)(S20435C12*), ABISELECT(144,96), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20948C8*)(S20435C11*)(S20435C2*), ABISELECT(72,56), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*), ABISELECT(64,52), "S20435C1");
    check_base_class_offset(lv, (S20435C4*)(S20435C11*)(S20435C2*), ABISELECT(64,52), "S20435C1");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*)(S20435C2*), ABISELECT(64,52), "S20435C1");
    check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(64,52), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C13*)(S20435C12*), ABISELECT(64,52), "S20435C1");
    check_base_class_offset(lv, (S20435C11*)(S20435C2*), ABISELECT(64,52), "S20435C1");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*)(S20435C2*), ABISELECT(88,68), "S20435C1");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*)(S20435C2*), ABISELECT(89,69), "S20435C1");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*)(S20435C2*), ABISELECT(89,69), "S20435C1");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*)(S20435C2*), ABISELECT(80,64), "S20435C1");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*)(S20435C2*), ABISELECT(104,76), "S20435C1");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*)(S20435C2*), ABISELECT(104,76), "S20435C1");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*)(S20435C2*), ABISELECT(112,80), "S20435C1");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*)(S20435C2*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*)(S20435C2*), ABISELECT(144,96), "S20435C1");
    check_base_class_offset(lv, (S20435C12*)(S20435C2*), ABISELECT(80,64), "S20435C1");
    check_base_class_offset(lv, (S20435C2*), ABISELECT(64,52), "S20435C1");
    /*is_ambiguous_... S20435C17::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C17*), ABISELECT(8,4), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(240,148), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C4*)(S20435C3*)(S20435C18*), ABISELECT(240,148), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C3*)(S20435C18*), ABISELECT(248,152), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C3*)(S20435C18*), ABISELECT(256,160), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C3*)(S20435C18*), ABISELECT(240,148), "S20435C1");
    /*is_ambiguous_... S20435C19::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C19*), ABISELECT(280,176), "S20435C1");
    /*is_ambiguous_... S20435C19::S20435C8 */ AMB_check_base_class_offset(lv, (S20435C8*)(S20435C19*), ABISELECT(280,176), "S20435C1");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C19*), ABISELECT(288,180), "S20435C1");
    check_base_class_offset(lv, (S20435C15*)(S20435C19*), ABISELECT(288,180), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C19*)(S20435C18*), ABISELECT(280,176), "S20435C1");
    check_base_class_offset(lv, (S20435C19*)(S20435C18*)(S20435C22*), ABISELECT(280,176), "S20435C1");
    check_base_class_offset(lv, (S20435C19*)(S20435C24*)(S20435C17*), ABISELECT(280,176), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C18*), ABISELECT(264,164), "S20435C1");
    /*is_ambiguous_... S20435C17::S20435C18 */ AMB_check_base_class_offset(lv, (S20435C18*)(S20435C17*), ABISELECT(240,148), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C21*), ABISELECT(312,196), "S20435C1");
    check_base_class_offset(lv, (S20435C21*)(S20435C20*), ABISELECT(312,196), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*), ABISELECT(504,312), "S20435C1");
    /*is_ambiguous_... S20435C22::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C22*), ABISELECT(504,312), "S20435C1");
    check_base_class_offset(lv, (S9624C48*)(S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(336,212), "S20435C1");
    check_base_class_offset(lv, (S20435C4*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(336,212), "S20435C1");
    check_base_class_offset(lv, (S20948C8*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(344,216), "S20435C1");
    check_base_class_offset(lv, (S20435C8*)(S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(352,224), "S20435C1");
    check_base_class_offset(lv, (S20435C3*)(S20435C18*)(S20435C22*), ABISELECT(336,212), "S20435C1");
    /*is_ambiguous_... S20435C18::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20435C18*)(S20435C22*), ABISELECT(360,228), "S20435C1");
    check_base_class_offset(lv, (S20435C18*)(S20435C22*), ABISELECT(336,212), "S20435C1");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C22*), ABISELECT(376,240), "S20435C1");
    /*is_ambiguous_... S20435C22::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C22*), ABISELECT(376,240), "S20435C1");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(400,252), "S20435C1");
    /*is_ambiguous_... S20435C23::S20435C15 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C23*)(S20435C22*), ABISELECT(400,252), "S20435C1");
    /*is_ambiguous_... S20435C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(424,268), "S20435C1");
    check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(425,269), "S20435C1");
    check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(425,269), "S20435C1");
    check_base_class_offset(lv, (S20435C13*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(416,264), "S20435C1");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(440,276), "S20435C1");
    /*is_ambiguous_... S20435C12::S20435C14 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(440,276), "S20435C1");
    /*is_ambiguous_... S20435C12::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(448,280), "S20435C1");
    check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(480,296), "S20435C1");
    check_base_class_offset(lv, (S20435C15*)(S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(480,296), "S20435C1");
    check_base_class_offset(lv, (S20435C12*)(S20435C23*)(S20435C22*), ABISELECT(416,264), "S20435C1");
    /*is_ambiguous_... S20435C23::S20435C16 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C23*)(S20435C22*), ABISELECT(496,308), "S20435C1");
    check_base_class_offset(lv, (S20435C23*)(S20435C22*), ABISELECT(400,252), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20435C13*)(S20435C12*), ABISELECT(520,320), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(521,321), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C13*)(S20435C12*), ABISELECT(521,321), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C13*)(S20435C12*), ABISELECT(512,316), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20435C14*)(S20435C12*), ABISELECT(536,328), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C14*)(S20435C12*), ABISELECT(536,328), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20435C12*), ABISELECT(544,332), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C16*)(S20435C15*)(S20435C12*), ABISELECT(576,348), "S20435C1");
    /*is_ambiguous_... S20435C1::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C15*)(S20435C12*), ABISELECT(576,348), "S20435C1");
    /*is_ambiguous_... S20435C22::S20435C12 */ AMB_check_base_class_offset(lv, (S20435C12*)(S20435C22*), ABISELECT(512,316), "S20435C1");
    check_base_class_offset(lv, (S20435C22*)(S20435C20*), ABISELECT(336,212), "S20435C1");
    check_base_class_offset(lv, (S20435C20*)(S20435C17*), ABISELECT(312,196), "S20435C1");
    check_base_class_offset(lv, (S9624C48*)(S20435C25*)(S20435C24*)(S20435C17*), 0, "S20435C1");
    check_base_class_offset(lv, (S20435C25*)(S20435C24*)(S20435C17*), 0, "S20435C1");
    check_base_class_offset(lv, (S20435C24*)(S20435C17*), 0, "S20435C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20435C17*), 0, "S20435C1");
    check_base_class_offset(lv, (S20435C17*), 0, "S20435C1");
    check_field_offset(lv, s20435c1f0, ABISELECT(16,12), "S20435C1.s20435c1f0");
    test_class_info(&lv, &cd_S20435C1);
    dp->~S20435C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20435C1(Test_S20435C1, "S20435C1", ABISELECT(592,360));

#else // __cplusplus

extern void _ZN8S20435C1C1Ev();
extern void _ZN8S20435C1D1Ev();
Name_Map name_map_S20435C1[] = {
  NSPAIR(_ZN8S20435C1C1Ev),
  NSPAIR(_ZN8S20435C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C9;
extern VTBL_ENTRY _ZTI8S20435C9[];
extern  VTBL_ENTRY _ZTV8S20435C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C9[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20435C11;
extern VTBL_ENTRY _ZTI9S20435C11[];
extern  VTBL_ENTRY _ZTV9S20435C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C2;
extern VTBL_ENTRY _ZTI8S20435C2[];
extern  VTBL_ENTRY _ZTV8S20435C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C2[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C19;
extern VTBL_ENTRY _ZTI9S20435C19[];
extern  VTBL_ENTRY _ZTV9S20435C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C19[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C18;
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C21;
extern VTBL_ENTRY _ZTI9S20435C21[];
extern  VTBL_ENTRY _ZTV9S20435C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C4;
extern VTBL_ENTRY _ZTI8S20435C4[];
extern  VTBL_ENTRY _ZTV8S20435C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C8;
extern VTBL_ENTRY _ZTI8S20435C8[];
extern  VTBL_ENTRY _ZTV8S20435C8[];
extern Class_Descriptor cd_S20435C3;
extern VTBL_ENTRY _ZTI8S20435C3[];
extern  VTBL_ENTRY _ZTV8S20435C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20435C18;
extern VTBL_ENTRY _ZTI9S20435C18[];
extern  VTBL_ENTRY _ZTV9S20435C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C18[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C23;
extern VTBL_ENTRY _ZTI9S20435C23[];
extern  VTBL_ENTRY _ZTV9S20435C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C23[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20435C13;
extern VTBL_ENTRY _ZTI9S20435C13[];
extern  VTBL_ENTRY _ZTV9S20435C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20435C14;
extern VTBL_ENTRY _ZTI9S20435C14[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20435C16;
extern VTBL_ENTRY _ZTI9S20435C16[];
extern  VTBL_ENTRY _ZTV9S20435C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C16[];
extern Class_Descriptor cd_S20435C15;
extern VTBL_ENTRY _ZTI9S20435C15[];
extern  VTBL_ENTRY _ZTV9S20435C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C15[];
extern Class_Descriptor cd_S20435C12;
extern VTBL_ENTRY _ZTI9S20435C12[];
extern  VTBL_ENTRY _ZTV9S20435C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C12[];
extern Class_Descriptor cd_S20435C22;
extern VTBL_ENTRY _ZTI9S20435C22[];
extern  VTBL_ENTRY _ZTV9S20435C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C22[];
extern Class_Descriptor cd_S20435C20;
extern VTBL_ENTRY _ZTI9S20435C20[];
extern  VTBL_ENTRY _ZTV9S20435C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C20[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20435C25;
extern VTBL_ENTRY _ZTI9S20435C25[];
extern Class_Descriptor cd_S20435C24;
extern VTBL_ENTRY _ZTI9S20435C24[];
extern  VTBL_ENTRY _ZTV9S20435C24[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C24[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20435C17;
extern VTBL_ENTRY _ZTI9S20435C17[];
extern  VTBL_ENTRY _ZTV9S20435C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20435C17[];
static Base_Class bases_S20435C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(160,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(192,124), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20435C4,    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
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(168,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_S20435C8,    ABISELECT(176,120), //bcp->offset
    63, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20435C3,    ABISELECT(160,108), //bcp->offset
    55, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20435C8,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C9,    ABISELECT(224,140), //bcp->offset
    71, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20435C8,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20435C11,    ABISELECT(64,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,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
    17, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(89,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
    18, //immediately_derived
  0, 0},
  {&cd_S20435C13,    ABISELECT(80,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20435C14,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,80), //bcp->offset
    43, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(144,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(144,96), //bcp->offset
    47, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(80,64), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20435C2,    ABISELECT(64,52), //bcp->offset
    22, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(248,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
    31, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(256,160), //bcp->offset
    89, //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
    21, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20435C3,    ABISELECT(240,148), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(280,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, 0},
  {&cd_S20435C8,    ABISELECT(280,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
    16, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    99, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(288,180), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20435C19,    ABISELECT(280,176), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(264,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20435C18,    ABISELECT(240,148), //bcp->offset
    79, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    82, //immediately_derived
  0, 1},
  {&cd_S20435C8,    ABISELECT(312,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
    24, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20435C21,    ABISELECT(312,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    77, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(504,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(504,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    76, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(336,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    44, //immediately_derived
  0, 0},
  {&cd_S20435C4,    ABISELECT(336,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    127, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(344,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20435C8,    ABISELECT(352,224), //bcp->offset
    146, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20435C3,    ABISELECT(336,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(360,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20435C18,    ABISELECT(336,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(376,240), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    135, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(376,240), //bcp->offset
    149, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    134, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(400,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    140, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(400,252), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    139, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(424,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
    57, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(425,269), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(425,269), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20435C13,    ABISELECT(416,264), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    144, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(440,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    59, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(440,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(448,280), //bcp->offset
    179, //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
    40, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(480,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(480,296), //bcp->offset
    183, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(416,264), //bcp->offset
    170, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    143, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(496,308), //bcp->offset
    191, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S20435C23,    ABISELECT(400,252), //bcp->offset
    157, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    138, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    76, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(520,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
    69, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(521,321), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(521,321), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S20435C13,    ABISELECT(512,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    180, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(536,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20435C14,    ABISELECT(536,328), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(544,332), //bcp->offset
    207, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20435C16,    ABISELECT(576,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    185, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S20435C15,    ABISELECT(576,348), //bcp->offset
    211, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S20435C12,    ABISELECT(512,316), //bcp->offset
    198, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    76, //immediately_derived
  0, 1},
  {&cd_S20435C22,    ABISELECT(336,212), //bcp->offset
    128, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    124, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    77, //immediately_derived
  0, 1},
  {&cd_S20435C20,    ABISELECT(312,196), //bcp->offset
    110, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    82, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S20435C25,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20435C24,    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
    48, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20435C17,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    16, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20435C1[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C242v4Ev();
extern void _ZN8S20435C1D1Ev();
extern void _ZN8S20435C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20435C1D1Ev,_ZThn52_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20435C1D0Ev,_ZThn52_N8S20435C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20435C1D1Ev,_ZThn64_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20435C1D0Ev,_ZThn64_N8S20435C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N8S20435C1D1Ev,_ZTvn28_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20435C1D0Ev,_ZTvn28_n16_N8S20435C1D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20435C1D1Ev,_ZTvn44_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20435C1D0Ev,_ZTvn44_n16_N8S20435C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20435C1D1Ev,_ZTv0_n20_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S20435C1D1Ev,_ZThn108_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20435C1D0Ev,_ZTv0_n20_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn160_N8S20435C1D0Ev,_ZThn108_N8S20435C1D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20435C1D1Ev,_ZTv0_n12_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S20435C1D1Ev,_ZThn124_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C1D0Ev,_ZTv0_n12_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S20435C1D0Ev,_ZThn124_N8S20435C1D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20435C1D1Ev,_ZTv0_n20_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn224_N8S20435C1D1Ev,_ZThn140_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20435C1D0Ev,_ZTv0_n20_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn224_N8S20435C1D0Ev,_ZThn140_N8S20435C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20435C1D1Ev,_ZTv0_n28_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S20435C1D1Ev,_ZThn148_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20435C1D0Ev,_ZTv0_n28_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn240_N8S20435C1D0Ev,_ZThn148_N8S20435C1D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20435C1D1Ev,_ZTv0_n28_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn280_N8S20435C1D1Ev,_ZThn176_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20435C1D0Ev,_ZTv0_n28_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn280_N8S20435C1D0Ev,_ZThn176_N8S20435C1D0Ev)() __attribute__((weak));
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20435C1D1Ev,_ZTvn4_n28_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20435C1D0Ev,_ZTvn4_n28_N8S20435C1D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20435C1D1Ev,_ZTv0_n60_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn312_N8S20435C1D1Ev,_ZThn196_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20435C1D0Ev,_ZTv0_n60_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn312_N8S20435C1D0Ev,_ZThn196_N8S20435C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20435C1D1Ev,_ZTv0_n48_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S20435C1D1Ev,_ZThn212_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20435C1D0Ev,_ZTv0_n48_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S20435C1D0Ev,_ZThn212_N8S20435C1D0Ev)() __attribute__((weak));
extern void _ZN9S20435C222v3Ev();
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20435C1D1Ev,_ZTvn28_n48_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20435C1D0Ev,_ZTvn28_n48_N8S20435C1D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20435C1D1Ev,_ZTvn40_n48_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20435C1D0Ev,_ZTvn40_n48_N8S20435C1D0Ev)();
extern void _ZN9S20435C232v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S20435C1D1Ev,_ZThn264_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S20435C1D0Ev,_ZThn264_N8S20435C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N8S20435C1D1Ev,_ZTvn68_n48_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20435C1D0Ev,_ZTvn68_n48_N8S20435C1D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20435C1D1Ev,_ZTvn84_n48_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20435C1D0Ev,_ZTvn84_n48_N8S20435C1D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20435C1D1Ev,_ZTvn96_n48_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20435C1D0Ev,_ZTvn96_n48_N8S20435C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZThn512_N8S20435C1D1Ev,_ZThn316_N8S20435C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev)();
extern void ABISELECT(_ZThn512_N8S20435C1D0Ev,_ZThn316_N8S20435C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S20435C1D1Ev,_ZTvn16_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20435C1D0Ev,_ZTvn16_n16_N8S20435C1D0Ev)();
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20435C1D1Ev,_ZTvn32_n16_N8S20435C1D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20435C1D0Ev,_ZTvn32_n16_N8S20435C1D0Ev)();
static  VTBL_ENTRY vtc_S20435C1[] = {
  ABISELECT(160,108),
  ABISELECT(64,52),
  ABISELECT(512,316),
  ABISELECT(64,52),
  0,
  ABISELECT(224,140),
  ABISELECT(504,312),
  ABISELECT(336,212),
  ABISELECT(312,196),
  ABISELECT(312,196),
  ABISELECT(240,148),
  ABISELECT(144,96),
  ABISELECT(192,124),
  ABISELECT(280,176),
  ABISELECT(224,140),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C242v4Ev,
  (VTBL_ENTRY)&_ZN8S20435C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C1D0Ev,
  ABISELECT(80,44),
  ABISELECT(-64,-52),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  ABISELECT(-64,-52),
  ABISELECT(128,72),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-80,-64),
  ABISELECT(112,60),
  ABISELECT(-80,-64),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev),
  ABISELECT(-112,-80),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20435C1D1Ev,_ZTvn28_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20435C1D0Ev,_ZTvn28_n16_N8S20435C1D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20435C1D1Ev,_ZTvn44_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20435C1D0Ev,_ZTvn44_n16_N8S20435C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-160,-108),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-160,-108),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C1D1Ev,_ZTv0_n20_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C1D0Ev,_ZTv0_n20_N8S20435C1D0Ev),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C1D1Ev,_ZTv0_n12_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C1D0Ev,_ZTv0_n12_N8S20435C1D0Ev),
  ABISELECT(-224,-140),
  0,
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C1D1Ev,_ZTv0_n20_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C1D0Ev,_ZTv0_n20_N8S20435C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-240,-148),
  ABISELECT(40,28),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20435C1D1Ev,_ZTv0_n28_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20435C1D0Ev,_ZTv0_n28_N8S20435C1D0Ev),
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-280,-176),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20435C1D1Ev,_ZTv0_n28_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20435C1D0Ev,_ZTv0_n28_N8S20435C1D0Ev),
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20435C1D1Ev,_ZTvn4_n28_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20435C1D0Ev,_ZTvn4_n28_N8S20435C1D0Ev),
  ABISELECT(-312,-196),
  ABISELECT(200,120),
  ABISELECT(-248,-144),
  ABISELECT(-312,-196),
  ABISELECT(-88,-56),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-120,-72),
  ABISELECT(192,116),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  0,
  0,
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20435C1D1Ev,_ZTv0_n60_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20435C1D0Ev,_ZTv0_n60_N8S20435C1D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-212),
  ABISELECT(176,104),
  ABISELECT(-272,-160),
  ABISELECT(-336,-212),
  ABISELECT(-112,-72),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-192,-116),
  ABISELECT(-112,-72),
  ABISELECT(-144,-88),
  ABISELECT(-336,-212),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20435C1D1Ev,_ZTv0_n48_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20435C1D0Ev,_ZTv0_n48_N8S20435C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  ABISELECT(-152,-100),
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  ABISELECT(-376,-240),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20435C1D1Ev,_ZTvn28_n48_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20435C1D0Ev,_ZTvn28_n48_N8S20435C1D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-336,-200),
  ABISELECT(-400,-252),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-400,-252),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20435C1D1Ev,_ZTvn40_n48_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20435C1D0Ev,_ZTvn40_n48_N8S20435C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
  ABISELECT(-192,-124),
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  ABISELECT(-416,-264),
  ABISELECT(-224,-140),
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev),
  ABISELECT(-448,-280),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20435C1D1Ev,_ZTvn68_n48_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20435C1D0Ev,_ZTvn68_n48_N8S20435C1D0Ev),
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  ABISELECT(-480,-296),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20435C1D1Ev,_ZTvn84_n48_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20435C1D0Ev,_ZTvn84_n48_N8S20435C1D0Ev),
  ABISELECT(-352,-212),
  ABISELECT(-352,-212),
  ABISELECT(-496,-308),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20435C1D1Ev,_ZTvn96_n48_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20435C1D0Ev,_ZTvn96_n48_N8S20435C1D0Ev),
  ABISELECT(-288,-176),
  ABISELECT(-368,-220),
  ABISELECT(-448,-264),
  ABISELECT(-512,-316),
  ABISELECT(-320,-192),
  ABISELECT(-512,-316),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev),
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20435C1D1Ev,_ZTvn16_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20435C1D0Ev,_ZTvn16_n16_N8S20435C1D0Ev),
  ABISELECT(-352,-208),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  ABISELECT(-576,-348),
  (VTBL_ENTRY)&(_ZTI8S20435C1[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20435C1D1Ev,_ZTvn32_n16_N8S20435C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20435C1D0Ev,_ZTvn32_n16_N8S20435C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20435C1[];
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C242v4Ev();
extern void _ZN9S20435C17D1Ev();
extern void _ZN9S20435C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C17__8S20435C1[] = {
  ABISELECT(512,316),
  ABISELECT(64,52),
  0,
  ABISELECT(224,140),
  ABISELECT(504,312),
  ABISELECT(336,212),
  ABISELECT(312,196),
  ABISELECT(312,196),
  ABISELECT(240,148),
  ABISELECT(144,96),
  ABISELECT(192,124),
  ABISELECT(280,176),
  ABISELECT(224,140),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20435C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C17D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C242v4Ev();
extern void _ZN9S20435C24D1Ev();
extern void _ZN9S20435C24D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C249S20435C17__8S20435C1[] = {
  ABISELECT(144,96),
  ABISELECT(192,124),
  ABISELECT(280,176),
  ABISELECT(224,140),
  ABISELECT(144,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C242v4Ev,
  (VTBL_ENTRY)&_ZN9S20435C24D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C24D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev)();
extern void ABISELECT(_ZThn280_N9S20435C24D1Ev,_ZThn176_N9S20435C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev)();
extern void ABISELECT(_ZThn280_N9S20435C24D0Ev,_ZThn176_N9S20435C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C249S20435C17__8S20435C1[] = {
  ABISELECT(-280,-176),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev)();
extern void ABISELECT(_ZThn192_N9S20435C24D1Ev,_ZThn124_N9S20435C24D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev)();
extern void ABISELECT(_ZThn192_N9S20435C24D0Ev,_ZThn124_N9S20435C24D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C249S20435C17__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C24D1Ev,_ZTvn4_n28_N9S20435C24D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C24D0Ev,_ZTvn4_n28_N9S20435C24D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C249S20435C17__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C24D1Ev,_ZTvn4_n28_N9S20435C24D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C24D0Ev,_ZTvn4_n28_N9S20435C24D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C249S20435C17__8S20435C1[] = {
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C24[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn240_N9S20435C17D1Ev,_ZThn148_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn240_N9S20435C17D0Ev,_ZThn148_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C18__9S20435C17__8S20435C1[] = {
  ABISELECT(16,12),
  ABISELECT(-240,-148),
  ABISELECT(40,28),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  ABISELECT(-240,-148),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C17__8S20435C1[] = {
  0,
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C17D1Ev,_ZTv0_n12_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn192_N9S20435C17D1Ev,_ZThn124_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C17D0Ev,_ZTv0_n12_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn192_N9S20435C17D0Ev,_ZThn124_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C17__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-192,-124),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C17D1Ev,_ZTv0_n12_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C17D0Ev,_ZTv0_n12_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C88S20435C39S20435C18__A1__9S20435C17__8S20435C1[] = {
  ABISELECT(-256,-160),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn280_N9S20435C17D1Ev,_ZThn176_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn280_N9S20435C17D0Ev,_ZThn176_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C17__8S20435C1[] = {
  ABISELECT(-280,-176),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-280,-176),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C17D1Ev,_ZTvn4_n28_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C17D0Ev,_ZTvn4_n28_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C17__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C17D1Ev,_ZTvn4_n28_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C17D0Ev,_ZTvn4_n28_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n120_N9S20435C17D1Ev,_ZTv0_n60_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn312_N9S20435C17D1Ev,_ZThn196_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N9S20435C17D0Ev,_ZTv0_n60_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn312_N9S20435C17D0Ev,_ZThn196_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C20__9S20435C17__8S20435C1[] = {
  ABISELECT(-312,-196),
  ABISELECT(200,120),
  ABISELECT(-248,-144),
  ABISELECT(-312,-196),
  ABISELECT(-88,-56),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-120,-72),
  ABISELECT(192,116),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  0,
  0,
  ABISELECT(-312,-196),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20435C17D1Ev,_ZTv0_n60_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N9S20435C17D0Ev,_ZTv0_n60_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N9S20435C17D1Ev,_ZTv0_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn336_N9S20435C17D1Ev,_ZThn212_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20435C17D0Ev,_ZTv0_n48_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn336_N9S20435C17D0Ev,_ZThn212_N9S20435C17D0Ev)() __attribute__((weak));
extern void _ZN9S20435C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C22__9S20435C17__8S20435C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-336,-212),
  ABISELECT(176,104),
  ABISELECT(-272,-160),
  ABISELECT(-336,-212),
  ABISELECT(-112,-72),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-192,-116),
  ABISELECT(-112,-72),
  ABISELECT(-144,-88),
  ABISELECT(-336,-212),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C17D1Ev,_ZTv0_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C17D0Ev,_ZTv0_n48_N9S20435C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C88S20435C39S20435C189S20435C22__A4__9S20435C17__8S20435C1[] = {
  ABISELECT(-352,-224),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20435C17D1Ev,_ZTvn28_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20435C17D0Ev,_ZTvn28_n48_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C22__A1__9S20435C17__8S20435C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  ABISELECT(-376,-240),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C17D1Ev,_ZTvn28_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C17D0Ev,_ZTvn28_n48_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20435C17D1Ev,_ZTvn40_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20435C17D0Ev,_ZTvn40_n48_N9S20435C17D0Ev)();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C239S20435C22__9S20435C17__8S20435C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-336,-200),
  ABISELECT(-400,-252),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-400,-252),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C17D1Ev,_ZTvn40_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C17D0Ev,_ZTvn40_n48_N9S20435C17D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C17D1Ev,_ZTv0_n20_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn224_N9S20435C17D1Ev,_ZThn140_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20435C17D0Ev,_ZTv0_n20_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn224_N9S20435C17D0Ev,_ZThn140_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C17__8S20435C1[] = {
  ABISELECT(-224,-140),
  0,
  ABISELECT(-224,-140),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C17D1Ev,_ZTv0_n20_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C17D0Ev,_ZTv0_n20_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn416_N9S20435C17D1Ev,_ZThn264_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn416_N9S20435C17D0Ev,_ZThn264_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C239S20435C22__9S20435C17__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  ABISELECT(-416,-264),
  ABISELECT(-224,-140),
  ABISELECT(-416,-264),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C17D1Ev,_ZThn52_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn64_N9S20435C17D0Ev,_ZThn52_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C4__A2__9S20435C17__8S20435C1[] = {
  ABISELECT(-64,-52),
  ABISELECT(128,72),
  ABISELECT(-64,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20435C17D1Ev,_ZTvn68_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20435C17D0Ev,_ZTvn68_n48_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C129S20435C239S20435C22__A1__9S20435C17__8S20435C1[] = {
  ABISELECT(-448,-280),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C17D1Ev,_ZTvn68_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C17D0Ev,_ZTvn68_n48_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20435C17D1Ev,_ZTvn84_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20435C17D0Ev,_ZTvn84_n48_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  ABISELECT(-480,-296),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C17D1Ev,_ZTvn84_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C17D0Ev,_ZTvn84_n48_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20435C17D1Ev,_ZTvn96_n48_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20435C17D0Ev,_ZTvn96_n48_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C17__8S20435C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-352,-212),
  ABISELECT(-496,-308),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C17D1Ev,_ZTvn96_n48_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C17D0Ev,_ZTvn96_n48_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZThn512_N9S20435C17D1Ev,_ZThn316_N9S20435C17D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev)();
extern void ABISELECT(_ZThn512_N9S20435C17D0Ev,_ZThn316_N9S20435C17D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C17__8S20435C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-368,-220),
  ABISELECT(-448,-264),
  ABISELECT(-512,-316),
  ABISELECT(-320,-192),
  ABISELECT(-512,-316),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20435C17D1Ev,_ZTvn16_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C17D0Ev,_ZTvn16_n16_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C17__8S20435C1[] = {
  ABISELECT(-544,-332),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C17D1Ev,_ZTvn16_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C17D0Ev,_ZTvn16_n16_N9S20435C17D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C17D1Ev,_ZTvn32_n16_N9S20435C17D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C17D0Ev,_ZTvn32_n16_N9S20435C17D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C17__8S20435C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  ABISELECT(-576,-348),
  (VTBL_ENTRY)&(_ZTI9S20435C17[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C17D1Ev,_ZTvn32_n16_N9S20435C17D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C17D0Ev,_ZTvn32_n16_N9S20435C17D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev)();
extern void _ZN8S20435C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev)();
extern void _ZN8S20435C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C2__8S20435C1[] = {
  ABISELECT(80,44),
  ABISELECT(-64,-52),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C11D1Ev,_ZTv0_n16_N9S20435C11D1Ev)();
extern void _ZN9S20435C11D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C11D0Ev,_ZTv0_n16_N9S20435C11D0Ev)();
extern void _ZN9S20435C11D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C118S20435C2__8S20435C1[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C11D1Ev,_ZTv0_n16_N9S20435C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C11D0Ev,_ZTv0_n16_N9S20435C11D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev)();
extern void ABISELECT(_ZThn128_N9S20435C11D1Ev,_ZThn72_N9S20435C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev)();
extern void ABISELECT(_ZThn128_N9S20435C11D0Ev,_ZThn72_N9S20435C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C118S20435C2__8S20435C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20435C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C13D1Ev,_ZThn60_N9S20435C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C13D0Ev,_ZThn60_N9S20435C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C128S20435C2__8S20435C1[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C128S20435C2__8S20435C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn112_N9S20435C12D1Ev,_ZThn60_N9S20435C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
extern void ABISELECT(_ZThn112_N9S20435C12D0Ev,_ZThn60_N9S20435C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C128S20435C2__8S20435C1[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20435C2D1Ev,_ZThn56_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20435C2D0Ev,_ZThn56_N8S20435C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C3__8S20435C2__8S20435C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C2D1Ev,_ZTv0_n12_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20435C2D1Ev,_ZThn72_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C2D0Ev,_ZTv0_n12_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn128_N8S20435C2D0Ev,_ZThn72_N8S20435C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C2__8S20435C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C2D1Ev,_ZTv0_n12_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C2D0Ev,_ZTv0_n12_N8S20435C2D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C88S20435C3__8S20435C2__8S20435C1[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20435C2D1Ev,_ZThn88_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn160_N8S20435C2D0Ev,_ZThn88_N8S20435C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20435C9__8S20435C2__8S20435C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-224,-140),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N8S20435C2D1Ev,_ZThn44_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20435C2D0Ev,_ZThn44_N8S20435C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__8S20435C2__8S20435C1[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20435C2D1Ev,_ZThn44_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20435C2D0Ev,_ZThn44_N8S20435C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20435C2D1Ev,_ZThn12_N8S20435C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S20435C2D0Ev,_ZThn12_N8S20435C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__8S20435C2__8S20435C1[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20435C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev),
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C3__8S20435C1[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C3__8S20435C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn16_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn16_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C3__8S20435C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZThn32_N8S20435C3D1Ev,_ZThn16_N8S20435C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
extern void ABISELECT(_ZThn32_N8S20435C3D0Ev,_ZThn16_N8S20435C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C3__8S20435C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN8S20435C9D1Ev();
extern void _ZN8S20435C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C9__8S20435C1[] = {
  ABISELECT(-224,-140),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C9[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C9D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A1__8S20435C1[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZThn128_N8S20435C4D1Ev,_ZThn72_N8S20435C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
extern void ABISELECT(_ZThn128_N8S20435C4D0Ev,_ZThn72_N8S20435C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C4__A1__8S20435C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C18__8S20435C1[] = {
  ABISELECT(40,28),
  ABISELECT(-96,-52),
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C39S20435C18__A1__8S20435C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C39S20435C18__A2__8S20435C1[] = {
  ABISELECT(-48,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C18__A2__8S20435C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C39S20435C18__A1__8S20435C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C18__8S20435C1[] = {
  0,
  ABISELECT(96,52),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C18__8S20435C1[] = {
  ABISELECT(48,24),
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20435C18D1Ev,_ZThn28_N9S20435C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
extern void ABISELECT(_ZThn40_N9S20435C18D0Ev,_ZThn28_N9S20435C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C18__8S20435C1[] = {
  ABISELECT(-40,-28),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C18__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C19D1Ev();
extern void _ZN9S20435C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C19__8S20435C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C19D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__A1__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C19__A1__8S20435C1[] = {
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C19__A1__8S20435C1[] = {
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C19__A1__8S20435C1[] = {
  0,
  ABISELECT(144,84),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C19__8S20435C1[] = {
  ABISELECT(88,52),
  ABISELECT(88,52),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D1Ev,_ZTv0_n12_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C19D0Ev,_ZTv0_n12_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev)();
extern void ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C19__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D1Ev,_ZThn4_N9S20435C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20435C19D0Ev,_ZThn4_N9S20435C19D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C19__8S20435C1[] = {
  0,
  ABISELECT(136,80),
  (VTBL_ENTRY)&(_ZTI9S20435C19[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C20D1Ev();
extern void _ZN9S20435C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C20__8S20435C1[] = {
  ABISELECT(200,120),
  ABISELECT(-248,-144),
  ABISELECT(-312,-196),
  ABISELECT(-88,-56),
  ABISELECT(-32,-20),
  ABISELECT(-88,-56),
  ABISELECT(-120,-72),
  ABISELECT(192,116),
  ABISELECT(24,16),
  ABISELECT(-168,-100),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C20D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C20__8S20435C1[] = {
  0,
  ABISELECT(168,100),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn24_N9S20435C20D1Ev,_ZThn16_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn24_N9S20435C20D0Ev,_ZThn16_N9S20435C20D0Ev)() __attribute__((weak));
extern void _ZN9S20435C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C22__9S20435C20__8S20435C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-24,-16),
  ABISELECT(176,104),
  ABISELECT(-272,-160),
  ABISELECT(-336,-212),
  ABISELECT(-112,-72),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-192,-116),
  ABISELECT(-112,-72),
  ABISELECT(-144,-88),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C20__8S20435C1[] = {
  ABISELECT(120,72),
  ABISELECT(120,72),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C20D1Ev,_ZTv0_n12_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C20D0Ev,_ZTv0_n12_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C88S20435C39S20435C189S20435C22__A2__9S20435C20__8S20435C1[] = {
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C20__8S20435C1[] = {
  ABISELECT(32,20),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C20D1Ev,_ZTv0_n28_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C20D0Ev,_ZTv0_n28_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C20D1Ev,_ZTvn4_n28_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C20D0Ev,_ZTvn4_n28_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C20__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C20D1Ev,_ZTvn4_n28_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C20D0Ev,_ZTvn4_n28_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20435C20D1Ev,_ZTvn28_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20435C20D0Ev,_ZTvn28_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C22__A1__9S20435C20__8S20435C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C20D1Ev,_ZTvn28_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20435C20D0Ev,_ZTvn28_n48_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20435C20D1Ev,_ZTvn40_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20435C20D0Ev,_ZTvn40_n48_N9S20435C20D0Ev)();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C239S20435C22__9S20435C20__8S20435C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-336,-200),
  ABISELECT(-400,-252),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C20D1Ev,_ZTvn40_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20435C20D0Ev,_ZTvn40_n48_N9S20435C20D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C20__8S20435C1[] = {
  ABISELECT(88,56),
  0,
  ABISELECT(-224,-140),
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C20D1Ev,_ZTv0_n20_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C20D0Ev,_ZTv0_n20_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn104_N9S20435C20D1Ev,_ZThn68_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn104_N9S20435C20D0Ev,_ZThn68_N9S20435C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  ABISELECT(-104,-68),
  ABISELECT(-224,-140),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A1__9S20435C20__8S20435C1[] = {
  ABISELECT(248,144),
  ABISELECT(128,72),
  ABISELECT(248,144),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20435C20D1Ev,_ZTvn68_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20435C20D0Ev,_ZTvn68_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C129S20435C239S20435C22__A1__9S20435C20__8S20435C1[] = {
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C20D1Ev,_ZTvn68_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20435C20D0Ev,_ZTvn68_n48_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20435C20D1Ev,_ZTvn84_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20435C20D0Ev,_ZTvn84_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  ABISELECT(-168,-100),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C20D1Ev,_ZTvn84_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20435C20D0Ev,_ZTvn84_n48_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20435C20D1Ev,_ZTvn96_n48_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20435C20D0Ev,_ZTvn96_n48_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C20__8S20435C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-352,-212),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C20D1Ev,_ZTvn96_n48_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20435C20D0Ev,_ZTvn96_n48_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZThn200_N9S20435C20D1Ev,_ZThn120_N9S20435C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev)();
extern void ABISELECT(_ZThn200_N9S20435C20D0Ev,_ZThn120_N9S20435C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C20__8S20435C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-368,-220),
  ABISELECT(-448,-264),
  ABISELECT(-200,-120),
  ABISELECT(-320,-192),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20435C20D1Ev,_ZTvn16_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C20D0Ev,_ZTvn16_n16_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C20__8S20435C1[] = {
  ABISELECT(-232,-136),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C20D1Ev,_ZTvn16_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C20D0Ev,_ZTvn16_n16_N9S20435C20D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C20D1Ev,_ZTvn32_n16_N9S20435C20D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C20D0Ev,_ZTvn32_n16_N9S20435C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C20__8S20435C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI9S20435C20[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C20D1Ev,_ZTvn32_n16_N9S20435C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C20D0Ev,_ZTvn32_n16_N9S20435C20D0Ev),
};
extern void _ZN9S20435C22D1Ev();
extern void _ZN9S20435C22D0Ev();
extern void _ZN9S20435C222v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C22__8S20435C1[] = {
  ABISELECT(176,104),
  ABISELECT(-272,-160),
  ABISELECT(-336,-212),
  ABISELECT(-112,-72),
  ABISELECT(168,100),
  ABISELECT(-56,-36),
  ABISELECT(-192,-116),
  ABISELECT(-112,-72),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN9S20435C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C22D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C222v3Ev,
};
extern void _ZN9S20435C18D1Ev();
extern void _ZN9S20435C18D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C189S20435C22__A1__8S20435C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-192,-116),
  ABISELECT(-112,-72),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN9S20435C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C18D0Ev,
};
extern void _ZN8S20435C3D1Ev();
extern void _ZN8S20435C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C39S20435C189S20435C22__A2__8S20435C1[] = {
  ABISELECT(-112,-72),
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&_ZN8S20435C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C3D0Ev,
};
extern void _ZN8S20435C4D1Ev();
extern void _ZN8S20435C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C48S20435C39S20435C189S20435C22__A3__8S20435C1[] = {
  ABISELECT(-144,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&_ZN8S20435C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20435C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C189S20435C22__A3__8S20435C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S20435C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20435C39S20435C189S20435C22__A2__8S20435C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI8S20435C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C189S20435C22__A1__8S20435C1[] = {
  0,
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C189S20435C22__A1__8S20435C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D1Ev,_ZTv0_n12_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C18D0Ev,_ZTv0_n12_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C189S20435C22__A1__8S20435C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__A1__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20435C18[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D1Ev,_ZTvn4_n28_N9S20435C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C18D0Ev,_ZTvn4_n28_N9S20435C18D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C22__A2__8S20435C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C22__A2__8S20435C1[] = {
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C22__A2__8S20435C1[] = {
  0,
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C22__A2__8S20435C1[] = {
  0,
  ABISELECT(232,144),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C23D1Ev();
extern void _ZN9S20435C23D0Ev();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-336,-200),
  ABISELECT(-400,-252),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C23D0Ev,
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C239S20435C22__A3__8S20435C1[] = {
  ABISELECT(-176,-112),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C239S20435C22__A3__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C239S20435C22__A3__8S20435C1[] = {
  0,
  ABISELECT(256,156),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C239S20435C22__A3__8S20435C1[] = {
  0,
  ABISELECT(256,156),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  0,
  ABISELECT(-224,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  0,
  ABISELECT(-224,-140),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(352,212),
  ABISELECT(128,72),
  ABISELECT(352,212),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  0,
  ABISELECT(272,168),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[] = {
  0,
  ABISELECT(336,200),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[] = {
  0,
  ABISELECT(336,200),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(352,212),
  ABISELECT(128,72),
  ABISELECT(352,212),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(224,140),
  ABISELECT(224,140),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  0,
  ABISELECT(272,168),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C129S20435C239S20435C22__A1__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C239S20435C22__A5__8S20435C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-352,-212),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C239S20435C22__A5__8S20435C1[] = {
  0,
  ABISELECT(352,212),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(176,112),
  0,
  ABISELECT(-224,-140),
  ABISELECT(176,112),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D1Ev,_ZTv0_n20_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C23D0Ev,_ZTv0_n20_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__A1__9S20435C239S20435C22__8S20435C1[] = {
  0,
  ABISELECT(256,156),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev)();
extern void ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  ABISELECT(-16,-12),
  ABISELECT(-224,-140),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(336,200),
  ABISELECT(128,72),
  ABISELECT(336,200),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(208,128),
  ABISELECT(208,128),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D1Ev,_ZTv0_n12_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C23D0Ev,_ZTv0_n12_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A1__9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D1Ev,_ZThn44_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20435C23D0Ev,_ZThn44_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev)();
extern void ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C16__A2__9S20435C239S20435C22__8S20435C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-352,-212),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20435C23[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D1Ev,_ZThn56_N9S20435C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20435C23D0Ev,_ZThn56_N9S20435C23D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C22__8S20435C1[] = {
  0,
  ABISELECT(192,116),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C22__8S20435C1[] = {
  ABISELECT(144,88),
  ABISELECT(144,88),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D1Ev,_ZTv0_n12_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C22D0Ev,_ZTv0_n12_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C19__9S20435C22__8S20435C1[] = {
  ABISELECT(56,36),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-136,-80),
  ABISELECT(-88,-52),
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D1Ev,_ZTv0_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20435C22D0Ev,_ZTv0_n28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C19__9S20435C22__8S20435C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  ABISELECT(48,32),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D1Ev,_ZTvn4_n28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20435C22D0Ev,_ZTvn4_n28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__A1__9S20435C22__8S20435C1[] = {
  ABISELECT(-152,-100),
  ABISELECT(-232,-144),
  ABISELECT(-232,-144),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D1Ev,_ZThn28_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20435C22D0Ev,_ZThn28_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev)();
extern void _ZN9S20435C232v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C23__9S20435C22__8S20435C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-336,-200),
  ABISELECT(-400,-252),
  ABISELECT(-176,-112),
  ABISELECT(-176,-112),
  ABISELECT(-256,-156),
  ABISELECT(-256,-156),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D1Ev,_ZThn40_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C22D0Ev,_ZThn40_N9S20435C22D0Ev),
  (VTBL_ENTRY)&_ZN9S20435C232v2Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C9__9S20435C22__8S20435C1[] = {
  ABISELECT(112,72),
  0,
  ABISELECT(-224,-140),
  ABISELECT(112,72),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D1Ev,_ZTv0_n20_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20435C22D0Ev,_ZTv0_n20_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C129S20435C23__9S20435C22__8S20435C1[] = {
  ABISELECT(-192,-124),
  ABISELECT(-272,-168),
  ABISELECT(-352,-212),
  ABISELECT(-80,-52),
  ABISELECT(-224,-140),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__A1__9S20435C22__8S20435C1[] = {
  ABISELECT(272,160),
  ABISELECT(128,72),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22__8S20435C1[] = {
  ABISELECT(-256,-156),
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D1Ev,_ZThn84_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20435C22D0Ev,_ZThn84_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C23__A4__9S20435C22__8S20435C1[] = {
  ABISELECT(-352,-212),
  ABISELECT(-352,-212),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D1Ev,_ZThn96_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20435C22D0Ev,_ZThn96_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev)();
extern void ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A1__9S20435C22__8S20435C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-368,-220),
  ABISELECT(-448,-264),
  ABISELECT(-176,-104),
  ABISELECT(-320,-192),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C22__8S20435C1[] = {
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D1Ev,_ZTvn16_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20435C22D0Ev,_ZTvn16_n16_N9S20435C22D0Ev),
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A4__9S20435C22__8S20435C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20435C22[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D1Ev,_ZTvn32_n16_N9S20435C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20435C22D0Ev,_ZTvn32_n16_N9S20435C22D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void _ZN9S20435C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
extern void _ZN9S20435C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C12__A2__8S20435C1[] = {
  ABISELECT(-288,-176),
  ABISELECT(-368,-220),
  ABISELECT(-448,-264),
  0,
  ABISELECT(-320,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void _ZN9S20435C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
extern void _ZN9S20435C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20435C139S20435C12__A2__8S20435C1[] = {
  ABISELECT(-368,-220),
  ABISELECT(-448,-264),
  0,
  ABISELECT(-320,-192),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C139S20435C12__A2__8S20435C1[] = {
  ABISELECT(448,264),
  ABISELECT(128,72),
  ABISELECT(448,264),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A2__8S20435C1[] = {
  ABISELECT(320,192),
  ABISELECT(320,192),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C139S20435C12__A2__8S20435C1[] = {
  0,
  ABISELECT(368,220),
  (VTBL_ENTRY)&(_ZTI9S20435C13[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C15D1Ev();
extern void _ZN9S20435C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C159S20435C12__A5__8S20435C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C15D0Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void _ZN9S20435C16D1Ev();
extern void _ZN9S20435C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20435C169S20435C159S20435C12__A6__8S20435C1[] = {
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20435C16D0Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A6__8S20435C1[] = {
  0,
  ABISELECT(432,252),
  (VTBL_ENTRY)&(_ZTI9S20435C16[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C159S20435C12__A5__8S20435C1[] = {
  0,
  ABISELECT(432,252),
  (VTBL_ENTRY)&(_ZTI9S20435C15[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20435C4__9S20435C12__A2__8S20435C1[] = {
  ABISELECT(448,264),
  ABISELECT(128,72),
  ABISELECT(448,264),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20435C12__A2__8S20435C1[] = {
  ABISELECT(320,192),
  ABISELECT(320,192),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev),
};
extern void _ZN8S20435C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20435C8__9S20435C12__A2__8S20435C1[] = {
  0,
  ABISELECT(368,220),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
};
extern void _ZN8S20435C82v1Ev();
extern void ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev)();
extern void ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20435C15__9S20435C12__A2__8S20435C1[] = {
  ABISELECT(-352,-208),
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20435C12[0]),
  (VTBL_ENTRY)&_ZN8S20435C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D1Ev,_ZThn32_N9S20435C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20435C12D0Ev,_ZThn32_N9S20435C12D0Ev),
};
static  VTT_ENTRY vtt_S20435C1[] = {
  {&(_ZTV8S20435C1[18]),  18,219},
  {&(_tg__ZTV9S20435C17__8S20435C1[16]),  16,20},
  {&(_tg__ZTV9S20435C249S20435C17__8S20435C1[7]),  7,11},
  {&(_tg__ZTV9S20435C19__9S20435C249S20435C17__8S20435C1[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__9S20435C249S20435C17__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C249S20435C17__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C249S20435C17__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C18__9S20435C17__8S20435C1[8]),  8,10},
  {&(_tg__ZTV8S20435C8__9S20435C17__8S20435C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20435C17__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C88S20435C39S20435C18__A1__9S20435C17__8S20435C1[2]),  2,3},
  {&(_tg__ZTV9S20435C19__9S20435C17__8S20435C1[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C17__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C20__9S20435C17__8S20435C1[15]),  15,18},
  {&(_tg__ZTV9S20435C20__9S20435C17__8S20435C1[15]),  15,18},
  {&(_tg__ZTV9S20435C22__9S20435C17__8S20435C1[15]),  15,18},
  {&(_tg__ZTV8S20435C88S20435C39S20435C189S20435C22__A4__9S20435C17__8S20435C1[2]),  2,3},
  {&(_tg__ZTV9S20435C159S20435C22__A1__9S20435C17__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C239S20435C22__9S20435C17__8S20435C1[9]),  9,13},
  {&(_tg__ZTV8S20435C9__9S20435C17__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C17__8S20435C1[7]),  7,9},
  {&(_tg__ZTV8S20435C4__A2__9S20435C17__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20435C129S20435C239S20435C22__A1__9S20435C17__8S20435C1[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C17__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C17__8S20435C1[4]),  4,7},
  {&(_tg__ZTV9S20435C12__A1__9S20435C17__8S20435C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C17__8S20435C1[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C17__8S20435C1[5]),  5,8},
  {&(_ZTV8S20435C1[32]),  32,219},
  {&(_ZTV8S20435C1[61]),  61,219},
  {&(_ZTV8S20435C1[69]),  69,219},
  {&(_ZTV8S20435C1[65]),  65,219},
  {&(_ZTV8S20435C1[76]),  76,219},
  {&(_ZTV8S20435C1[52]),  52,219},
  {&(_ZTV8S20435C1[32]),  32,219},
  {&(_ZTV8S20435C1[41]),  41,219},
  {&(_ZTV8S20435C1[45]),  45,219},
  {&(_ZTV8S20435C1[52]),  52,219},
  {&(_ZTV8S20435C1[87]),  87,219},
  {&(_ZTV8S20435C1[91]),  91,219},
  {&(_ZTV8S20435C1[99]),  99,219},
  {&(_ZTV8S20435C1[107]),  107,219},
  {&(_ZTV8S20435C1[125]),  125,219},
  {&(_ZTV8S20435C1[125]),  125,219},
  {&(_ZTV8S20435C1[143]),  143,219},
  {&(_ZTV8S20435C1[148]),  148,219},
  {&(_ZTV8S20435C1[154]),  154,219},
  {&(_ZTV8S20435C1[166]),  166,219},
  {&(_ZTV8S20435C1[177]),  177,219},
  {&(_ZTV8S20435C1[181]),  181,219},
  {&(_ZTV8S20435C1[188]),  188,219},
  {&(_ZTV8S20435C1[195]),  195,219},
  {&(_ZTV8S20435C1[205]),  205,219},
  {&(_ZTV8S20435C1[209]),  209,219},
  {&(_ZTV8S20435C1[216]),  216,219},
  {&(_tg__ZTV8S20435C2__8S20435C1[10]),  10,12},
  {&(_tg__ZTV9S20435C118S20435C2__8S20435C1[6]),  6,8},
  {&(_tg__ZTV9S20435C118S20435C2__8S20435C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20435C118S20435C2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C128S20435C2__8S20435C1[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C128S20435C2__8S20435C1[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C128S20435C2__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C128S20435C2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C128S20435C2__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C128S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C128S20435C2__8S20435C1[4]),  4,7},
  {&(_tg__ZTV9S20435C169S20435C159S20435C128S20435C2__8S20435C1[4]),  4,7},
  {&(_tg__ZTV9S20435C159S20435C128S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C4__9S20435C128S20435C2__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C128S20435C2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C128S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C15__9S20435C128S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C3__8S20435C2__8S20435C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20435C2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C88S20435C3__8S20435C2__8S20435C1[2]),  2,3},
  {&(_tg__ZTV8S20435C9__8S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C12__8S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C2__8S20435C1[10]),  10,12},
  {&(_tg__ZTV9S20435C12__8S20435C2__8S20435C1[7]),  7,9},
  {&(_tg__ZTV9S20435C159S20435C12__8S20435C2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C3__8S20435C1[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C3__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C3__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C3__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C9__8S20435C1[3]),  3,6},
  {&(_tg__ZTV8S20435C4__A1__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C4__A1__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C18__8S20435C1[6]),  6,8},
  {&(_tg__ZTV8S20435C39S20435C18__A1__8S20435C1[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C39S20435C18__A2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C18__A2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C39S20435C18__A1__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C18__8S20435C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20435C18__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C18__8S20435C1[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C18__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C19__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C19__A1__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C19__A1__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C19__A1__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C19__A1__8S20435C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20435C19__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C15__9S20435C19__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C19__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C20__8S20435C1[14]),  14,17},
  {&(_tg__ZTV9S20435C20__8S20435C1[14]),  14,17},
  {&(_tg__ZTV8S20435C8__A1__9S20435C20__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C22__9S20435C20__8S20435C1[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20435C20__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C88S20435C39S20435C189S20435C22__A2__9S20435C20__8S20435C1[2]),  2,3},
  {&(_tg__ZTV9S20435C19__9S20435C20__8S20435C1[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C20__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C22__A1__9S20435C20__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C239S20435C22__9S20435C20__8S20435C1[9]),  9,13},
  {&(_tg__ZTV8S20435C9__9S20435C20__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__9S20435C20__8S20435C1[7]),  7,9},
  {&(_tg__ZTV8S20435C4__A1__9S20435C20__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20435C129S20435C239S20435C22__A1__9S20435C20__8S20435C1[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A3__9S20435C20__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C239S20435C22__A4__9S20435C20__8S20435C1[4]),  4,7},
  {&(_tg__ZTV9S20435C12__A1__9S20435C20__8S20435C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C20__8S20435C1[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C20__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C22__8S20435C1[11]),  11,14},
  {&(_tg__ZTV9S20435C189S20435C22__A1__8S20435C1[6]),  6,8},
  {&(_tg__ZTV8S20435C39S20435C189S20435C22__A2__8S20435C1[4]),  4,6},
  {&(_tg__ZTV8S20435C48S20435C39S20435C189S20435C22__A3__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C48S20435C39S20435C189S20435C22__A3__8S20435C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20435C39S20435C189S20435C22__A2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C189S20435C22__A1__8S20435C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20435C189S20435C22__A1__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C189S20435C22__A1__8S20435C1[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C189S20435C22__A1__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C159S20435C22__A2__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C22__A2__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C22__A2__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C22__A2__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C239S20435C22__8S20435C1[9]),  9,13},
  {&(_tg__ZTV9S20435C159S20435C239S20435C22__A3__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C239S20435C22__A3__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C239S20435C22__A3__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C239S20435C22__A3__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C129S20435C239S20435C22__A1__8S20435C1[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C129S20435C239S20435C22__A1__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C129S20435C239S20435C22__A4__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C4__9S20435C129S20435C239S20435C22__A1__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C129S20435C239S20435C22__A1__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C129S20435C239S20435C22__A1__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C129S20435C239S20435C22__A1__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C239S20435C22__A5__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C239S20435C22__A5__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C9__9S20435C239S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV8S20435C8__A1__9S20435C239S20435C22__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C12__9S20435C239S20435C22__8S20435C1[7]),  7,9},
  {&(_tg__ZTV8S20435C4__9S20435C239S20435C22__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C239S20435C22__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C159S20435C12__A1__9S20435C239S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C16__A2__9S20435C239S20435C22__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C22__8S20435C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20435C22__8S20435C1[3]),  3,5},
  {&(_tg__ZTV9S20435C19__9S20435C22__8S20435C1[7]),  7,10},
  {&(_tg__ZTV9S20435C159S20435C19__9S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C15__A1__9S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C23__9S20435C22__8S20435C1[9]),  9,13},
  {&(_tg__ZTV8S20435C9__9S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C129S20435C23__9S20435C22__8S20435C1[7]),  7,9},
  {&(_tg__ZTV8S20435C4__A1__9S20435C22__8S20435C1[4]),  4,6},
  {&(_tg__ZTV9S20435C159S20435C129S20435C23__A3__9S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C23__A4__9S20435C22__8S20435C1[4]),  4,7},
  {&(_tg__ZTV9S20435C12__A1__9S20435C22__8S20435C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20435C12__A2__9S20435C22__8S20435C1[2]),  2,4},
  {&(_tg__ZTV9S20435C159S20435C12__A4__9S20435C22__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C12__A2__8S20435C1[7]),  7,9},
  {&(_tg__ZTV9S20435C139S20435C12__A2__8S20435C1[6]),  6,8},
  {&(_tg__ZTV8S20435C4__9S20435C139S20435C12__A2__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C139S20435C12__A2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C139S20435C12__A2__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C159S20435C12__A5__8S20435C1[5]),  5,8},
  {&(_tg__ZTV9S20435C169S20435C159S20435C12__A6__8S20435C1[4]),  4,7},
  {&(_tg__ZTV8S20435C8__9S20435C169S20435C159S20435C12__A6__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C8__9S20435C159S20435C12__A5__8S20435C1[3]),  3,4},
  {&(_tg__ZTV8S20435C4__9S20435C12__A2__8S20435C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20435C12__A2__8S20435C1[3]),  3,5},
  {&(_tg__ZTV8S20435C8__9S20435C12__A2__8S20435C1[3]),  3,4},
  {&(_tg__ZTV9S20435C15__9S20435C12__A2__8S20435C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20435C1[];
extern  VTBL_ENTRY _ZTV8S20435C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20435C1[];
static VTBL_ENTRY alt_thunk_names42[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D0Ev,_ZTv0_n16_N9S20435C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D0Ev,_ZThn104_N9S20435C22D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D0Ev,_ZThn52_N9S20435C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C22D1Ev,_ZTv0_n16_N9S20435C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20435C22D1Ev,_ZThn104_N9S20435C22D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20435C22D1Ev,_ZThn52_N9S20435C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D0Ev,_ZTv0_n16_N9S20435C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D0Ev,_ZThn12_N9S20435C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C23D1Ev,_ZTv0_n16_N9S20435C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20435C23D1Ev,_ZThn12_N9S20435C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C20D0Ev,_ZTv0_n16_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20435C20D0Ev,_ZThn120_N9S20435C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C20D0Ev,_ZThn68_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C20D1Ev,_ZTv0_n16_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N9S20435C20D1Ev,_ZThn120_N9S20435C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20435C20D1Ev,_ZThn68_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C20D0Ev,_ZTv0_n48_N9S20435C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20435C20D0Ev,_ZThn16_N9S20435C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C20D1Ev,_ZTv0_n48_N9S20435C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N9S20435C20D1Ev,_ZThn16_N9S20435C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D0Ev,_ZTv0_n28_N9S20435C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20435C18D0Ev,_ZThn28_N9S20435C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C18D1Ev,_ZTv0_n28_N9S20435C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20435C18D1Ev,_ZThn28_N9S20435C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D0Ev,_ZTv0_n12_N8S20435C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C3D0Ev,_ZThn16_N8S20435C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C3D1Ev,_ZTv0_n12_N8S20435C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C3D1Ev,_ZThn16_N8S20435C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D0Ev,_ZTv0_n12_N8S20435C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C4D0Ev,_ZThn72_N8S20435C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D0Ev,_ZThn16_N8S20435C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C4D1Ev,_ZTv0_n12_N8S20435C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C4D1Ev,_ZThn72_N8S20435C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20435C4D1Ev,_ZThn16_N8S20435C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C2D0Ev,_ZTv0_n12_N8S20435C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C2D0Ev,_ZThn72_N8S20435C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C2D1Ev,_ZTv0_n12_N8S20435C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20435C2D1Ev,_ZThn72_N8S20435C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20435C2D0Ev,_ZTv0_n20_N8S20435C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20435C2D0Ev,_ZThn88_N8S20435C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C2D0Ev,_ZThn56_N8S20435C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20435C2D1Ev,_ZTv0_n20_N8S20435C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20435C2D1Ev,_ZThn88_N8S20435C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20435C2D1Ev,_ZThn56_N8S20435C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D0Ev,_ZTv0_n12_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C12D0Ev,_ZThn60_N9S20435C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C12D1Ev,_ZTv0_n12_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C12D1Ev,_ZThn60_N9S20435C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D0Ev,_ZTv0_n12_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C13D0Ev,_ZThn60_N9S20435C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C13D1Ev,_ZTv0_n12_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20435C13D1Ev,_ZThn60_N9S20435C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D0Ev,_ZTv0_n16_N9S20435C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  (VTBL_ENTRY)_ZN9S20435C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C13D1Ev,_ZTv0_n16_N9S20435C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  (VTBL_ENTRY)_ZN9S20435C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D0Ev,_ZTv0_n16_N9S20435C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  (VTBL_ENTRY)_ZN9S20435C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C12D1Ev,_ZTv0_n16_N9S20435C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  (VTBL_ENTRY)_ZN9S20435C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C11D0Ev,_ZTv0_n12_N9S20435C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20435C11D0Ev,_ZThn72_N9S20435C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C11D1Ev,_ZTv0_n12_N9S20435C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20435C11D1Ev,_ZThn72_N9S20435C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C11D0Ev,_ZTv0_n16_N9S20435C11D0Ev), // 
  (VTBL_ENTRY)_ZN9S20435C11D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C11D1Ev,_ZTv0_n16_N9S20435C11D1Ev), // 
  (VTBL_ENTRY)_ZN9S20435C11D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20435C2D0Ev,_ZTv0_n16_N8S20435C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C2D0Ev,_ZThn12_N8S20435C2D0Ev),
  (VTBL_ENTRY)_ZN8S20435C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20435C2D1Ev,_ZTv0_n16_N8S20435C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20435C2D1Ev,_ZThn12_N8S20435C2D1Ev),
  (VTBL_ENTRY)_ZN8S20435C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C17D0Ev,_ZTv0_n16_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20435C17D0Ev,_ZThn316_N9S20435C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20435C17D0Ev,_ZThn52_N9S20435C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S20435C17D0Ev,_ZThn264_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20435C17D1Ev,_ZTv0_n16_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N9S20435C17D1Ev,_ZThn316_N9S20435C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20435C17D1Ev,_ZThn52_N9S20435C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N9S20435C17D1Ev,_ZThn264_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C17D0Ev,_ZTv0_n20_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20435C17D0Ev,_ZThn140_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20435C17D1Ev,_ZTv0_n20_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S20435C17D1Ev,_ZThn140_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C17D0Ev,_ZTv0_n48_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20435C17D0Ev,_ZThn212_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20435C17D1Ev,_ZTv0_n48_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20435C17D1Ev,_ZThn212_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20435C17D0Ev,_ZTv0_n60_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20435C17D0Ev,_ZThn196_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N9S20435C17D1Ev,_ZTv0_n60_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S20435C17D1Ev,_ZThn196_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C17D0Ev,_ZTv0_n12_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20435C17D0Ev,_ZThn124_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C17D1Ev,_ZTv0_n12_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20435C17D1Ev,_ZThn124_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C17D0Ev,_ZTv0_n28_N9S20435C17D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20435C17D0Ev,_ZThn176_N9S20435C17D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C17D0Ev,_ZThn148_N9S20435C17D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C17D1Ev,_ZTv0_n28_N9S20435C17D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20435C17D1Ev,_ZThn176_N9S20435C17D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20435C17D1Ev,_ZThn148_N9S20435C17D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C24D0Ev,_ZTv0_n12_N9S20435C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20435C24D0Ev,_ZThn124_N9S20435C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20435C24D1Ev,_ZTv0_n12_N9S20435C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20435C24D1Ev,_ZThn124_N9S20435C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C24D0Ev,_ZTv0_n28_N9S20435C24D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20435C24D0Ev,_ZThn176_N9S20435C24D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20435C24D1Ev,_ZTv0_n28_N9S20435C24D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N9S20435C24D1Ev,_ZThn176_N9S20435C24D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20435C1D0Ev,_ZTv0_n48_N8S20435C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20435C1D0Ev,_ZThn212_N8S20435C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20435C1D1Ev,_ZTv0_n48_N8S20435C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20435C1D1Ev,_ZThn212_N8S20435C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20435C1D0Ev,_ZTv0_n60_N8S20435C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20435C1D0Ev,_ZThn196_N8S20435C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20435C1D1Ev,_ZTv0_n60_N8S20435C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn312_N8S20435C1D1Ev,_ZThn196_N8S20435C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20435C1D0Ev,_ZTv0_n28_N8S20435C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S20435C1D0Ev,_ZThn176_N8S20435C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20435C1D0Ev,_ZThn148_N8S20435C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20435C1D1Ev,_ZTv0_n28_N8S20435C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N8S20435C1D1Ev,_ZThn176_N8S20435C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N8S20435C1D1Ev,_ZThn148_N8S20435C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C1D0Ev,_ZTv0_n12_N8S20435C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20435C1D0Ev,_ZThn124_N8S20435C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20435C1D1Ev,_ZTv0_n12_N8S20435C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S20435C1D1Ev,_ZThn124_N8S20435C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20435C1D0Ev,_ZTv0_n20_N8S20435C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20435C1D0Ev,_ZThn140_N8S20435C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20435C1D0Ev,_ZThn108_N8S20435C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20435C1D1Ev,_ZTv0_n20_N8S20435C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20435C1D1Ev,_ZThn140_N8S20435C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20435C1D1Ev,_ZThn108_N8S20435C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20435C1D0Ev,_ZTv0_n16_N8S20435C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S20435C1D0Ev,_ZThn316_N8S20435C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20435C1D0Ev,_ZThn264_N8S20435C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20435C1D0Ev,_ZThn64_N8S20435C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20435C1D0Ev,_ZThn52_N8S20435C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20435C1D1Ev,_ZTv0_n16_N8S20435C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn512_N8S20435C1D1Ev,_ZThn316_N8S20435C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20435C1D1Ev,_ZThn264_N8S20435C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20435C1D1Ev,_ZThn64_N8S20435C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20435C1D1Ev,_ZThn52_N8S20435C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20435C1 = {  "S20435C1", // class name
  bases_S20435C1, 83,
  &(vtc_S20435C1[0]), // expected_vtbl_contents
  &(vtt_S20435C1[0]), // expected_vtt_contents
  ABISELECT(592,360), // object size
  NSPAIRA(_ZTI8S20435C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20435C1),219, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20435C1),191, //virtual table table var
  49, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names42,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C5  : S9624C48 , virtual S20948C7_nt {
  virtual  ~S20947C5(); // _ZN8S20947C5D2Ev
  S20947C5(); // tgen
};
//SIG(-1 S20947C5) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S20947C5()
{
  extern Class_Descriptor cd_S20947C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20947C5, buf);
    S20947C5 *dp, &lv = *(dp=new (buf) S20947C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20947C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20947C5");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S20947C5");
    test_class_info(&lv, &cd_S20947C5);
    dp->~S20947C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C5(Test_S20947C5, "S20947C5", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20947C5C1Ev();
extern void _ZN8S20947C5D2Ev();
Name_Map name_map_S20947C5[] = {
  NSPAIR(_ZN8S20947C5C1Ev),
  NSPAIR(_ZN8S20947C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S20947C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20947C5[];
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C5D1Ev,_ZThn4_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C5D0Ev,_ZThn4_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C5[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S20947C5[];
static  VTT_ENTRY vtt_S20947C5[] = {
  {&(_ZTV8S20947C5[3]),  3,10},
  {&(_ZTV8S20947C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
static VTBL_ENTRY alt_thunk_names43[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C5D0Ev,_ZThn4_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C5D1Ev,_ZThn4_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C5 = {  "S20947C5", // class name
  bases_S20947C5, 2,
  &(vtc_S20947C5[0]), // expected_vtbl_contents
  &(vtt_S20947C5[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20947C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20947C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20947C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names43,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C9  {
  virtual void  v1(); // _ZN8S20947C92v1Ev
  ~S20947C9(); // tgen
  S20947C9(); // tgen
};
//SIG(-1 S20947C9) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20947C9C1Ev();
extern void _ZN8S20947C9D1Ev();
Name_Map name_map_S20947C9[] = {
  NSPAIR(_ZN8S20947C9C1Ev),
  NSPAIR(_ZN8S20947C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20947C9[];
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY vtc_S20947C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C9[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
Class_Descriptor cd_S20947C9 = {  "S20947C9", // class name
  0,0,//no base classes
  &(vtc_S20947C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20947C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20947C9),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  S20947C4  : S20947C5 , S20948C8 , S20947C9 , virtual S9624C48 {
  ~S20947C4(); // tgen
  S20947C4(); // tgen
};
//SIG(-1 S20947C4) C1{ BC2{ BC3{ m} VBC4{ vd m FD} vd} BC5{ m Fc[7]} BC6{ v1} VBC3}


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

static void Test_S20947C4()
{
  extern Class_Descriptor cd_S20947C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S20947C4, buf);
    S20947C4 *dp, &lv = *(dp=new (buf) S20947C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S20947C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C4)");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*), 0, "S20947C4");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(32,16), "S20947C4");
    check_base_class_offset(lv, (S20947C5*), 0, "S20947C4");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20947C4");
    check_base_class_offset(lv, (S20947C9*), ABISELECT(16,12), "S20947C4");
    /*is_ambiguous_... S20947C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(64,32), "S20947C4");
    test_class_info(&lv, &cd_S20947C4);
    dp->~S20947C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C4(Test_S20947C4, "S20947C4", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S20947C4C1Ev();
extern void _ZN8S20947C4D1Ev();
Name_Map name_map_S20947C4[] = {
  NSPAIR(_ZN8S20947C4C1Ev),
  NSPAIR(_ZN8S20947C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20947C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20947C5,    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_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C9,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20947C4[];
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C4[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern VTBL_ENTRY _ZTV8S20947C4[];
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__8S20947C4[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__8S20947C4[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
static  VTT_ENTRY vtt_S20947C4[] = {
  {&(_ZTV8S20947C4[4]),  4,14},
  {&(_tg__ZTV8S20947C5__8S20947C4[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__8S20947C4[3]),  3,5},
  {&(_ZTV8S20947C4[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
static VTBL_ENTRY alt_thunk_names44[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C4 = {  "S20947C4", // class name
  bases_S20947C4, 6,
  &(vtc_S20947C4[0]), // expected_vtbl_contents
  &(vtt_S20947C4[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S20947C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20947C4),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20947C4),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names44,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C10  : S20947C9 , virtual S9624C39 {
  int s20947c10f0:23;
  virtual  ~S20947C10(); // _ZN9S20947C10D2Ev
  S20947C10(); // tgen
};
//SIG(-1 S20947C10) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S20947C10()
{
  extern Class_Descriptor cd_S20947C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20947C10, buf);
    S20947C10 *dp, &lv = *(dp=new (buf) S20947C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20947C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20947C10)");
    check_base_class_offset(lv, (S20947C9*), 0, "S20947C10");
    check_base_class_offset(lv, (S9624C39*), 0, "S20947C10");
    set_bf_and_test(lv, s20947c10f0, ABISELECT(8,4), 0, 23, 1, "S20947C10");
    set_bf_and_test(lv, s20947c10f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S20947C10");
    test_class_info(&lv, &cd_S20947C10);
    dp->~S20947C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C10(Test_S20947C10, "S20947C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20947C10C1Ev();
extern void _ZN9S20947C10D2Ev();
Name_Map name_map_S20947C10[] = {
  NSPAIR(_ZN9S20947C10C1Ev),
  NSPAIR(_ZN9S20947C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20947C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20947C10[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY vtc_S20947C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S20947C10[];
static  VTT_ENTRY vtt_S20947C10[] = {
  {&(_ZTV9S20947C10[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
Class_Descriptor cd_S20947C10 = {  "S20947C10", // class name
  bases_S20947C10, 2,
  &(vtc_S20947C10[0]), // expected_vtbl_contents
  &(vtt_S20947C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20947C10),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20947C10),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C10),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  S20947C12  : S20948C8 , virtual S20947C5 , virtual S9624C48 {
  virtual  ~S20947C12(); // _ZN9S20947C12D2Ev
  S20947C12(); // tgen
};
//SIG(-1 S20947C12) C1{ BC2{ m Fc[7]} VBC3{ BC4{ m} VBC5{ vd m FD} vd} VBC4 vd}


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

static void Test_S20947C12()
{
  extern Class_Descriptor cd_S20947C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S20947C12, buf);
    S20947C12 *dp, &lv = *(dp=new (buf) S20947C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S20947C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C12)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20947C12");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*), 0, "S20947C12");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(16,12), "S20947C12");
    check_base_class_offset(lv, (S20947C5*), 0, "S20947C12");
    /*is_ambiguous_... S20947C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(48,28), "S20947C12");
    test_class_info(&lv, &cd_S20947C12);
    dp->~S20947C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C12(Test_S20947C12, "S20947C12", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN9S20947C12C1Ev();
extern void _ZN9S20947C12D2Ev();
Name_Map name_map_S20947C12[] = {
  NSPAIR(_ZN9S20947C12C1Ev),
  NSPAIR(_ZN9S20947C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20947C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20947C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C12[];
extern void _ZN9S20947C12D1Ev();
extern void _ZN9S20947C12D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C12D1Ev,_ZThn12_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C12D0Ev,_ZThn12_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C12[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&_ZN9S20947C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C12[];
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C12[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C5D1Ev,_ZThn12_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C5D0Ev,_ZThn12_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__9S20947C12[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
static  VTT_ENTRY vtt_S20947C12[] = {
  {&(_ZTV9S20947C12[6]),  6,13},
  {&(_ZTV9S20947C12[6]),  6,13},
  {&(_ZTV9S20947C12[11]),  11,13},
  {&(_tg__ZTV8S20947C5__9S20947C12[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__9S20947C12[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
static VTBL_ENTRY alt_thunk_names45[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C5D0Ev,_ZThn12_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C5D1Ev,_ZThn12_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C12D0Ev,_ZThn12_N9S20947C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C12D1Ev,_ZThn12_N9S20947C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C12 = {  "S20947C12", // class name
  bases_S20947C12, 5,
  &(vtc_S20947C12[0]), // expected_vtbl_contents
  &(vtt_S20947C12[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI9S20947C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20947C12),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C12),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names45,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C15  : S9624C39 {
  ::S9624C48 s20947c15f0;
  ::S9624C39 s20947c15f1;
};
//SIG(-1 S20947C15) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S20947C15()
{
  extern Class_Descriptor cd_S20947C15;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S20947C15, buf);
    S20947C15 &lv = *(new (buf) S20947C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S20947C15)");
    check2(__alignof__(lv), 1, "__alignof__(S20947C15)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20947C15");
    check_field_offset(lv, s20947c15f0, 0, "S20947C15.s20947c15f0");
    check_field_offset(lv, s20947c15f1, 1, "S20947C15.s20947c15f1");
    test_class_info(&lv, &cd_S20947C15);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C15(Test_S20947C15, "S20947C15", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20947C14  : S9624C48 , S20947C15 , virtual S20947C5 , virtual S20947C9 {
  void *s20947c14f0;
  ~S20947C14(); // tgen
  S20947C14(); // tgen
};
//SIG(-1 S20947C14) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S20947C14()
{
  extern Class_Descriptor cd_S20947C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20947C14, buf);
    S20947C14 *dp, &lv = *(dp=new (buf) S20947C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S20947C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C14)");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S20947C14");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(9,5), "S20947C14");
    check_base_class_offset(lv, (S20947C15*), ABISELECT(9,5), "S20947C14");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*), 0, "S20947C14");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(32,12), "S20947C14");
    check_base_class_offset(lv, (S20947C5*), 0, "S20947C14");
    check_base_class_offset(lv, (S20947C9*), ABISELECT(64,28), "S20947C14");
    check_field_offset(lv, s20947c14f0, ABISELECT(16,8), "S20947C14.s20947c14f0");
    test_class_info(&lv, &cd_S20947C14);
    dp->~S20947C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C14(Test_S20947C14, "S20947C14", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN9S20947C14C1Ev();
extern void _ZN9S20947C14D1Ev();
Name_Map name_map_S20947C14[] = {
  NSPAIR(_ZN9S20947C14C1Ev),
  NSPAIR(_ZN9S20947C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
static Base_Class bases_S20947C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S20947C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20947C9,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C14[];
extern void _ZN9S20947C14D1Ev();
extern void _ZN9S20947C14D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C14D1Ev,_ZThn12_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S20947C14D0Ev,_ZThn12_N9S20947C14D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY vtc_S20947C14[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C14D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern VTBL_ENTRY _ZTV9S20947C14[];
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C14[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn12_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn12_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__9S20947C14[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
static  VTT_ENTRY vtt_S20947C14[] = {
  {&(_ZTV9S20947C14[6]),  6,17},
  {&(_ZTV9S20947C14[6]),  6,17},
  {&(_ZTV9S20947C14[11]),  11,17},
  {&(_ZTV9S20947C14[16]),  16,17},
  {&(_tg__ZTV8S20947C5__9S20947C14[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__9S20947C14[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
static VTBL_ENTRY alt_thunk_names46[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn12_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn12_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C14D0Ev,_ZThn12_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C14D1Ev,_ZThn12_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C14 = {  "S20947C14", // class name
  bases_S20947C14, 7,
  &(vtc_S20947C14[0]), // expected_vtbl_contents
  &(vtt_S20947C14[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI9S20947C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20947C14),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C14),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names46,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C17  : virtual S20947C9 {
  virtual  ~S20947C17(); // _ZN9S20947C17D2Ev
  S20947C17(); // tgen
};
//SIG(-1 S20947C17) C1{ VBC2{ v1} vd}


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

static void Test_S20947C17()
{
  extern Class_Descriptor cd_S20947C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20947C17, buf);
    S20947C17 *dp, &lv = *(dp=new (buf) S20947C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20947C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20947C17)");
    check_base_class_offset(lv, (S20947C9*), 0, "S20947C17");
    test_class_info(&lv, &cd_S20947C17);
    dp->~S20947C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C17(Test_S20947C17, "S20947C17", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20947C17C1Ev();
extern void _ZN9S20947C17D2Ev();
Name_Map name_map_S20947C17[] = {
  NSPAIR(_ZN9S20947C17C1Ev),
  NSPAIR(_ZN9S20947C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
static Base_Class bases_S20947C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    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 _ZTI9S20947C17[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY vtc_S20947C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern VTBL_ENTRY _ZTV9S20947C17[];
static  VTT_ENTRY vtt_S20947C17[] = {
  {&(_ZTV9S20947C17[4]),  4,7},
  {&(_ZTV9S20947C17[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
Class_Descriptor cd_S20947C17 = {  "S20947C17", // class name
  bases_S20947C17, 1,
  &(vtc_S20947C17[0]), // expected_vtbl_contents
  &(vtt_S20947C17[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20947C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20947C17),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C17),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  S20947C16  : S20947C17 , virtual S9624C48 {
  ::S20948C8 s20947c16f0;
  virtual  ~S20947C16(); // _ZN9S20947C16D2Ev
  S20947C16(); // tgen
};
//SIG(-1 S20947C16) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S20947C16()
{
  extern Class_Descriptor cd_S20947C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S20947C16, buf);
    S20947C16 *dp, &lv = *(dp=new (buf) S20947C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S20947C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20947C16)");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*), 0, "S20947C16");
    check_base_class_offset(lv, (S20947C17*), 0, "S20947C16");
    check_base_class_offset(lv, (S9624C48*), 0, "S20947C16");
    check_field_offset(lv, s20947c16f0, ABISELECT(8,4), "S20947C16.s20947c16f0");
    test_class_info(&lv, &cd_S20947C16);
    dp->~S20947C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C16(Test_S20947C16, "S20947C16", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S20947C16C1Ev();
extern void _ZN9S20947C16D2Ev();
Name_Map name_map_S20947C16[] = {
  NSPAIR(_ZN9S20947C16C1Ev),
  NSPAIR(_ZN9S20947C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20947C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    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_S20947C17,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20947C16[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY vtc_S20947C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S20947C16[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C17__9S20947C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
static  VTT_ENTRY vtt_S20947C16[] = {
  {&(_ZTV9S20947C16[5]),  5,8},
  {&(_tg__ZTV9S20947C17__9S20947C16[4]),  4,7},
  {&(_tg__ZTV9S20947C17__9S20947C16[4]),  4,7},
  {&(_ZTV9S20947C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
Class_Descriptor cd_S20947C16 = {  "S20947C16", // class name
  bases_S20947C16, 3,
  &(vtc_S20947C16[0]), // expected_vtbl_contents
  &(vtt_S20947C16[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S20947C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S20947C16),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C13  : S20947C14 , S20947C15 , S20948C7_nt , S20947C16 {
  ~S20947C13(); // tgen
  S20947C13(); // tgen
};
//SIG(-1 S20947C13) C1{ BC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} BC4 BC7 BC9{ BC10{ VBC8 vd} VBC3 vd FC11{ m Fc[7]}}}


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

static void Test_S20947C13()
{
  extern Class_Descriptor cd_S20947C13;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S20947C13, buf);
    S20947C13 *dp, &lv = *(dp=new (buf) S20947C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S20947C13)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C13)");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*), ABISELECT(8,4), "S20947C13");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*), ABISELECT(9,5), "S20947C13");
    check_base_class_offset(lv, (S20947C15*)(S20947C14*), ABISELECT(9,5), "S20947C13");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*), 0, "S20947C13");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(80,44), "S20947C13");
    check_base_class_offset(lv, (S20947C5*)(S20947C14*), 0, "S20947C13");
    check_base_class_offset(lv, (S20947C9*)(S20947C14*), ABISELECT(64,32), "S20947C13");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*), ABISELECT(64,32), "S20947C13");
    check_base_class_offset(lv, (S20947C14*), 0, "S20947C13");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(24,12), "S20947C13");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*), ABISELECT(24,12), "S20947C13");
    /*is_ambiguous_... S20947C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,16), "S20947C13");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*), ABISELECT(64,32), "S20947C13");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*), ABISELECT(112,60), "S20947C13");
    check_base_class_offset(lv, (S20947C16*), ABISELECT(64,32), "S20947C13");
    test_class_info(&lv, &cd_S20947C13);
    dp->~S20947C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C13(Test_S20947C13, "S20947C13", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN9S20947C13C1Ev();
extern void _ZN9S20947C13D1Ev();
Name_Map name_map_S20947C13[] = {
  NSPAIR(_ZN9S20947C13C1Ev),
  NSPAIR(_ZN9S20947C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
static Base_Class bases_S20947C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20947C5,    0, //bcp->offset
    -1, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20947C9,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20947C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20947C15,    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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C17,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20947C16,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C13[];
extern void _ZN9S20947C13D1Ev();
extern void _ZN9S20947C13D0Ev();
extern void ABISELECT(_ZThn32_N9S20947C13D1Ev,_ZThn16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C13D0Ev,_ZThn16_N9S20947C13D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C13D1Ev,_ZThn44_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C13D0Ev,_ZThn44_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C13[] = {
  ABISELECT(112,60),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C13D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20947C13D1Ev,_ZThn16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S20947C13D0Ev,_ZThn16_N9S20947C13D0Ev),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C13[];
extern void _ZN9S20947C14D1Ev();
extern void _ZN9S20947C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C14__9S20947C13[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C14D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C14D1Ev,_ZThn44_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C14D0Ev,_ZThn44_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C14__9S20947C13[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C14__9S20947C13[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C16__9S20947C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C13[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C5D1Ev,_ZThn44_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S20947C5D0Ev,_ZThn44_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__9S20947C13[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
static  VTT_ENTRY vtt_S20947C13[] = {
  {&(_ZTV9S20947C13[7]),  7,26},
  {&(_tg__ZTV9S20947C14__9S20947C13[6]),  6,8},
  {&(_tg__ZTV9S20947C14__9S20947C13[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C14__9S20947C13[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C14__9S20947C13[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C13[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C16__9S20947C13[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C16__9S20947C13[4]),  4,7},
  {&(_tg__ZTV9S20947C16__9S20947C13[5]),  5,8},
  {&(_ZTV9S20947C13[7]),  7,26},
  {&(_ZTV9S20947C13[24]),  24,26},
  {&(_ZTV9S20947C13[18]),  18,26},
  {&(_ZTV9S20947C13[18]),  18,26},
  {&(_tg__ZTV8S20947C5__9S20947C13[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__9S20947C13[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
static VTBL_ENTRY alt_thunk_names47[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20947C5D0Ev,_ZThn44_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20947C5D1Ev,_ZThn44_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C14D0Ev,_ZThn44_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C14D1Ev,_ZThn44_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C13D0Ev,_ZThn44_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C13D1Ev,_ZThn44_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C13 = {  "S20947C13", // class name
  bases_S20947C13, 14,
  &(vtc_S20947C13[0]), // expected_vtbl_contents
  &(vtt_S20947C13[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI9S20947C13),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20947C13),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C13),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names47,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C3  : virtual S20947C4 , virtual S20947C10 , virtual S20947C9 , S20947C12 , S20947C13 {
  virtual  ~S20947C3(); // _ZN8S20947C3D2Ev
  S20947C3(); // tgen
};
//SIG(-1 S20947C3) C1{ VBC2{ BC3{ BC4{ m} VBC5{ vd m FD} vd} BC6{ m Fc[7]} BC7{ v1} VBC4} VBC8{ BC7 VBC9{ m} vd Fi:23} VBC7 BC10{ BC6 VBC3 VBC4 vd} BC11{ BC12{ BC4 BC13{ BC9 FC4 FC9} VBC3 VBC7 Fp} BC13 BC5 BC14{ BC15{ VBC7 vd} VBC4 vd FC6}} vd}


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

static void Test_S20947C3()
{
  extern Class_Descriptor cd_S20947C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S20947C3, buf);
    S20947C3 *dp, &lv = *(dp=new (buf) S20947C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S20947C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C3)");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*), ABISELECT(96,56), "S20947C3");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*), ABISELECT(128,72), "S20947C3");
    /*is_ambiguous_... S20947C3::S20947C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(128,72), "S20947C3");
    check_base_class_offset(lv, (S20947C5*)(S20947C4*), ABISELECT(96,56), "S20947C3");
    check_base_class_offset(lv, (S20948C8*)(S20947C4*), ABISELECT(104,60), "S20947C3");
    check_base_class_offset(lv, (S20947C9*)(S20947C4*), ABISELECT(112,68), "S20947C3");
    /*is_ambiguous_... S20947C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*), ABISELECT(160,88), "S20947C3");
    /*is_ambiguous_... S20947C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C12*), ABISELECT(160,88), "S20947C3");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*), ABISELECT(160,88), "S20947C3");
    check_base_class_offset(lv, (S20947C4*), ABISELECT(96,56), "S20947C3");
    check_base_class_offset(lv, (S20947C9*)(S20947C10*), ABISELECT(160,88), "S20947C3");
    check_base_class_offset(lv, (S9624C39*)(S20947C10*), 0, "S20947C3");
    check_base_class_offset(lv, (S20947C10*), ABISELECT(160,88), "S20947C3");
    /*is_ambiguous_... S20947C3::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*), ABISELECT(80,44), "S20947C3");
    check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*), ABISELECT(80,44), "S20947C3");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(80,44), "S20947C3");
    check_base_class_offset(lv, (S20948C8*)(S20947C12*), ABISELECT(8,4), "S20947C3");
    /*is_ambiguous_... S20947C3::S20947C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*), 0, "S20947C3");
    check_base_class_offset(lv, (S20947C5*)(S20947C12*), 0, "S20947C3");
    check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*), 0, "S20947C3");
    check_base_class_offset(lv, (S20947C12*), 0, "S20947C3");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*), ABISELECT(24,16), "S20947C3");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(25,17), "S20947C3");
    check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(25,17), "S20947C3");
    check_base_class_offset(lv, (S20947C14*)(S20947C13*), ABISELECT(16,12), "S20947C3");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*), ABISELECT(40,24), "S20947C3");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*), ABISELECT(40,24), "S20947C3");
    /*is_ambiguous_... S20947C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*), ABISELECT(48,28), "S20947C3");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(80,44), "S20947C3");
    check_base_class_offset(lv, (S20947C16*)(S20947C13*), ABISELECT(80,44), "S20947C3");
    check_base_class_offset(lv, (S20947C13*), ABISELECT(16,12), "S20947C3");
    test_class_info(&lv, &cd_S20947C3);
    dp->~S20947C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C3(Test_S20947C3, "S20947C3", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S20947C3C1Ev();
extern void _ZN8S20947C3D2Ev();
Name_Map name_map_S20947C3[] = {
  NSPAIR(_ZN8S20947C3C1Ev),
  NSPAIR(_ZN8S20947C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C10;
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C12;
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
static Base_Class bases_S20947C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20947C5,    ABISELECT(96,56), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(112,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    6, //immediately_derived
  0, 1},
  {&cd_S20947C4,    ABISELECT(96,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20947C9,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C10,    ABISELECT(160,88), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20947C9,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20947C12,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S20947C15,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20947C3[];
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void _ZN8S20947C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void _ZN8S20947C3D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S20947C3D1Ev,_ZThn28_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S20947C3D0Ev,_ZThn28_N8S20947C3D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C3D1Ev,_ZThn56_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C3D0Ev,_ZThn56_N8S20947C3D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C3D1Ev,_ZThn72_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S20947C3D0Ev,_ZThn72_N8S20947C3D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20947C3D1Ev,_ZThn88_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20947C3D0Ev,_ZThn88_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C3[] = {
  ABISELECT(80,44),
  0,
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20947C3D1Ev,_ZThn28_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20947C3D0Ev,_ZThn28_N8S20947C3D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev),
  ABISELECT(-160,-88),
  0,
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S20947C3[];
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void _ZN9S20947C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void _ZN9S20947C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C12__8S20947C3[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S20947C12D1Ev,_ZThn72_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S20947C12D0Ev,_ZThn72_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C12__8S20947C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__8S20947C3[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C13__8S20947C3[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C13__8S20947C3[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn60_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn60_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C13__8S20947C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C13__8S20947C3[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__8S20947C3[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C13__8S20947C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C13__8S20947C3[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn60_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn60_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C13__8S20947C3[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13__8S20947C3[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C3[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C4__8S20947C3[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C4__8S20947C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C4__8S20947C3[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C3[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__8S20947C3[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C5D1Ev,_ZThn72_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20947C5D0Ev,_ZThn72_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__A1__8S20947C3[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
static  VTT_ENTRY vtt_S20947C3[] = {
  {&(_ZTV8S20947C3[10]),  10,57},
  {&(_tg__ZTV9S20947C12__8S20947C3[6]),  6,8},
  {&(_tg__ZTV9S20947C12__8S20947C3[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C12__8S20947C3[3]),  3,5},
  {&(_tg__ZTV9S20947C13__8S20947C3[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C13__8S20947C3[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C13__8S20947C3[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C13__8S20947C3[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C13__8S20947C3[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__8S20947C3[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__8S20947C3[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3[5]),  5,8},
  {&(_tg__ZTV8S20947C5__9S20947C13__8S20947C3[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C13__8S20947C3[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C13__8S20947C3[5]),  5,8},
  {&(_tg__ZTV9S20947C16__9S20947C13__8S20947C3[5]),  5,8},
  {&(_ZTV8S20947C3[39]),  39,57},
  {&(_ZTV8S20947C3[47]),  47,57},
  {&(_ZTV8S20947C3[43]),  43,57},
  {&(_ZTV8S20947C3[54]),  54,57},
  {&(_ZTV8S20947C3[30]),  30,57},
  {&(_ZTV8S20947C3[10]),  10,57},
  {&(_ZTV8S20947C3[19]),  19,57},
  {&(_ZTV8S20947C3[30]),  30,57},
  {&(_tg__ZTV8S20947C4__8S20947C3[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C4__8S20947C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C4__8S20947C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C4__8S20947C3[3]),  3,5},
  {&(_tg__ZTV9S20947C10__8S20947C3[3]),  3,6},
  {&(_tg__ZTV8S20947C5__A1__8S20947C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__A1__8S20947C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S20947C3[];
extern  VTBL_ENTRY _ZTV8S20947C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C3[];
static VTBL_ENTRY alt_thunk_names48[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C5D0Ev,_ZThn72_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C5D1Ev,_ZThn72_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn60_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn60_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn60_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn60_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C12D0Ev,_ZThn72_N9S20947C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C12D1Ev,_ZThn72_N9S20947C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C3D0Ev,_ZThn72_N8S20947C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C3D1Ev,_ZThn72_N8S20947C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20947C3D0Ev,_ZThn88_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C3D0Ev,_ZThn56_N8S20947C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20947C3D1Ev,_ZThn88_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C3D1Ev,_ZThn56_N8S20947C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev),
  (VTBL_ENTRY)_ZN8S20947C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev),
  (VTBL_ENTRY)_ZN8S20947C3D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C3 = {  "S20947C3", // class name
  bases_S20947C3, 25,
  &(vtc_S20947C3[0]), // expected_vtbl_contents
  &(vtt_S20947C3[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S20947C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20947C3),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20947C3),32, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names48,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C20  : S9624C48 , virtual S20948C7_nt , S20947C9 , S20947C16 {
  int s20947c20f0;
  virtual  ~S20947C20(); // _ZN9S20947C20D2Ev
  S20947C20(); // tgen
};
//SIG(-1 S20947C20) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


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

static void Test_S20947C20()
{
  extern Class_Descriptor cd_S20947C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S20947C20, buf);
    S20947C20 *dp, &lv = *(dp=new (buf) S20947C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S20947C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C20)");
    /*is_ambiguous_... S20947C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20947C20");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S20947C20");
    /*is_ambiguous_... S20947C20::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*), 0, "S20947C20");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*), ABISELECT(8,4), "S20947C20");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*), ABISELECT(8,4), "S20947C20");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*), ABISELECT(64,36), "S20947C20");
    check_base_class_offset(lv, (S20947C16*), ABISELECT(8,4), "S20947C20");
    check_field_offset(lv, s20947c20f0, ABISELECT(24,16), "S20947C20.s20947c20f0");
    test_class_info(&lv, &cd_S20947C20);
    dp->~S20947C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C20(Test_S20947C20, "S20947C20", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN9S20947C20C1Ev();
extern void _ZN9S20947C20D2Ev();
Name_Map name_map_S20947C20[] = {
  NSPAIR(_ZN9S20947C20C1Ev),
  NSPAIR(_ZN9S20947C20D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
static Base_Class bases_S20947C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20947C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C9,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20947C17,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S20947C16,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S20947C20[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C20D1Ev();
extern void _ZN9S20947C20D0Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C20D1Ev,_ZThn20_N9S20947C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev)();
extern void ABISELECT(_ZThn32_N9S20947C20D0Ev,_ZThn20_N9S20947C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C20[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C20[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C20[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C16__9S20947C20[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
static  VTT_ENTRY vtt_S20947C20[] = {
  {&(_ZTV9S20947C20[5]),  5,21},
  {&(_tg__ZTV9S20947C16__9S20947C20[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C16__9S20947C20[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C16__9S20947C20[4]),  4,7},
  {&(_tg__ZTV9S20947C16__9S20947C20[5]),  5,8},
  {&(_ZTV9S20947C20[19]),  19,21},
  {&(_ZTV9S20947C20[13]),  13,21},
  {&(_ZTV9S20947C20[13]),  13,21},
};
extern VTBL_ENTRY _ZTI9S20947C20[];
extern  VTBL_ENTRY _ZTV9S20947C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C20[];
static VTBL_ENTRY alt_thunk_names49[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C20D0Ev,_ZThn20_N9S20947C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C20D1Ev,_ZThn20_N9S20947C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C20 = {  "S20947C20", // class name
  bases_S20947C20, 7,
  &(vtc_S20947C20[0]), // expected_vtbl_contents
  &(vtt_S20947C20[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI9S20947C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20947C20),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C20),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names49,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C19  : virtual S20947C9 , S20947C4 , virtual S20947C20 , S20948C8 {
  int s20947c19f0;
  virtual  ~S20947C19(); // _ZN9S20947C19D2Ev
  S20947C19(); // tgen
};
//SIG(-1 S20947C19) C1{ VBC2{ v1} BC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC2 VBC5} VBC8{ BC5 VBC6 BC2 BC9{ BC10{ VBC2 vd} VBC5 vd FC7} vd Fi} BC7 vd Fi}


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

static void Test_S20947C19()
{
  extern Class_Descriptor cd_S20947C19;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,18)];
    init_test(&cd_S20947C19, buf);
    S20947C19 *dp, &lv = *(dp=new (buf) S20947C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S20947C19)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C19)");
    /*is_ambiguous_... S20947C19::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*), ABISELECT(96,52), "S20947C19");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(96,52), "S20947C19");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*), 0, "S20947C19");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*), ABISELECT(48,28), "S20947C19");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C20*), ABISELECT(48,28), "S20947C19");
    check_base_class_offset(lv, (S20947C5*)(S20947C4*), 0, "S20947C19");
    check_base_class_offset(lv, (S20948C8*)(S20947C4*), ABISELECT(8,4), "S20947C19");
    check_base_class_offset(lv, (S20947C9*)(S20947C4*), ABISELECT(16,12), "S20947C19");
    /*is_ambiguous_... S20947C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*), ABISELECT(80,44), "S20947C19");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C20*), ABISELECT(80,44), "S20947C19");
    check_base_class_offset(lv, (S20947C4*), 0, "S20947C19");
    /*is_ambiguous_... S20947C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C20*), ABISELECT(88,48), "S20947C19");
    /*is_ambiguous_... S20947C20::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C20*), ABISELECT(88,48), "S20947C19");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(96,52), "S20947C19");
    check_base_class_offset(lv, (S20947C16*)(S20947C20*), ABISELECT(96,52), "S20947C19");
    check_base_class_offset(lv, (S20947C20*), ABISELECT(88,48), "S20947C19");
    /*is_ambiguous_... S20947C19::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(24,16), "S20947C19");
    check_field_offset(lv, s20947c19f0, ABISELECT(32,24), "S20947C19.s20947c19f0");
    test_class_info(&lv, &cd_S20947C19);
    dp->~S20947C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C19(Test_S20947C19, "S20947C19", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN9S20947C19C1Ev();
extern void _ZN9S20947C19D2Ev();
Name_Map name_map_S20947C19[] = {
  NSPAIR(_ZN9S20947C19C1Ev),
  NSPAIR(_ZN9S20947C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C20;
extern VTBL_ENTRY _ZTI9S20947C20[];
extern  VTBL_ENTRY _ZTV9S20947C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S20947C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20947C5,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C9,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20947C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20947C9,    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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(96,52), //bcp->offset
    26, //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20947C20,    ABISELECT(88,48), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C19[];
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn48_N9S20947C19D1Ev,_ZThn28_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn48_N9S20947C19D0Ev,_ZThn28_N9S20947C19D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn88_N9S20947C19D1Ev,_ZThn48_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn88_N9S20947C19D0Ev,_ZThn48_N9S20947C19D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY vtc_S20947C19[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C19[];
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C4__9S20947C19[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C4__9S20947C19[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S20947C5D1Ev,_ZThn28_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S20947C5D0Ev,_ZThn28_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C4__9S20947C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S20947C4D1Ev,_ZThn28_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S20947C4D0Ev,_ZThn28_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C4__9S20947C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C20D1Ev();
extern void _ZN9S20947C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C19[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C19[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C20__9S20947C19[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C20__9S20947C19[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C20__9S20947C19[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev),
};
static  VTT_ENTRY vtt_S20947C19[] = {
  {&(_ZTV9S20947C19[6]),  6,34},
  {&(_tg__ZTV8S20947C4__9S20947C19[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C4__9S20947C19[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C4__9S20947C19[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C4__9S20947C19[3]),  3,5},
  {&(_ZTV9S20947C19[31]),  31,34},
  {&(_ZTV9S20947C19[14]),  14,34},
  {&(_ZTV9S20947C19[23]),  23,34},
  {&(_ZTV9S20947C19[31]),  31,34},
  {&(_tg__ZTV9S20947C20__9S20947C19[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C19[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__9S20947C19[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__9S20947C19[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C19[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C20__9S20947C19[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C20__9S20947C19[5]),  5,8},
  {&(_tg__ZTV9S20947C16__9S20947C20__9S20947C19[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
static VTBL_ENTRY alt_thunk_names50[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20947C4D0Ev,_ZThn28_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20947C4D1Ev,_ZThn28_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20947C5D0Ev,_ZThn28_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20947C5D1Ev,_ZThn28_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20947C19D0Ev,_ZThn48_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S20947C19D1Ev,_ZThn48_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20947C19D0Ev,_ZThn28_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S20947C19D1Ev,_ZThn28_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C19 = {  "S20947C19", // class name
  bases_S20947C19, 14,
  &(vtc_S20947C19[0]), // expected_vtbl_contents
  &(vtt_S20947C19[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI9S20947C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20947C19),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C19),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names50,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C21  : virtual S20947C10 , S20947C16 , S20947C13 , S20947C17 {
  virtual  ~S20947C21(); // _ZN9S20947C21D2Ev
  virtual void  v2(); // _ZN9S20947C212v2Ev
  S20947C21(); // tgen
};
//SIG(-1 S20947C21) C1{ VBC2{ BC3{ v2} VBC4{ m} vd Fi:23} BC5{ BC6{ VBC3 vd} VBC7{ m} vd FC8{ m Fc[7]}} BC9{ BC10{ BC7 BC11{ BC4 FC7 FC4} VBC12{ BC7 VBC13{ vd m FD} vd} VBC3 Fp} BC11 BC13 BC5} BC6 vd v1}


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

static void Test_S20947C21()
{
  extern Class_Descriptor cd_S20947C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S20947C21, buf);
    S20947C21 *dp, &lv = *(dp=new (buf) S20947C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S20947C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C21)");
    check_base_class_offset(lv, (S20947C9*)(S20947C10*), ABISELECT(104,60), "S20947C21");
    check_base_class_offset(lv, (S9624C39*)(S20947C10*), 0, "S20947C21");
    check_base_class_offset(lv, (S20947C10*), ABISELECT(104,60), "S20947C21");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*), 0, "S20947C21");
    check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*), 0, "S20947C21");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*), 0, "S20947C21");
    /*is_ambiguous_... S20947C21::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*), 0, "S20947C21");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*), 0, "S20947C21");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*), 0, "S20947C21");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*), 0, "S20947C21");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C16*), 0, "S20947C21");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*), ABISELECT(24,16), "S20947C21");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(25,17), "S20947C21");
    check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(25,17), "S20947C21");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*), ABISELECT(16,12), "S20947C21");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(128,68), "S20947C21");
    check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*), ABISELECT(16,12), "S20947C21");
    check_base_class_offset(lv, (S20947C14*)(S20947C13*), ABISELECT(16,12), "S20947C21");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*), ABISELECT(40,24), "S20947C21");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*), ABISELECT(40,24), "S20947C21");
    /*is_ambiguous_... S20947C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*), ABISELECT(48,28), "S20947C21");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(80,44), "S20947C21");
    check_base_class_offset(lv, (S20947C16*)(S20947C13*), ABISELECT(80,44), "S20947C21");
    check_base_class_offset(lv, (S20947C13*), ABISELECT(16,12), "S20947C21");
    /*is_ambiguous_... S20947C21::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C17*), ABISELECT(96,56), "S20947C21");
    test_class_info(&lv, &cd_S20947C21);
    dp->~S20947C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C21(Test_S20947C21, "S20947C21", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN9S20947C21C1Ev();
extern void _ZN9S20947C21D2Ev();
Name_Map name_map_S20947C21[] = {
  NSPAIR(_ZN9S20947C21C1Ev),
  NSPAIR(_ZN9S20947C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C10;
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
static Base_Class bases_S20947C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    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
    2, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20947C10,    ABISELECT(104,60), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20947C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20947C17,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20947C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(128,68), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20947C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20947C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(80,44), //bcp->offset
    26, //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
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C17,    ABISELECT(96,56), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C21[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N9S20947C21D1Ev,_ZThn28_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn48_N9S20947C21D0Ev,_ZThn28_N9S20947C21D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn104_N9S20947C21D1Ev,_ZThn60_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn104_N9S20947C21D0Ev,_ZThn60_N9S20947C21D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S20947C21D1Ev,_ZThn68_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S20947C21D0Ev,_ZThn68_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C21[] = {
  ABISELECT(128,68),
  ABISELECT(16,12),
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20947C21D1Ev,_ZThn28_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S20947C21D0Ev,_ZThn28_N9S20947C21D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C21[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C21[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C16__9S20947C21[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C21[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C13__9S20947C21[] = {
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn56_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn56_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C13__9S20947C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C13__9S20947C21[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C13__A1__9S20947C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A1__9S20947C21[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C13__A1__9S20947C21[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn56_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn56_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C13__9S20947C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C13__9S20947C21[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13__9S20947C21[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C21[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C17__A2__9S20947C21[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C21[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C21[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S20947C5D1Ev,_ZThn56_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S20947C5D0Ev,_ZThn56_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__9S20947C21[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
static  VTT_ENTRY vtt_S20947C21[] = {
  {&(_ZTV9S20947C21[9]),  9,54},
  {&(_tg__ZTV9S20947C16__9S20947C21[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C16__9S20947C21[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C16__9S20947C21[4]),  4,7},
  {&(_tg__ZTV9S20947C16__9S20947C21[5]),  5,8},
  {&(_tg__ZTV9S20947C13__9S20947C21[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C13__9S20947C21[6]),  6,8},
  {&(_tg__ZTV9S20947C149S20947C13__9S20947C21[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C13__9S20947C21[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C13__9S20947C21[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C21[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__A1__9S20947C21[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A1__9S20947C21[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C13__A1__9S20947C21[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C21[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20947C13__9S20947C21[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C13__9S20947C21[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C13__9S20947C21[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C21[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C17__A2__9S20947C21[3]),  3,4},
  {&(_ZTV9S20947C21[46]),  46,54},
  {&(_ZTV9S20947C21[9]),  9,54},
  {&(_ZTV9S20947C21[20]),  20,54},
  {&(_ZTV9S20947C21[20]),  20,54},
  {&(_ZTV9S20947C21[52]),  52,54},
  {&(_ZTV9S20947C21[31]),  31,54},
  {&(_ZTV9S20947C21[38]),  38,54},
  {&(_tg__ZTV9S20947C10__9S20947C21[3]),  3,6},
  {&(_tg__ZTV8S20947C5__9S20947C21[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__9S20947C21[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
static VTBL_ENTRY alt_thunk_names51[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20947C5D0Ev,_ZThn56_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20947C5D1Ev,_ZThn56_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn56_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn56_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn56_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn56_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C21D0Ev,_ZThn68_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C21D1Ev,_ZThn68_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20947C21D0Ev,_ZThn60_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S20947C21D1Ev,_ZThn60_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C21 = {  "S20947C21", // class name
  bases_S20947C21, 21,
  &(vtc_S20947C21[0]), // expected_vtbl_contents
  &(vtt_S20947C21[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI9S20947C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20947C21),54, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C21),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names51,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C18  : virtual S20947C15 , S20947C19 , S20947C16 , S20947C21 , virtual S20947C13 {
  virtual  ~S20947C18(); // _ZN9S20947C18D2Ev
  virtual void  v3(); // _ZN9S20947C182v3Ev
  S20947C18(); // tgen
};
//SIG(-1 S20947C18) C1{ VBC2{ BC3{ m} FC4{ m} FC3} BC5{ VBC6{ v2} BC7{ BC8{ BC4 VBC9{ vd m FD} vd} BC10{ m Fc[7]} BC6 VBC4} VBC11{ BC4 VBC9 BC6 BC12{ BC13{ VBC6 vd} VBC4 vd FC10} vd Fi} BC10 vd Fi} BC12 BC14{ VBC15{ BC6 VBC3 vd Fi:23} BC12 BC16{ BC17{ BC4 BC2 VBC8 VBC6 Fp} BC2 BC9 BC12} BC13 vd v3} VBC16 vd v1}


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

static void Test_S20947C18()
{
  extern Class_Descriptor cd_S20947C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,50)];
    init_test(&cd_S20947C18, buf);
    S20947C18 *dp, &lv = *(dp=new (buf) S20947C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,196), "sizeof(S20947C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C18)");
    /*is_ambiguous_... S20947C18::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(168,100), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*), ABISELECT(168,100), "S20947C18");
    /*is_ambiguous_... S20947C19::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C19*), ABISELECT(224,128), "S20947C18");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(224,128), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*), ABISELECT(224,128), "S20947C18");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C21*), ABISELECT(224,128), "S20947C18");
    check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C21*), ABISELECT(224,128), "S20947C18");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*), ABISELECT(224,128), "S20947C18");
    /*is_ambiguous_... S20947C21::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C21*), ABISELECT(224,128), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*), ABISELECT(224,128), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(224,128), "S20947C18");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*)(S20947C19*), 0, "S20947C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*)(S20947C19*), ABISELECT(176,104), "S20947C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C20*), ABISELECT(176,104), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(176,104), "S20947C18");
    check_base_class_offset(lv, (S20947C5*)(S20947C4*)(S20947C19*), 0, "S20947C18");
    check_base_class_offset(lv, (S20948C8*)(S20947C4*)(S20947C19*), ABISELECT(8,4), "S20947C18");
    check_base_class_offset(lv, (S20947C9*)(S20947C4*)(S20947C19*), ABISELECT(16,12), "S20947C18");
    /*is_ambiguous_... S20947C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*)(S20947C19*), ABISELECT(208,120), "S20947C18");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C20*), ABISELECT(208,120), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*), ABISELECT(208,120), "S20947C18");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C21*), ABISELECT(208,120), "S20947C18");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C21*), ABISELECT(208,120), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*), ABISELECT(208,120), "S20947C18");
    check_base_class_offset(lv, (S20947C4*)(S20947C19*), 0, "S20947C18");
    /*is_ambiguous_... S20947C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C20*), ABISELECT(216,124), "S20947C18");
    /*is_ambiguous_... S20947C20::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C20*), ABISELECT(216,124), "S20947C18");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(224,128), "S20947C18");
    check_base_class_offset(lv, (S20947C16*)(S20947C20*), ABISELECT(224,128), "S20947C18");
    check_base_class_offset(lv, (S20947C20*)(S20947C19*), ABISELECT(216,124), "S20947C18");
    /*is_ambiguous_... S20947C19::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C19*), ABISELECT(24,16), "S20947C18");
    check_base_class_offset(lv, (S20947C19*), 0, "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*), ABISELECT(40,28), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C16*), ABISELECT(40,28), "S20947C18");
    check_base_class_offset(lv, (S20947C9*)(S20947C10*), ABISELECT(248,144), "S20947C18");
    check_base_class_offset(lv, (S9624C39*)(S20947C10*), 0, "S20947C18");
    check_base_class_offset(lv, (S20947C10*)(S20947C21*), ABISELECT(248,144), "S20947C18");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C21*), ABISELECT(64,40), "S20947C18");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C21*), ABISELECT(64,40), "S20947C18");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C21*), ABISELECT(88,56), "S20947C18");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*), ABISELECT(89,57), "S20947C18");
    check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*), ABISELECT(89,57), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*), ABISELECT(80,52), "S20947C18");
    check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C21*), ABISELECT(80,52), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*), ABISELECT(80,52), "S20947C18");
    check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C21*), ABISELECT(80,52), "S20947C18");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C21*), ABISELECT(104,64), "S20947C18");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C21*), ABISELECT(104,64), "S20947C18");
    /*is_ambiguous_... S20947C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C21*), ABISELECT(112,68), "S20947C18");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*), ABISELECT(144,84), "S20947C18");
    check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C21*), ABISELECT(144,84), "S20947C18");
    check_base_class_offset(lv, (S20947C13*)(S20947C21*), ABISELECT(80,52), "S20947C18");
    /*is_ambiguous_... S20947C21::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C21*), ABISELECT(160,96), "S20947C18");
    check_base_class_offset(lv, (S20947C21*), ABISELECT(64,40), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*), ABISELECT(280,156), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(281,157), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(281,157), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*), ABISELECT(272,152), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*), ABISELECT(296,164), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*), ABISELECT(296,164), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*), ABISELECT(304,168), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(336,184), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*), ABISELECT(336,184), "S20947C18");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C13*), ABISELECT(272,152), "S20947C18");
    test_class_info(&lv, &cd_S20947C18);
    dp->~S20947C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C18(Test_S20947C18, "S20947C18", ABISELECT(352,196));

#else // __cplusplus

extern void _ZN9S20947C18C1Ev();
extern void _ZN9S20947C18D2Ev();
Name_Map name_map_S20947C18[] = {
  NSPAIR(_ZN9S20947C18C1Ev),
  NSPAIR(_ZN9S20947C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C20;
extern VTBL_ENTRY _ZTI9S20947C20[];
extern  VTBL_ENTRY _ZTV9S20947C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C19;
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C10;
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C21;
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
static Base_Class bases_S20947C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(168,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
  0, 0},
  {&cd_S20947C15,    ABISELECT(168,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_S20947C9,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(176,104), //bcp->offset
    66, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20947C5,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C9,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(208,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
    9, //immediately_derived
  0, 1},
  {&cd_S20947C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(224,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20947C20,    ABISELECT(216,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20947C19,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C9,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20947C10,    ABISELECT(248,144), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S20947C17,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20947C16,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20947C14,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20947C21,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(296,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(304,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(336,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(272,152), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C18[];
extern void _ZN9S20947C18D1Ev();
extern void _ZN9S20947C18D0Ev();
extern void _ZN9S20947C182v3Ev();
extern void _ZN8S20947C92v1Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev)();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N9S20947C18D1Ev,_ZThn68_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C18D0Ev,_ZThn68_N9S20947C18D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20947C18D1Ev,_ZThn104_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20947C18D0Ev,_ZThn104_N9S20947C18D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn216_N9S20947C18D1Ev,_ZThn124_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn216_N9S20947C18D0Ev,_ZThn124_N9S20947C18D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn248_N9S20947C18D1Ev,_ZThn144_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn248_N9S20947C18D0Ev,_ZThn144_N9S20947C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn272_N9S20947C18D1Ev,_ZThn152_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn272_N9S20947C18D0Ev,_ZThn152_N9S20947C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY vtc_S20947C18[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN9S20947C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20947C18D1Ev,_ZThn68_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N9S20947C18D0Ev,_ZThn68_N9S20947C18D0Ev),
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev),
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C18[];
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C19__9S20947C18[] = {
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C49S20947C19__9S20947C18[] = {
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C49S20947C19__9S20947C18[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S20947C5D1Ev,_ZThn104_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S20947C5D0Ev,_ZThn104_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C19__9S20947C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20947C4D1Ev,_ZThn104_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20947C4D0Ev,_ZThn104_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C49S20947C19__9S20947C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C19__9S20947C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn176_N9S20947C19D1Ev,_ZThn104_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn176_N9S20947C19D0Ev,_ZThn104_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C19__9S20947C18[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn216_N9S20947C19D1Ev,_ZThn124_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn216_N9S20947C19D0Ev,_ZThn124_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C19__9S20947C18[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C16__A1__9S20947C18[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C16__A1__9S20947C18[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C16__A1__9S20947C18[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C16__A1__9S20947C18[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C21__9S20947C18[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C21__A2__9S20947C18[] = {
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C21__A2__9S20947C18[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C21__A2__9S20947C18[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C21__A2__9S20947C18[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C21__9S20947C18[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C139S20947C21__9S20947C18[] = {
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C14D1Ev,_ZThn52_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S20947C14D0Ev,_ZThn52_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C21__9S20947C18[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C139S20947C21__9S20947C18[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C139S20947C21__A3__9S20947C18[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C21__A3__9S20947C18[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C139S20947C21__A3__9S20947C18[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C13D1Ev,_ZThn52_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20947C13D0Ev,_ZThn52_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C139S20947C21__9S20947C18[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C139S20947C21__9S20947C18[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C139S20947C21__9S20947C18[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C21__A4__9S20947C18[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C21__A4__9S20947C18[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn184_N9S20947C21D1Ev,_ZThn104_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn184_N9S20947C21D0Ev,_ZThn104_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C21__9S20947C18[] = {
  ABISELECT(-184,-104),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C21__9S20947C18[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C21__9S20947C18[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C21D1Ev,_ZThn64_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C21D0Ev,_ZThn64_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C21__9S20947C18[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C21__9S20947C18[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C21__9S20947C18[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C20D1Ev();
extern void _ZN9S20947C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C18[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C20__9S20947C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C20__9S20947C18[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C20__9S20947C18[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C18[] = {
  ABISELECT(-248,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C18[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C5D1Ev,_ZThn52_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C5D0Ev,_ZThn52_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__A1__9S20947C18[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C18[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C13__A1__9S20947C18[] = {
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C13__A1__9S20947C18[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A1__9S20947C18[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C13__A1__9S20947C18[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C18[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C13__A5__9S20947C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A5__9S20947C18[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C13__A4__9S20947C18[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C13__A1__9S20947C18[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C13__A1__9S20947C18[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C13__A1__9S20947C18[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13__A1__9S20947C18[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
static  VTT_ENTRY vtt_S20947C18[] = {
  {&(_ZTV9S20947C18[11]),  11,118},
  {&(_tg__ZTV9S20947C19__9S20947C18[6]),  6,8},
  {&(_tg__ZTV8S20947C49S20947C19__9S20947C18[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C49S20947C19__9S20947C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C19__9S20947C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C49S20947C19__9S20947C18[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C19__9S20947C18[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C19__9S20947C18[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C19__9S20947C18[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C19__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C16__A1__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C16__A1__9S20947C18[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C16__A1__9S20947C18[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C16__A1__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C21__9S20947C18[9]),  9,13},
  {&(_tg__ZTV9S20947C169S20947C21__A2__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C21__A2__9S20947C18[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C21__A2__9S20947C18[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C21__A2__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C139S20947C21__9S20947C18[6]),  6,8},
  {&(_tg__ZTV9S20947C149S20947C139S20947C21__9S20947C18[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C21__9S20947C18[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C139S20947C21__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C139S20947C21__A3__9S20947C18[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C21__A3__9S20947C18[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C139S20947C21__A3__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20947C139S20947C21__9S20947C18[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C139S20947C21__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C139S20947C21__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C21__A4__9S20947C18[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C21__A4__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C10__9S20947C21__9S20947C18[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C21__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C21__9S20947C18[7]),  7,9},
  {&(_tg__ZTV9S20947C13__9S20947C21__9S20947C18[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20947C21__9S20947C18[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C21__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C21__9S20947C18[4]),  4,7},
  {&(_ZTV9S20947C18[86]),  86,118},
  {&(_ZTV9S20947C18[69]),  69,118},
  {&(_ZTV9S20947C18[78]),  78,118},
  {&(_ZTV9S20947C18[86]),  86,118},
  {&(_ZTV9S20947C18[22]),  22,118},
  {&(_ZTV9S20947C18[34]),  34,118},
  {&(_ZTV9S20947C18[94]),  94,118},
  {&(_ZTV9S20947C18[45]),  45,118},
  {&(_ZTV9S20947C18[45]),  45,118},
  {&(_ZTV9S20947C18[56]),  56,118},
  {&(_ZTV9S20947C18[63]),  63,118},
  {&(_ZTV9S20947C18[104]),  104,118},
  {&(_ZTV9S20947C18[108]),  108,118},
  {&(_ZTV9S20947C18[115]),  115,118},
  {&(_tg__ZTV9S20947C20__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__9S20947C18[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__9S20947C18[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C20__9S20947C18[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C20__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C16__9S20947C20__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C10__9S20947C18[3]),  3,6},
  {&(_tg__ZTV8S20947C5__A1__9S20947C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__A1__9S20947C18[3]),  3,5},
  {&(_tg__ZTV9S20947C13__A1__9S20947C18[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C13__A1__9S20947C18[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C13__A1__9S20947C18[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A1__9S20947C18[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C13__A1__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C18[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__A5__9S20947C18[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A5__9S20947C18[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C13__A4__9S20947C18[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C13__A1__9S20947C18[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C13__A1__9S20947C18[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C13__A1__9S20947C18[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C13__A1__9S20947C18[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20947C18[];
extern  VTBL_ENTRY _ZTV9S20947C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C18[];
static VTBL_ENTRY alt_thunk_names52[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C21D0Ev,_ZThn64_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C21D1Ev,_ZThn64_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20947C21D0Ev,_ZThn104_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S20947C21D1Ev,_ZThn104_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C13D0Ev,_ZThn52_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C13D1Ev,_ZThn52_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C14D0Ev,_ZThn52_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C14D1Ev,_ZThn52_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20947C19D0Ev,_ZThn124_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20947C19D1Ev,_ZThn124_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C19D0Ev,_ZThn104_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C19D1Ev,_ZThn104_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C4D0Ev,_ZThn104_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C4D1Ev,_ZThn104_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C5D0Ev,_ZThn52_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C5D0Ev,_ZThn104_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C5D1Ev,_ZThn52_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C5D1Ev,_ZThn104_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20947C18D0Ev,_ZThn144_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N9S20947C18D1Ev,_ZThn144_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20947C18D0Ev,_ZThn124_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S20947C18D1Ev,_ZThn124_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C18D0Ev,_ZThn104_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C18D1Ev,_ZThn104_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20947C18D0Ev,_ZThn152_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20947C18D1Ev,_ZThn152_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C18 = {  "S20947C18", // class name
  bases_S20947C18, 48,
  &(vtc_S20947C18[0]), // expected_vtbl_contents
  &(vtt_S20947C18[0]), // expected_vtt_contents
  ABISELECT(352,196), // object size
  NSPAIRA(_ZTI9S20947C18),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20947C18),118, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C18),79, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names52,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C22  : virtual S20947C15 , virtual S20947C4 , S20948C8 , S20947C9 {
  void *s20947c22f0;
  ~S20947C22(); // tgen
  S20947C22(); // tgen
};
//SIG(-1 S20947C22) C1{ VBC2{ BC3{ m} FC4{ m} FC3} VBC5{ BC6{ BC4 VBC7{ vd m FD} vd} BC8{ m Fc[7]} BC9{ v1} VBC4} BC8 BC9 Fp}


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

static void Test_S20947C22()
{
  extern Class_Descriptor cd_S20947C22;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,14)];
    init_test(&cd_S20947C22, buf);
    S20947C22 *dp, &lv = *(dp=new (buf) S20947C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S20947C22)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C22)");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(24,16), "S20947C22");
    check_base_class_offset(lv, (S20947C15*), ABISELECT(24,16), "S20947C22");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*), ABISELECT(32,20), "S20947C22");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*), ABISELECT(64,36), "S20947C22");
    check_base_class_offset(lv, (S20947C5*)(S20947C4*), ABISELECT(32,20), "S20947C22");
    check_base_class_offset(lv, (S20948C8*)(S20947C4*), ABISELECT(40,24), "S20947C22");
    check_base_class_offset(lv, (S20947C9*)(S20947C4*), ABISELECT(48,32), "S20947C22");
    /*is_ambiguous_... S20947C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*), 0, "S20947C22");
    check_base_class_offset(lv, (S20947C4*), ABISELECT(32,20), "S20947C22");
    /*is_ambiguous_... S20947C22::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S20947C22");
    /*is_ambiguous_... S20947C22::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*), 0, "S20947C22");
    check_field_offset(lv, s20947c22f0, ABISELECT(16,12), "S20947C22.s20947c22f0");
    test_class_info(&lv, &cd_S20947C22);
    dp->~S20947C22();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C22(Test_S20947C22, "S20947C22", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN9S20947C22C1Ev();
extern void _ZN9S20947C22D1Ev();
Name_Map name_map_S20947C22[] = {
  NSPAIR(_ZN9S20947C22C1Ev),
  NSPAIR(_ZN9S20947C22D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
static Base_Class bases_S20947C22[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(64,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20947C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(48,32), //bcp->offset
    17, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20947C4,    ABISELECT(32,20), //bcp->offset
    9, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI9S20947C22[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C22D1Ev();
extern void _ZN9S20947C22D0Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C22D1Ev,_ZThn20_N9S20947C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev)();
extern void ABISELECT(_ZThn32_N9S20947C22D0Ev,_ZThn20_N9S20947C22D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C22D1Ev,_ZThn36_N9S20947C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev)();
extern void ABISELECT(_ZThn64_N9S20947C22D0Ev,_ZThn36_N9S20947C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20947C22[] = {
  0,
  ABISELECT(64,36),
  ABISELECT(32,20),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C22D0Ev,
  ABISELECT(16,12),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C22[];
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C4__9S20947C22[] = {
  ABISELECT(-32,-20),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C4__9S20947C22[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C4__9S20947C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C4__9S20947C22[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
static  VTT_ENTRY vtt_S20947C22[] = {
  {&(_ZTV9S20947C22[6]),  6,25},
  {&(_ZTV9S20947C22[15]),  15,25},
  {&(_ZTV9S20947C22[23]),  23,25},
  {&(_ZTV9S20947C22[19]),  19,25},
  {&(_tg__ZTV8S20947C4__9S20947C22[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C4__9S20947C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C4__9S20947C22[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C4__9S20947C22[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S20947C22[];
extern  VTBL_ENTRY _ZTV9S20947C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C22[];
static VTBL_ENTRY alt_thunk_names53[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20947C22D0Ev,_ZThn36_N9S20947C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N9S20947C22D1Ev,_ZThn36_N9S20947C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C22D0Ev,_ZThn20_N9S20947C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C22D1Ev,_ZThn20_N9S20947C22D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C22 = {  "S20947C22", // class name
  bases_S20947C22, 11,
  &(vtc_S20947C22[0]), // expected_vtbl_contents
  &(vtt_S20947C22[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI9S20947C22),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20947C22),25, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C22),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names53,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C24  : S20947C9 {
  ~S20947C24(); // tgen
  S20947C24(); // tgen
};
//SIG(-1 S20947C24) C1{ BC2{ v1}}


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

static void Test_S20947C24()
{
  extern Class_Descriptor cd_S20947C24;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20947C24, buf);
    S20947C24 *dp, &lv = *(dp=new (buf) S20947C24());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20947C24)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20947C24)");
    check_base_class_offset(lv, (S20947C9*), 0, "S20947C24");
    test_class_info(&lv, &cd_S20947C24);
    dp->~S20947C24();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C24(Test_S20947C24, "S20947C24", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20947C24C1Ev();
extern void _ZN9S20947C24D1Ev();
Name_Map name_map_S20947C24[] = {
  NSPAIR(_ZN9S20947C24C1Ev),
  NSPAIR(_ZN9S20947C24D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
static Base_Class bases_S20947C24[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C24[];
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY vtc_S20947C24[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C24[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern VTBL_ENTRY _ZTI9S20947C24[];
extern  VTBL_ENTRY _ZTV9S20947C24[];
Class_Descriptor cd_S20947C24 = {  "S20947C24", // class name
  bases_S20947C24, 1,
  &(vtc_S20947C24[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20947C24),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV9S20947C24),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C23  : virtual S20947C24 , virtual S20947C9 , virtual S20947C18 {
  __tsi64 s20947c23f0;
  long s20947c23f1;
  ~S20947C23(); // tgen
  S20947C23(); // tgen
};
//SIG(-1 S20947C23) C1{ VBC2{ BC3{ v1}} VBC3 VBC4{ VBC5{ BC6{ m} FC7{ m} FC6} BC8{ VBC3 BC9{ BC10{ BC7 VBC11{ vd m FD} vd} BC12{ m Fc[7]} BC3 VBC7} VBC13{ BC7 VBC11 BC3 BC14{ BC15{ VBC3 vd} VBC7 vd FC12} vd Fi} BC12 vd Fi} BC14 BC16{ VBC17{ BC3 VBC6 vd Fi:23} BC14 BC18{ BC19{ BC7 BC5 VBC10 VBC3 Fp} BC5 BC11 BC14} BC15 vd v2} VBC18 vd v3} FL Fl}


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

static void Test_S20947C23()
{
  extern Class_Descriptor cd_S20947C23;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(24,53)];
    init_test(&cd_S20947C23, buf);
    S20947C23 *dp, &lv = *(dp=new (buf) S20947C23());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(368,208), "sizeof(S20947C23)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C23)");
    check_base_class_offset(lv, (S20947C9*)(S20947C24*), 0, "S20947C23");
    check_base_class_offset(lv, (S20947C24*), 0, "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C19::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C19*)(S20947C18*), ABISELECT(248,140), "S20947C23");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(248,140), "S20947C23");
    check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(248,140), "S20947C23");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C21::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(248,140), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(200,116), "S20947C23");
    /*is_ambiguous_... S20947C18::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C18*), ABISELECT(200,116), "S20947C23");
    check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(32,16), "S20947C23");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(208,120), "S20947C23");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C20*), ABISELECT(208,120), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(208,120), "S20947C23");
    check_base_class_offset(lv, (S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(32,16), "S20947C23");
    check_base_class_offset(lv, (S20948C8*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(40,20), "S20947C23");
    check_base_class_offset(lv, (S20947C9*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(48,28), "S20947C23");
    /*is_ambiguous_... S20947C4::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*)(S20947C19*)(S20947C18*), 0, "S20947C23");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C20*), 0, "S20947C23");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C18*), 0, "S20947C23");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C21*)(S20947C18*), 0, "S20947C23");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), 0, "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*), 0, "S20947C23");
    check_base_class_offset(lv, (S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(32,16), "S20947C23");
    /*is_ambiguous_... S20947C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C20*), ABISELECT(240,136), "S20947C23");
    /*is_ambiguous_... S20947C20::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C20*), ABISELECT(240,136), "S20947C23");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(248,140), "S20947C23");
    check_base_class_offset(lv, (S20947C16*)(S20947C20*), ABISELECT(248,140), "S20947C23");
    check_base_class_offset(lv, (S20947C20*)(S20947C19*)(S20947C18*), ABISELECT(240,136), "S20947C23");
    /*is_ambiguous_... S20947C19::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C19*)(S20947C18*), ABISELECT(56,32), "S20947C23");
    check_base_class_offset(lv, (S20947C19*)(S20947C18*), ABISELECT(32,16), "S20947C23");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(72,44), "S20947C23");
    /*is_ambiguous_... S20947C18::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C18*), ABISELECT(72,44), "S20947C23");
    check_base_class_offset(lv, (S20947C9*)(S20947C10*), ABISELECT(272,156), "S20947C23");
    check_base_class_offset(lv, (S9624C39*)(S20947C10*), 0, "S20947C23");
    check_base_class_offset(lv, (S20947C10*)(S20947C21*)(S20947C18*), ABISELECT(272,156), "S20947C23");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(96,56), "S20947C23");
    /*is_ambiguous_... S20947C21::S20947C16 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(96,56), "S20947C23");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(120,72), "S20947C23");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(121,73), "S20947C23");
    check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(121,73), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*), ABISELECT(112,68), "S20947C23");
    check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(112,68), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*), ABISELECT(112,68), "S20947C23");
    check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(112,68), "S20947C23");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(136,80), "S20947C23");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(136,80), "S20947C23");
    /*is_ambiguous_... S20947C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(144,84), "S20947C23");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(176,100), "S20947C23");
    check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(176,100), "S20947C23");
    check_base_class_offset(lv, (S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(112,68), "S20947C23");
    /*is_ambiguous_... S20947C21::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(192,112), "S20947C23");
    check_base_class_offset(lv, (S20947C21*)(S20947C18*), ABISELECT(96,56), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*), ABISELECT(296,168), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(297,169), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(297,169), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*), ABISELECT(288,164), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*), ABISELECT(312,176), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*), ABISELECT(312,176), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*), ABISELECT(320,180), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(352,196), "S20947C23");
    /*is_ambiguous_... S20947C23::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*), ABISELECT(352,196), "S20947C23");
    /*is_ambiguous_... S20947C18::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C18*), ABISELECT(288,164), "S20947C23");
    check_base_class_offset(lv, (S20947C18*), ABISELECT(32,16), "S20947C23");
    check_field_offset(lv, s20947c23f0, ABISELECT(8,4), "S20947C23.s20947c23f0");
    check_field_offset(lv, s20947c23f1, ABISELECT(16,12), "S20947C23.s20947c23f1");
    test_class_info(&lv, &cd_S20947C23);
    dp->~S20947C23();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C23(Test_S20947C23, "S20947C23", ABISELECT(368,208));

#else // __cplusplus

extern void _ZN9S20947C23C1Ev();
extern void _ZN9S20947C23D1Ev();
Name_Map name_map_S20947C23[] = {
  NSPAIR(_ZN9S20947C23C1Ev),
  NSPAIR(_ZN9S20947C23D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C24;
extern VTBL_ENTRY _ZTI9S20947C24[];
extern  VTBL_ENTRY _ZTV9S20947C24[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C20;
extern VTBL_ENTRY _ZTI9S20947C20[];
extern  VTBL_ENTRY _ZTV9S20947C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C19;
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C10;
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C21;
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C18;
extern VTBL_ENTRY _ZTI9S20947C18[];
extern  VTBL_ENTRY _ZTV9S20947C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C18[];
static Base_Class bases_S20947C23[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20947C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S20947C24,    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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20947C9,    ABISELECT(248,140), //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    ABISELECT(200,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(200,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
    50, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(208,120), //bcp->offset
    87, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20947C5,    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
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(48,28), //bcp->offset
    35, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C4,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(240,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
    16, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(240,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
    5, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(248,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    77, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(248,140), //bcp->offset
    102, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20947C20,    ABISELECT(240,136), //bcp->offset
    92, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20947C19,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(72,44), //bcp->offset
    38, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S20947C9,    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
    9, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C10,    ABISELECT(272,156), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20947C17,    ABISELECT(96,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(96,56), //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
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(121,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
    28, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(121,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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S20947C14,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(144,84), //bcp->offset
    68, //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
    26, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(176,100), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(112,68), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(192,112), //bcp->offset
    80, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    52, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C21,    ABISELECT(96,56), //bcp->offset
    46, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(296,168), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(297,169), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(297,169), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C14,    ABISELECT(288,164), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    45, //immediately_derived
  0, 0},
  {&cd_S20947C15,    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
    49, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(320,180), //bcp->offset
    127, //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
    13, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(352,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(352,196), //bcp->offset
    131, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(288,164), //bcp->offset
    118, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S20947C18,    ABISELECT(32,16), //bcp->offset
    17, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20947C23[];
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C23D1Ev();
extern void _ZN9S20947C23D0Ev();
extern void ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C23D1Ev,_ZThn16_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S20947C23D0Ev,_ZThn16_N9S20947C23D0Ev)() __attribute__((weak));
extern void _ZN9S20947C182v3Ev();
extern void _ZN8S20947C92v1Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20947C23D1Ev,_ZTvn28_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20947C23D0Ev,_ZTvn28_n48_N9S20947C23D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20947C23D1Ev,_ZTvn40_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20947C23D0Ev,_ZTvn40_n48_N9S20947C23D0Ev)();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C23D1Ev,_ZThn68_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C23D0Ev,_ZThn68_N9S20947C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N9S20947C23D1Ev,_ZTvn68_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20947C23D0Ev,_ZTvn68_n48_N9S20947C23D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20947C23D1Ev,_ZTvn84_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20947C23D0Ev,_ZTvn84_n48_N9S20947C23D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20947C23D1Ev,_ZTvn96_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20947C23D0Ev,_ZTvn96_n48_N9S20947C23D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn208_N9S20947C23D1Ev,_ZThn120_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn208_N9S20947C23D0Ev,_ZThn120_N9S20947C23D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn240_N9S20947C23D1Ev,_ZThn136_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn240_N9S20947C23D0Ev,_ZThn136_N9S20947C23D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C23D1Ev,_ZTvn4_n28_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C23D0Ev,_ZTvn4_n28_N9S20947C23D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn272_N9S20947C23D1Ev,_ZThn156_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn272_N9S20947C23D0Ev,_ZThn156_N9S20947C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn288_N9S20947C23D1Ev,_ZThn164_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn288_N9S20947C23D0Ev,_ZThn164_N9S20947C23D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N9S20947C23D1Ev,_ZTvn16_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C23D0Ev,_ZTvn16_n16_N9S20947C23D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C23D1Ev,_ZTvn32_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C23D0Ev,_ZTvn32_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY vtc_S20947C23[] = {
  ABISELECT(288,164),
  ABISELECT(112,68),
  0,
  ABISELECT(272,156),
  ABISELECT(240,136),
  0,
  ABISELECT(208,120),
  ABISELECT(200,116),
  ABISELECT(32,16),
  ABISELECT(248,140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C23D0Ev,
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-16),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-72,-44),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20947C23D1Ev,_ZTvn28_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20947C23D0Ev,_ZTvn28_n48_N9S20947C23D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(176,100),
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20947C23D1Ev,_ZTvn40_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20947C23D0Ev,_ZTvn40_n48_N9S20947C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  ABISELECT(-112,-68),
  ABISELECT(96,52),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20947C23D1Ev,_ZTvn68_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20947C23D0Ev,_ZTvn68_n48_N9S20947C23D0Ev),
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20947C23D1Ev,_ZTvn84_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20947C23D0Ev,_ZTvn84_n48_N9S20947C23D0Ev),
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20947C23D1Ev,_ZTvn96_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20947C23D0Ev,_ZTvn96_n48_N9S20947C23D0Ev),
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev),
  ABISELECT(-240,-136),
  0,
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev),
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-248,-140),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C23D1Ev,_ZTvn4_n28_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C23D0Ev,_ZTvn4_n28_N9S20947C23D0Ev),
  ABISELECT(-272,-156),
  0,
  ABISELECT(-272,-156),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev),
  ABISELECT(-288,-164),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-288,-164),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C23D1Ev,_ZTvn16_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C23D0Ev,_ZTvn16_n16_N9S20947C23D0Ev),
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C23D1Ev,_ZTvn32_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C23D0Ev,_ZTvn32_n16_N9S20947C23D0Ev),
};
extern VTBL_ENTRY _ZTV9S20947C23[];
extern void _ZN9S20947C18D1Ev();
extern void _ZN9S20947C18D0Ev();
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__9S20947C23[] = {
  ABISELECT(256,148),
  ABISELECT(80,52),
  ABISELECT(-32,-16),
  ABISELECT(240,140),
  ABISELECT(168,100),
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN9S20947C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(208,120),
  ABISELECT(216,124),
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C49S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(-32,-16),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C49S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S20947C5D1Ev,_ZThn104_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S20947C5D0Ev,_ZThn104_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn176_N8S20947C4D1Ev,_ZThn104_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn176_N8S20947C4D0Ev,_ZThn104_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn176_N9S20947C19D1Ev,_ZThn104_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn176_N9S20947C19D0Ev,_ZThn104_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn208_N9S20947C19D1Ev,_ZThn120_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn208_N9S20947C19D0Ev,_ZThn120_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C199S20947C18__9S20947C23[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A1__9S20947C23[] = {
  ABISELECT(-72,-44),
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C18__A1__9S20947C23[] = {
  ABISELECT(176,96),
  ABISELECT(176,96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A1__9S20947C23[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C18__A1__9S20947C23[] = {
  0,
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(176,100),
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C219S20947C18__A2__9S20947C23[] = {
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A2__9S20947C23[] = {
  ABISELECT(152,84),
  ABISELECT(152,84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A2__9S20947C23[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A2__9S20947C23[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C139S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(136,72),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C14D1Ev,_ZThn52_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn96_N9S20947C14D0Ev,_ZThn52_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__9S20947C23[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[] = {
  ABISELECT(72,40),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[] = {
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C13D1Ev,_ZThn52_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn96_N9S20947C13D0Ev,_ZThn52_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__9S20947C23[] = {
  0,
  ABISELECT(-136,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A4__9S20947C23[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A4__9S20947C23[] = {
  0,
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn176_N9S20947C21D1Ev,_ZThn100_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn176_N9S20947C21D0Ev,_ZThn100_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-176,-100),
  0,
  ABISELECT(-272,-156),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C219S20947C18__9S20947C23[] = {
  0,
  ABISELECT(-152,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C21D1Ev,_ZThn64_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C21D0Ev,_ZThn64_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C219S20947C18__9S20947C23[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C18__9S20947C23[] = {
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn176_N9S20947C18D1Ev,_ZThn104_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn176_N9S20947C18D0Ev,_ZThn104_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C18__9S20947C23[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn208_N9S20947C18D1Ev,_ZThn120_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn208_N9S20947C18D0Ev,_ZThn120_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C18__9S20947C23[] = {
  ABISELECT(-208,-120),
  0,
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__A1__9S20947C18__9S20947C23[] = {
  ABISELECT(-72,-44),
  ABISELECT(176,96),
  ABISELECT(176,96),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C21__9S20947C18__9S20947C23[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(176,100),
  ABISELECT(-96,-56),
  ABISELECT(152,84),
  ABISELECT(152,84),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn240_N9S20947C18D1Ev,_ZThn140_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn240_N9S20947C18D0Ev,_ZThn140_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C18__9S20947C23[] = {
  ABISELECT(-240,-140),
  0,
  ABISELECT(-272,-156),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C21__9S20947C18__9S20947C23[] = {
  ABISELECT(-112,-68),
  ABISELECT(136,72),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__9S20947C23[] = {
  ABISELECT(-176,-100),
  ABISELECT(72,40),
  ABISELECT(72,40),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C21__A4__9S20947C18__9S20947C23[] = {
  ABISELECT(56,28),
  ABISELECT(56,28),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn256_N9S20947C18D1Ev,_ZThn148_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn256_N9S20947C18D0Ev,_ZThn148_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C18__9S20947C23[] = {
  ABISELECT(-288,-164),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  ABISELECT(-256,-148),
  ABISELECT(-80,-44),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__9S20947C23[] = {
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C18__9S20947C23[] = {
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C20D1Ev();
extern void _ZN9S20947C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C23[] = {
  ABISELECT(-240,-136),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C23[] = {
  ABISELECT(-248,-140),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C20__9S20947C23[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C20__9S20947C23[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C20__9S20947C23[] = {
  ABISELECT(-248,-140),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C23[] = {
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C23[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C5D1Ev,_ZThn52_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C5D0Ev,_ZThn52_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__A1__9S20947C23[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C23[] = {
  ABISELECT(-288,-164),
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C13__A1__9S20947C23[] = {
  ABISELECT(-40,-24),
  ABISELECT(-176,-96),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C13__A1__9S20947C23[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A1__9S20947C23[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C13__A1__9S20947C23[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C23[] = {
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C13__A5__9S20947C23[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A5__9S20947C23[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C13__A4__9S20947C23[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C13__A1__9S20947C23[] = {
  ABISELECT(176,96),
  ABISELECT(96,52),
  ABISELECT(176,96),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C13__A1__9S20947C23[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C13__A1__9S20947C23[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13__A1__9S20947C23[] = {
  ABISELECT(-352,-196),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
static  VTT_ENTRY vtt_S20947C23[] = {
  {&(_ZTV9S20947C23[14]),  14,139},
  {&(_ZTV9S20947C23[14]),  14,139},
  {&(_ZTV9S20947C23[107]),  107,139},
  {&(_ZTV9S20947C23[32]),  32,139},
  {&(_ZTV9S20947C23[90]),  90,139},
  {&(_ZTV9S20947C23[37]),  37,139},
  {&(_ZTV9S20947C23[99]),  99,139},
  {&(_ZTV9S20947C23[107]),  107,139},
  {&(_ZTV9S20947C23[43]),  43,139},
  {&(_ZTV9S20947C23[55]),  55,139},
  {&(_ZTV9S20947C23[115]),  115,139},
  {&(_ZTV9S20947C23[66]),  66,139},
  {&(_ZTV9S20947C23[66]),  66,139},
  {&(_ZTV9S20947C23[70]),  70,139},
  {&(_ZTV9S20947C23[77]),  77,139},
  {&(_ZTV9S20947C23[84]),  84,139},
  {&(_ZTV9S20947C23[125]),  125,139},
  {&(_ZTV9S20947C23[129]),  129,139},
  {&(_ZTV9S20947C23[136]),  136,139},
  {&(_tg__ZTV9S20947C18__9S20947C23[11]),  11,14},
  {&(_tg__ZTV9S20947C199S20947C18__9S20947C23[6]),  6,8},
  {&(_tg__ZTV8S20947C49S20947C199S20947C18__9S20947C23[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C49S20947C199S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C199S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C199S20947C18__9S20947C23[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A1__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C18__A1__9S20947C23[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A1__9S20947C23[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C18__A1__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C219S20947C18__9S20947C23[9]),  9,13},
  {&(_tg__ZTV9S20947C169S20947C219S20947C18__A2__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A2__9S20947C23[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A2__9S20947C23[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A2__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C139S20947C219S20947C18__9S20947C23[6]),  6,8},
  {&(_tg__ZTV9S20947C149S20947C139S20947C219S20947C18__9S20947C23[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A4__9S20947C23[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A4__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C10__9S20947C219S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C219S20947C18__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C219S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV9S20947C13__9S20947C219S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S20947C219S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C219S20947C18__9S20947C23[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C18__9S20947C23[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C18__9S20947C23[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C16__A1__9S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C21__9S20947C18__9S20947C23[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C21__A4__9S20947C18__9S20947C23[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C18__9S20947C23[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__9S20947C23[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C18__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C20__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__9S20947C23[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__9S20947C23[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C23[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C20__9S20947C23[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C20__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C16__9S20947C20__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C10__9S20947C23[3]),  3,6},
  {&(_tg__ZTV8S20947C5__A1__9S20947C23[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__A1__9S20947C23[3]),  3,5},
  {&(_tg__ZTV9S20947C13__A1__9S20947C23[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C13__A1__9S20947C23[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C13__A1__9S20947C23[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A1__9S20947C23[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C13__A1__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C23[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__A5__9S20947C23[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A5__9S20947C23[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C13__A4__9S20947C23[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C13__A1__9S20947C23[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C13__A1__9S20947C23[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C13__A1__9S20947C23[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C13__A1__9S20947C23[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S20947C23[];
extern  VTBL_ENTRY _ZTV9S20947C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C23[];
static VTBL_ENTRY alt_thunk_names54[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20947C18D0Ev,_ZThn148_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20947C18D1Ev,_ZThn148_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C18D0Ev,_ZThn140_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C18D1Ev,_ZThn140_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C18D0Ev,_ZThn120_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C18D1Ev,_ZThn120_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C18D0Ev,_ZThn104_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C18D1Ev,_ZThn104_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C21D0Ev,_ZThn64_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C21D1Ev,_ZThn64_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C21D0Ev,_ZThn100_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C21D1Ev,_ZThn100_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C13D0Ev,_ZThn52_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C13D1Ev,_ZThn52_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C14D0Ev,_ZThn52_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S20947C14D1Ev,_ZThn52_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C19D0Ev,_ZThn120_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C19D1Ev,_ZThn120_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C19D0Ev,_ZThn104_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S20947C19D1Ev,_ZThn104_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C4D0Ev,_ZThn104_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C4D1Ev,_ZThn104_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C5D0Ev,_ZThn52_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C5D0Ev,_ZThn104_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C5D1Ev,_ZThn52_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S20947C5D1Ev,_ZThn104_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20947C23D0Ev,_ZThn156_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N9S20947C23D1Ev,_ZThn156_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C23D0Ev,_ZThn136_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C23D1Ev,_ZThn136_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C23D0Ev,_ZThn120_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C23D1Ev,_ZThn120_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20947C23D0Ev,_ZThn164_N9S20947C23D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C23D0Ev,_ZThn68_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20947C23D1Ev,_ZThn164_N9S20947C23D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C23D1Ev,_ZThn68_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C23D0Ev,_ZThn16_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C23D1Ev,_ZThn16_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C23 = {  "S20947C23", // class name
  bases_S20947C23, 51,
  &(vtc_S20947C23[0]), // expected_vtbl_contents
  &(vtt_S20947C23[0]), // expected_vtt_contents
  ABISELECT(368,208), // object size
  NSPAIRA(_ZTI9S20947C23),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20947C23),139, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20947C23),98, //virtual table table var
  32, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names54,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C2  : virtual S20947C3 , S20947C12 , S20947C18 , S20947C22 , virtual S20947C23 {
  ~S20947C2(); // tgen
  S20947C2(); // tgen
};
//SIG(-1 S20947C2) C1{ VBC2{ VBC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC8{ v1} VBC5} VBC9{ BC8 VBC10{ m} vd Fi:23} VBC8 BC11{ BC7 VBC4 VBC5 vd} BC12{ BC13{ BC5 BC14{ BC10 FC5 FC10} VBC4 VBC8 Fp} BC14 BC6 BC15{ BC16{ VBC8 vd} VBC5 vd FC7}} vd} BC11 BC17{ VBC14 BC18{ VBC8 BC3 VBC19{ BC5 VBC6 BC8 BC15 vd Fi} BC7 vd Fi} BC15 BC20{ VBC9 BC15 BC12 BC16 vd v2} VBC12 vd v3} BC21{ VBC14 VBC3 BC7 BC8 Fp} VBC22{ VBC23{ BC8} VBC8 VBC17 FL Fl}}


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

static void Test_S20947C2()
{
  extern Class_Descriptor cd_S20947C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(45,103)];
    init_test(&cd_S20947C2, buf);
    S20947C2 *dp, &lv = *(dp=new (buf) S20947C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(704,408), "sizeof(S20947C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C2)");
    /*is_ambiguous_... S20947C2::S20947C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*), ABISELECT(304,184), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*), ABISELECT(336,200), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(336,200), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(336,200), "S20947C2");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C20*), ABISELECT(336,200), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(336,200), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C4 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C4*), ABISELECT(304,184), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C4 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C4*), ABISELECT(312,188), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C4 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C4*), ABISELECT(320,196), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*), 0, "S20947C2");
    /*is_ambiguous_... S20947C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C12*)(S20947C3*), 0, "S20947C2");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C3*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C12*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*)(S20947C19*)(S20947C18*), 0, "S20947C2");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C20*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C18*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C21*)(S20947C18*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*)(S20947C19*)(S20947C18*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C18*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C21*)(S20947C18*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), 0, "S20947C2");
    check_base_class_offset(lv, (S20947C4*)(S20947C3*), ABISELECT(304,184), "S20947C2");
    check_base_class_offset(lv, (S20947C4*)(S20947C22*), ABISELECT(304,184), "S20947C2");
    check_base_class_offset(lv, (S20947C9*)(S20947C10*), ABISELECT(368,216), "S20947C2");
    check_base_class_offset(lv, (S9624C39*)(S20947C10*), 0, "S20947C2");
    check_base_class_offset(lv, (S20947C10*)(S20947C3*), ABISELECT(368,216), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C10*)(S20947C21*)(S20947C18*), ABISELECT(368,216), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C10*)(S20947C21*)(S20947C18*), ABISELECT(368,216), "S20947C2");
    /*is_ambiguous_... S20947C3::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C3*), ABISELECT(288,172), "S20947C2");
    check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(288,172), "S20947C2");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C19*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C23::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C23*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C19*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(288,172), "S20947C2");
    check_base_class_offset(lv, (S20948C8*)(S20947C12*)(S20947C3*), ABISELECT(216,132), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*), ABISELECT(208,128), "S20947C2");
    check_base_class_offset(lv, (S20947C5*)(S20947C12*)(S20947C3*), ABISELECT(208,128), "S20947C2");
    check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(208,128), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C12*), ABISELECT(208,128), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(208,128), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*), ABISELECT(208,128), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(208,128), "S20947C2");
    check_base_class_offset(lv, (S20947C12*)(S20947C3*), ABISELECT(208,128), "S20947C2");
    /*is_ambiguous_... S20947C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(232,144), "S20947C2");
    check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(233,145), "S20947C2");
    check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(233,145), "S20947C2");
    check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(224,140), "S20947C2");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C3*), ABISELECT(248,152), "S20947C2");
    /*is_ambiguous_... S20947C13::S20947C15 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C3*), ABISELECT(248,152), "S20947C2");
    /*is_ambiguous_... S20947C13::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C3*), ABISELECT(256,156), "S20947C2");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(288,172), "S20947C2");
    check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(288,172), "S20947C2");
    check_base_class_offset(lv, (S20947C13*)(S20947C3*), ABISELECT(224,140), "S20947C2");
    check_base_class_offset(lv, (S20947C3*), ABISELECT(208,128), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C12*), ABISELECT(8,4), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S20947C12*), 0, "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(379,223), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C18*), ABISELECT(379,223), "S20947C2");
    check_base_class_offset(lv, (S20947C15*)(S20947C22*), ABISELECT(379,223), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C18*), ABISELECT(379,223), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(16,12), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(16,12), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(24,16), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(32,24), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(16,12), "S20947C2");
    /*is_ambiguous_... S20947C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C20*), ABISELECT(384,228), "S20947C2");
    /*is_ambiguous_... S20947C20::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C20*), ABISELECT(384,228), "S20947C2");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(392,232), "S20947C2");
    check_base_class_offset(lv, (S20947C16*)(S20947C20*), ABISELECT(392,232), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C20*)(S20947C19*)(S20947C18*), ABISELECT(384,228), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C20*)(S20947C19*)(S20947C18*), ABISELECT(384,228), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C19*)(S20947C18*), ABISELECT(40,28), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C19*)(S20947C18*), ABISELECT(16,12), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(56,40), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C18*), ABISELECT(56,40), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(80,52), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(80,52), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(104,68), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(105,69), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(105,69), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(96,64), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(120,76), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(120,76), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(128,80), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(160,96), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(160,96), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(96,64), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(176,108), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C21*)(S20947C18*), ABISELECT(80,52), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*), ABISELECT(424,252), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(425,253), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(425,253), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*), ABISELECT(416,248), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*), ABISELECT(440,260), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*), ABISELECT(440,260), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*), ABISELECT(448,264), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(480,280), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*), ABISELECT(480,280), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C18*), ABISELECT(416,248), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C18*), ABISELECT(416,248), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C18*), ABISELECT(16,12), "S20947C2");
    /*is_ambiguous_... S20947C22::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C22*), ABISELECT(192,116), "S20947C2");
    /*is_ambiguous_... S20947C22::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C22*), ABISELECT(184,112), "S20947C2");
    check_base_class_offset(lv, (S20947C22*), ABISELECT(184,112), "S20947C2");
    check_base_class_offset(lv, (S20947C9*)(S20947C24*), ABISELECT(496,292), "S20947C2");
    check_base_class_offset(lv, (S20947C24*)(S20947C23*), ABISELECT(496,292), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(528,308), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(528,308), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(536,312), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(544,320), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(528,308), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C19*)(S20947C18*), ABISELECT(552,324), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C19*)(S20947C18*), ABISELECT(528,308), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(568,336), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C18*), ABISELECT(568,336), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(592,348), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(592,348), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(616,364), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(617,365), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(617,365), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(608,360), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(632,372), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(632,372), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(640,376), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(672,392), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(672,392), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(608,360), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(688,404), "S20947C2");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C21*)(S20947C18*), ABISELECT(592,348), "S20947C2");
    check_base_class_offset(lv, (S20947C18*)(S20947C23*), ABISELECT(528,308), "S20947C2");
    check_base_class_offset(lv, (S20947C23*), ABISELECT(496,292), "S20947C2");
    test_class_info(&lv, &cd_S20947C2);
    dp->~S20947C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C2(Test_S20947C2, "S20947C2", ABISELECT(704,408));

#else // __cplusplus

extern void _ZN8S20947C2C1Ev();
extern void _ZN8S20947C2D1Ev();
Name_Map name_map_S20947C2[] = {
  NSPAIR(_ZN8S20947C2C1Ev),
  NSPAIR(_ZN8S20947C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C10;
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C12;
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C3;
extern VTBL_ENTRY _ZTI8S20947C3[];
extern  VTBL_ENTRY _ZTV8S20947C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C12;
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C20;
extern VTBL_ENTRY _ZTI9S20947C20[];
extern  VTBL_ENTRY _ZTV9S20947C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C19;
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C21;
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C18;
extern VTBL_ENTRY _ZTI9S20947C18[];
extern  VTBL_ENTRY _ZTV9S20947C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C18[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C22;
extern VTBL_ENTRY _ZTI9S20947C22[];
extern  VTBL_ENTRY _ZTV9S20947C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C22[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C24;
extern VTBL_ENTRY _ZTI9S20947C24[];
extern  VTBL_ENTRY _ZTV9S20947C24[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C19;
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C21;
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
extern Class_Descriptor cd_S20947C18;
extern VTBL_ENTRY _ZTI9S20947C18[];
extern  VTBL_ENTRY _ZTV9S20947C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C18[];
extern Class_Descriptor cd_S20947C23;
extern VTBL_ENTRY _ZTI9S20947C23[];
extern  VTBL_ENTRY _ZTV9S20947C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C23[];
static Base_Class bases_S20947C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(304,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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(336,200), //bcp->offset
    138, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20947C5,    ABISELECT(304,184), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(312,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
    6, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(320,196), //bcp->offset
    135, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20947C4,    ABISELECT(304,184), //bcp->offset
    127, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    121, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20947C9,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C10,    ABISELECT(368,216), //bcp->offset
    143, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    125, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20947C9,    ABISELECT(288,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20947C12,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(232,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(233,145), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(233,145), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C14,    ABISELECT(224,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    101, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(248,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
    20, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(248,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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(256,156), //bcp->offset
    115, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    72, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(288,172), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    106, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(288,172), //bcp->offset
    119, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    73, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(224,140), //bcp->offset
    106, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    71, //bcp->index_in_construction_vtbl_array
    100, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20947C3,    ABISELECT(208,128), //bcp->offset
    94, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C12,    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
    44, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(379,223), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(379,223), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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
    31, //immediately_derived
  0, 0},
  {&cd_S20947C5,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    34, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(32,24), //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
    46, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20947C4,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(384,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(384,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
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(392,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    130, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(392,232), //bcp->offset
    161, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    76, //bcp->index_in_construction_vtbl_array
    129, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C20,    ABISELECT(384,228), //bcp->offset
    151, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    75, //bcp->index_in_construction_vtbl_array
    128, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    41, //immediately_derived
  0, 0},
  {&cd_S20947C19,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(56,40), //bcp->offset
    36, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    77, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(105,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
    48, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(105,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
    49, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,80), //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
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(160,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(160,96), //bcp->offset
    70, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    80, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(96,64), //bcp->offset
    57, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    79, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(176,108), //bcp->offset
    78, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    81, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20947C21,    ABISELECT(80,52), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    78, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(424,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
    61, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(425,253), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(425,253), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    137, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(440,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
    63, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(440,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
    67, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(448,264), //bcp->offset
    178, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    83, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    142, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(480,280), //bcp->offset
    182, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    84, //bcp->index_in_construction_vtbl_array
    141, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(416,248), //bcp->offset
    169, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    82, //bcp->index_in_construction_vtbl_array
    136, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S20947C18,    ABISELECT(16,12), //bcp->offset
    19, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    74, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C8,    ABISELECT(192,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
    71, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(184,112), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    61, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20947C22,    ABISELECT(184,112), //bcp->offset
    85, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    85, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C9,    ABISELECT(496,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
    25, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S20947C24,    ABISELECT(496,292), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    87, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(528,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
    75, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(528,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(536,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
    78, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(544,320), //bcp->offset
    226, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    89, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20947C4,    ABISELECT(528,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    170, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(552,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20947C19,    ABISELECT(528,308), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(568,336), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    179, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(568,336), //bcp->offset
    229, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    90, //bcp->index_in_construction_vtbl_array
    178, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(592,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(592,348), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(616,364), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(617,365), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(617,365), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(608,360), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(632,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
    90, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(632,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
    94, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(640,376), //bcp->offset
    259, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    93, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(672,392), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    193, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(672,392), //bcp->offset
    263, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    94, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(608,360), //bcp->offset
    250, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    92, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(688,404), //bcp->offset
    271, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    95, //bcp->index_in_construction_vtbl_array
    200, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20947C21,    ABISELECT(592,348), //bcp->offset
    237, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    91, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20947C18,    ABISELECT(528,308), //bcp->offset
    208, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    88, //bcp->index_in_construction_vtbl_array
    168, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S20947C23,    ABISELECT(496,292), //bcp->offset
    190, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    86, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20947C2[];
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void _ZN8S20947C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void _ZN8S20947C2D0Ev() __attribute__((weak));
extern void ABISELECT(_ZThn16_N8S20947C2D1Ev,_ZThn12_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C2D0Ev,_ZThn12_N8S20947C2D0Ev)();
extern void _ZN9S20947C182v3Ev();
extern void _ZN8S20947C92v1Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn56_N8S20947C2D1Ev,_ZThn40_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20947C2D0Ev,_ZThn40_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C2D1Ev,_ZThn52_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C2D0Ev,_ZThn52_N8S20947C2D0Ev)();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C2D1Ev,_ZThn64_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C2D0Ev,_ZThn64_N8S20947C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn128_N8S20947C2D1Ev,_ZThn80_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C2D0Ev,_ZThn80_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N8S20947C2D1Ev,_ZThn96_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20947C2D0Ev,_ZThn96_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn176_N8S20947C2D1Ev,_ZThn108_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20947C2D0Ev,_ZThn108_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn184_N8S20947C2D1Ev,_ZThn112_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S20947C2D0Ev,_ZThn112_N8S20947C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20947C2D1Ev,_ZThn128_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20947C2D0Ev,_ZThn128_N8S20947C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S20947C2D1Ev,_ZThn140_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S20947C2D0Ev,_ZThn140_N8S20947C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N8S20947C2D1Ev,_ZTvn28_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20947C2D0Ev,_ZTvn28_n16_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20947C2D1Ev,_ZTvn44_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20947C2D0Ev,_ZTvn44_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S20947C2D1Ev,_ZThn184_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S20947C2D0Ev,_ZThn184_N8S20947C2D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20947C2D1Ev,_ZTv0_n12_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20947C2D1Ev,_ZThn200_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C2D0Ev,_ZTv0_n12_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20947C2D0Ev,_ZThn200_N8S20947C2D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S20947C2D1Ev,_ZThn216_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S20947C2D0Ev,_ZThn216_N8S20947C2D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20947C2D1Ev,_ZTv0_n28_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S20947C2D1Ev,_ZThn228_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20947C2D0Ev,_ZTv0_n28_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S20947C2D0Ev,_ZThn228_N8S20947C2D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20947C2D1Ev,_ZTvn4_n28_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20947C2D0Ev,_ZTvn4_n28_N8S20947C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn416_N8S20947C2D1Ev,_ZThn248_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn416_N8S20947C2D0Ev,_ZThn248_N8S20947C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S20947C2D1Ev,_ZTvn16_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20947C2D0Ev,_ZTvn16_n16_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20947C2D1Ev,_ZTvn32_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20947C2D0Ev,_ZTvn32_n16_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20947C2D1Ev,_ZTv0_n60_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn496_N8S20947C2D1Ev,_ZThn292_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20947C2D0Ev,_ZTv0_n60_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn496_N8S20947C2D0Ev,_ZThn292_N8S20947C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20947C2D1Ev,_ZTv0_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S20947C2D1Ev,_ZThn308_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20947C2D0Ev,_ZTv0_n48_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S20947C2D0Ev,_ZThn308_N8S20947C2D0Ev)() __attribute__((weak));
extern void _ZN9S20947C182v3Ev();
extern void _ZN8S20947C92v1Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20947C2D1Ev,_ZTvn28_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20947C2D0Ev,_ZTvn28_n48_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20947C2D1Ev,_ZTvn40_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20947C2D0Ev,_ZTvn40_n48_N8S20947C2D0Ev)();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20947C2D1Ev,_ZThn360_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20947C2D0Ev,_ZThn360_N8S20947C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N8S20947C2D1Ev,_ZTvn68_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20947C2D0Ev,_ZTvn68_n48_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20947C2D1Ev,_ZTvn84_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20947C2D0Ev,_ZTvn84_n48_N8S20947C2D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20947C2D1Ev,_ZTvn96_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20947C2D0Ev,_ZTvn96_n48_N8S20947C2D0Ev)();
static  VTBL_ENTRY vtc_S20947C2[] = {
  ABISELECT(528,308),
  ABISELECT(496,292),
  ABISELECT(496,292),
  ABISELECT(416,248),
  ABISELECT(384,228),
  ABISELECT(379,223),
  ABISELECT(288,172),
  0,
  ABISELECT(368,216),
  ABISELECT(304,184),
  ABISELECT(208,128),
  0,
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-16,-12),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20947C2D1Ev,_ZThn12_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20947C2D0Ev,_ZThn12_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-56,-40),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20947C2D1Ev,_ZThn40_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20947C2D0Ev,_ZThn40_N8S20947C2D0Ev),
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-80,-52),
  ABISELECT(288,164),
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C2D1Ev,_ZThn52_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C2D0Ev,_ZThn52_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-96,-64),
  ABISELECT(240,136),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S20947C2D1Ev,_ZThn80_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn128_N8S20947C2D0Ev,_ZThn80_N8S20947C2D0Ev),
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20947C2D1Ev,_ZThn96_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20947C2D0Ev,_ZThn96_N8S20947C2D0Ev),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20947C2D1Ev,_ZThn108_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20947C2D0Ev,_ZThn108_N8S20947C2D0Ev),
  ABISELECT(-184,-112),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20947C2D1Ev,_ZThn112_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20947C2D0Ev,_ZThn112_N8S20947C2D0Ev),
  ABISELECT(80,44),
  ABISELECT(-208,-128),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-208,-128),
  0,
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
  ABISELECT(-224,-140),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-224,-140),
  ABISELECT(112,60),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20947C2D1Ev,_ZTvn28_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20947C2D0Ev,_ZTvn28_n16_N8S20947C2D0Ev),
  ABISELECT(-288,-172),
  0,
  0,
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C2D1Ev,_ZTvn44_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C2D0Ev,_ZTvn44_n16_N8S20947C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-304,-184),
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev),
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C2D1Ev,_ZTv0_n12_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C2D0Ev,_ZTv0_n12_N8S20947C2D0Ev),
  ABISELECT(-368,-216),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev),
  ABISELECT(-384,-228),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20947C2D1Ev,_ZTv0_n28_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20947C2D0Ev,_ZTv0_n28_N8S20947C2D0Ev),
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20947C2D1Ev,_ZTvn4_n28_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20947C2D0Ev,_ZTvn4_n28_N8S20947C2D0Ev),
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-416,-248),
  ABISELECT(-80,-48),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20947C2D1Ev,_ZTvn16_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20947C2D0Ev,_ZTvn16_n16_N8S20947C2D0Ev),
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20947C2D1Ev,_ZTvn32_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20947C2D0Ev,_ZTvn32_n16_N8S20947C2D0Ev),
  ABISELECT(-496,-292),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-496,-292),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-496,-292),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,16),
  ABISELECT(-208,-120),
  0,
  0,
  ABISELECT(-496,-292),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20947C2D1Ev,_ZTv0_n60_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20947C2D0Ev,_ZTv0_n60_N8S20947C2D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-528,-308),
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-528,-308),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-528,-308),
  ABISELECT(-192,-108),
  ABISELECT(-528,-308),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20947C2D1Ev,_ZTv0_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20947C2D0Ev,_ZTv0_n48_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
  ABISELECT(-544,-320),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-568,-336),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-568,-336),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20947C2D1Ev,_ZTvn28_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20947C2D0Ev,_ZTvn28_n48_N8S20947C2D0Ev),
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-592,-348),
  ABISELECT(-224,-132),
  ABISELECT(-592,-348),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-592,-348),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20947C2D1Ev,_ZTvn40_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20947C2D0Ev,_ZTvn40_n48_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(-608,-360),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-608,-360),
  ABISELECT(-272,-160),
  ABISELECT(-608,-360),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
  ABISELECT(-640,-376),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20947C2D1Ev,_ZTvn68_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20947C2D0Ev,_ZTvn68_n48_N8S20947C2D0Ev),
  ABISELECT(-672,-392),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-672,-392),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20947C2D1Ev,_ZTvn84_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20947C2D0Ev,_ZTvn84_n48_N8S20947C2D0Ev),
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20947C2D1Ev,_ZTvn96_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20947C2D0Ev,_ZTvn96_n48_N8S20947C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S20947C2[];
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void _ZN9S20947C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void _ZN9S20947C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C12__A1__8S20947C2[] = {
  0,
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn208_N9S20947C12D1Ev,_ZThn128_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn208_N9S20947C12D0Ev,_ZThn128_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C12__A1__8S20947C2[] = {
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S20947C12D1Ev,_ZThn200_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S20947C12D0Ev,_ZThn200_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C12__A1__8S20947C2[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern void _ZN9S20947C18D1Ev();
extern void _ZN9S20947C18D0Ev();
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__A__8S20947C2[] = {
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-16,-12),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN9S20947C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C199S20947C18__8S20947C2[] = {
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C49S20947C199S20947C18__A1__8S20947C2[] = {
  ABISELECT(-16,-12),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C49S20947C199S20947C18__A2__8S20947C2[] = {
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn320_N8S20947C5D1Ev,_ZThn188_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn320_N8S20947C5D0Ev,_ZThn188_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__A2__8S20947C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S20947C4D1Ev,_ZThn188_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S20947C4D0Ev,_ZThn188_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__A1__8S20947C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C199S20947C18__8S20947C2[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S20947C19D1Ev,_ZThn188_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S20947C19D0Ev,_ZThn188_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C199S20947C18__8S20947C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn368_N9S20947C19D1Ev,_ZThn216_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn368_N9S20947C19D0Ev,_ZThn216_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C199S20947C18__8S20947C2[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A2__8S20947C2[] = {
  ABISELECT(-56,-40),
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C18__A2__8S20947C2[] = {
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A2__8S20947C2[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C18__A2__8S20947C2[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-80,-52),
  ABISELECT(288,164),
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A3__8S20947C2[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A3__8S20947C2[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn64_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn64_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S20947C14D1Ev,_ZThn136_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn240_N9S20947C14D0Ev,_ZThn136_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn64_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn64_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn240_N9S20947C13D1Ev,_ZThn136_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn240_N9S20947C13D0Ev,_ZThn136_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A5__8S20947C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A5__8S20947C2[] = {
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn288_N9S20947C21D1Ev,_ZThn164_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn288_N9S20947C21D0Ev,_ZThn164_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(-288,-164),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C219S20947C18__8S20947C2[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-16,-12),
  ABISELECT(240,136),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S20947C21D1Ev,_ZThn76_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S20947C21D0Ev,_ZThn76_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(-128,-76),
  ABISELECT(128,72),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn256_N9S20947C21D1Ev,_ZThn148_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn256_N9S20947C21D0Ev,_ZThn148_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C219S20947C18__8S20947C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C18__A__8S20947C2[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn320_N9S20947C18D1Ev,_ZThn188_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn320_N9S20947C18D0Ev,_ZThn188_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S20947C18D1Ev,_ZThn216_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S20947C18D0Ev,_ZThn216_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__A1__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-56,-40),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C21__9S20947C18__A__8S20947C2[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-80,-52),
  ABISELECT(288,164),
  ABISELECT(-80,-52),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn352_N9S20947C18D1Ev,_ZThn204_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn352_N9S20947C18D0Ev,_ZThn204_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-352,-204),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C21__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-96,-64),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-80,-52),
  ABISELECT(240,136),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S20947C18D1Ev,_ZThn116_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S20947C18D0Ev,_ZThn116_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-192,-116),
  ABISELECT(128,72),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-160,-96),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C21__A4__9S20947C18__A__8S20947C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn400_N9S20947C18D1Ev,_ZThn236_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn400_N9S20947C18D0Ev,_ZThn236_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-400,-236),
  ABISELECT(-80,-48),
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C18__A__8S20947C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C22D1Ev();
extern void _ZN9S20947C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C22__8S20947C2[] = {
  ABISELECT(-184,-112),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C22D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev)();
extern void ABISELECT(_ZThn120_N9S20947C22D1Ev,_ZThn72_N9S20947C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev)();
extern void ABISELECT(_ZThn120_N9S20947C22D0Ev,_ZThn72_N9S20947C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C4__9S20947C22__8S20947C2[] = {
  ABISELECT(16,12),
  ABISELECT(-120,-72),
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev)();
extern void ABISELECT(_ZThn152_N9S20947C22D1Ev,_ZThn88_N9S20947C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev)();
extern void ABISELECT(_ZThn152_N9S20947C22D0Ev,_ZThn88_N9S20947C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C22__8S20947C2[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C4__9S20947C22__8S20947C2[] = {
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void _ZN8S20947C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void _ZN8S20947C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C3__8S20947C2[] = {
  ABISELECT(80,44),
  ABISELECT(-208,-128),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void _ZN9S20947C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void _ZN9S20947C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C128S20947C3__8S20947C2[] = {
  ABISELECT(-208,-128),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S20947C12D1Ev,_ZThn72_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S20947C12D0Ev,_ZThn72_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C128S20947C3__8S20947C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(-224,-140),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn60_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn60_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C138S20947C3__8S20947C2[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(-288,-172),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C138S20947C3__8S20947C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn60_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn60_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C138S20947C3__8S20947C2[] = {
  ABISELECT(-288,-172),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C3D1Ev,_ZThn56_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C3D0Ev,_ZThn56_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C3__8S20947C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C3D1Ev,_ZThn72_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S20947C3D0Ev,_ZThn72_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C3__8S20947C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C4__8S20947C3__8S20947C2[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20947C3D1Ev,_ZThn88_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20947C3D0Ev,_ZThn88_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C3__8S20947C2[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-368,-216),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__8S20947C3__8S20947C2[] = {
  ABISELECT(-288,-172),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__8S20947C3__8S20947C2[] = {
  ABISELECT(-224,-140),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C2[] = {
  ABISELECT(-304,-184),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C4__8S20947C2[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C4__8S20947C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C4__8S20947C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C2[] = {
  ABISELECT(-368,-216),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__8S20947C2[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C5D1Ev,_ZThn72_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20947C5D0Ev,_ZThn72_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__A1__8S20947C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C20D1Ev();
extern void _ZN9S20947C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C20__8S20947C2[] = {
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__A1__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C20__A1__8S20947C2[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C20__A1__8S20947C2[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C20__A1__8S20947C2[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C20__8S20947C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C20__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C20__8S20947C2[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A2__8S20947C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C13__A2__8S20947C2[] = {
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C13__A2__8S20947C2[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A2__8S20947C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C13__A2__8S20947C2[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A5__8S20947C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C13__A6__8S20947C2[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A6__8S20947C2[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C13__A5__8S20947C2[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C13__A2__8S20947C2[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C13__A2__8S20947C2[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C13__A2__8S20947C2[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13__A2__8S20947C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C23D1Ev();
extern void _ZN9S20947C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C23__8S20947C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-496,-292),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-496,-292),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,16),
  ABISELECT(-208,-120),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C23D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C23__8S20947C2[] = {
  0,
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C23D1Ev,_ZThn16_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S20947C23D0Ev,_ZThn16_N9S20947C23D0Ev)() __attribute__((weak));
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__9S20947C23__8S20947C2[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-528,-308),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-528,-308),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C23__8S20947C2[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C49S20947C199S20947C18__A2__9S20947C23__8S20947C2[] = {
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C23__8S20947C2[] = {
  ABISELECT(112,64),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C23D1Ev,_ZTvn4_n28_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C23D0Ev,_ZTvn4_n28_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C23__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C23D1Ev,_ZTvn4_n28_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C23D0Ev,_ZTvn4_n28_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20947C23D1Ev,_ZTvn28_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20947C23D0Ev,_ZTvn28_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A1__9S20947C23__8S20947C2[] = {
  ABISELECT(-568,-336),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20947C23D1Ev,_ZTvn28_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20947C23D0Ev,_ZTvn28_n48_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20947C23D1Ev,_ZTvn40_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20947C23D0Ev,_ZTvn40_n48_N9S20947C23D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__9S20947C23__8S20947C2[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-592,-348),
  ABISELECT(-224,-132),
  ABISELECT(-592,-348),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20947C23D1Ev,_ZTvn40_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20947C23D0Ev,_ZTvn40_n48_N9S20947C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C23__8S20947C2[] = {
  ABISELECT(128,76),
  0,
  ABISELECT(-368,-216),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C23D1Ev,_ZThn68_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C23D0Ev,_ZThn68_N9S20947C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23__8S20947C2[] = {
  ABISELECT(-608,-360),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-112,-68),
  ABISELECT(-272,-160),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C23__8S20947C2[] = {
  ABISELECT(288,164),
  ABISELECT(128,72),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20947C23D1Ev,_ZTvn68_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20947C23D0Ev,_ZTvn68_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C139S20947C219S20947C18__A1__9S20947C23__8S20947C2[] = {
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20947C23D1Ev,_ZTvn68_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20947C23D0Ev,_ZTvn68_n48_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20947C23D1Ev,_ZTvn84_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20947C23D0Ev,_ZTvn84_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23__8S20947C2[] = {
  ABISELECT(-672,-392),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20947C23D1Ev,_ZTvn84_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20947C23D0Ev,_ZTvn84_n48_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20947C23D1Ev,_ZTvn96_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20947C23D0Ev,_ZTvn96_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A4__9S20947C23__8S20947C2[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20947C23D1Ev,_ZTvn96_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20947C23D0Ev,_ZTvn96_n48_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C23__8S20947C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(80,44),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C23D1Ev,_ZTvn16_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C23D0Ev,_ZTvn16_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C23__8S20947C2[] = {
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C23D1Ev,_ZTvn16_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C23D0Ev,_ZTvn16_n16_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C23D1Ev,_ZTvn32_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C23D0Ev,_ZTvn32_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C23__8S20947C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C23D1Ev,_ZTvn32_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C23D0Ev,_ZTvn32_n16_N9S20947C23D0Ev),
};
extern void _ZN9S20947C18D1Ev();
extern void _ZN9S20947C18D0Ev();
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-528,-308),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-528,-308),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN9S20947C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C199S20947C18__A1__8S20947C2[] = {
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-528,-308),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C49S20947C199S20947C18__A2__8S20947C2[] = {
  ABISELECT(-528,-308),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C2[] = {
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__A2__8S20947C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C199S20947C18__A1__8S20947C2[] = {
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C199S20947C18__A1__8S20947C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C199S20947C18__A1__8S20947C2[] = {
  ABISELECT(144,80),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__A1__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A6__8S20947C2[] = {
  ABISELECT(-568,-336),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C18__A7__8S20947C2[] = {
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A7__8S20947C2[] = {
  0,
  ABISELECT(280,164),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C18__A6__8S20947C2[] = {
  0,
  ABISELECT(280,164),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-592,-348),
  ABISELECT(-224,-132),
  ABISELECT(-592,-348),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C219S20947C18__A7__8S20947C2[] = {
  ABISELECT(-592,-348),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C2[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C2[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A7__8S20947C2[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(-608,-360),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  0,
  ABISELECT(-272,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  0,
  ABISELECT(-272,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(400,232),
  ABISELECT(128,72),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(272,160),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  0,
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C2[] = {
  ABISELECT(-672,-392),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C2[] = {
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C2[] = {
  0,
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C2[] = {
  0,
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(400,232),
  ABISELECT(128,72),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(272,160),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  0,
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__A3__8S20947C2[] = {
  ABISELECT(-672,-392),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A10__8S20947C2[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A10__8S20947C2[] = {
  0,
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(224,132),
  0,
  ABISELECT(-368,-216),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C219S20947C18__A1__8S20947C2[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-608,-360),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-16,-12),
  ABISELECT(-272,-160),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(384,220),
  ABISELECT(128,72),
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-672,-392),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C219S20947C18__A1__8S20947C2[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C18__A1__8S20947C2[] = {
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(144,80),
  0,
  ABISELECT(-384,-228),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-392,-232),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__A1__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-568,-336),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C21__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-592,-348),
  ABISELECT(-224,-132),
  ABISELECT(-592,-348),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(160,92),
  0,
  ABISELECT(-368,-216),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C21__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-608,-360),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-80,-52),
  ABISELECT(-272,-160),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(320,180),
  ABISELECT(128,72),
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-672,-392),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C21__A4__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-416,-248),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(112,60),
  ABISELECT(-80,-48),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C18__A1__8S20947C2[] = {
  ABISELECT(-480,-280),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev),
};
static  VTT_ENTRY vtt_S20947C2[] = {
  {&(_ZTV8S20947C2[17]),  17,278},
  {&(_tg__ZTV9S20947C12__A1__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C12__A1__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C12__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C18__A__8S20947C2[11]),  11,14},
  {&(_tg__ZTV9S20947C199S20947C18__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C49S20947C199S20947C18__A1__8S20947C2[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C49S20947C199S20947C18__A2__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__A2__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C199S20947C18__8S20947C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C199S20947C18__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C199S20947C18__8S20947C2[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A2__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C18__A2__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A2__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C18__A2__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C219S20947C18__8S20947C2[9]),  9,13},
  {&(_tg__ZTV9S20947C169S20947C219S20947C18__A3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A3__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A3__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A3__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__A1__8S20947C2[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C139S20947C219S20947C18__A1__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A5__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A5__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C10__9S20947C219S20947C18__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C219S20947C18__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C219S20947C18__8S20947C2[7]),  7,9},
  {&(_tg__ZTV8S20947C5__9S20947C219S20947C18__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C219S20947C18__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C219S20947C18__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C18__A__8S20947C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C18__A__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C18__A__8S20947C2[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18__A__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C16__A1__9S20947C18__A__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C21__9S20947C18__A__8S20947C2[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C18__A__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18__A__8S20947C2[7]),  7,9},
  {&(_tg__ZTV8S20947C5__A1__9S20947C18__A__8S20947C2[4]),  4,6},
  {&(_tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__A__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C21__A4__9S20947C18__A__8S20947C2[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C18__A__8S20947C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__A__8S20947C2[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C18__A__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C22__8S20947C2[6]),  6,9},
  {&(_tg__ZTV8S20947C4__9S20947C22__8S20947C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C22__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C4__9S20947C22__8S20947C2[2]),  2,3},
  {&(_ZTV8S20947C2[104]),  104,278},
  {&(_ZTV8S20947C2[133]),  133,278},
  {&(_ZTV8S20947C2[141]),  141,278},
  {&(_ZTV8S20947C2[137]),  137,278},
  {&(_ZTV8S20947C2[148]),  148,278},
  {&(_ZTV8S20947C2[124]),  124,278},
  {&(_ZTV8S20947C2[104]),  104,278},
  {&(_ZTV8S20947C2[113]),  113,278},
  {&(_ZTV8S20947C2[117]),  117,278},
  {&(_ZTV8S20947C2[124]),  124,278},
  {&(_ZTV8S20947C2[30]),  30,278},
  {&(_ZTV8S20947C2[158]),  158,278},
  {&(_ZTV8S20947C2[166]),  166,278},
  {&(_ZTV8S20947C2[41]),  41,278},
  {&(_ZTV8S20947C2[53]),  53,278},
  {&(_ZTV8S20947C2[64]),  64,278},
  {&(_ZTV8S20947C2[75]),  75,278},
  {&(_ZTV8S20947C2[82]),  82,278},
  {&(_ZTV8S20947C2[176]),  176,278},
  {&(_ZTV8S20947C2[180]),  180,278},
  {&(_ZTV8S20947C2[187]),  187,278},
  {&(_ZTV8S20947C2[91]),  91,278},
  {&(_ZTV8S20947C2[205]),  205,278},
  {&(_ZTV8S20947C2[205]),  205,278},
  {&(_ZTV8S20947C2[223]),  223,278},
  {&(_ZTV8S20947C2[228]),  228,278},
  {&(_ZTV8S20947C2[234]),  234,278},
  {&(_ZTV8S20947C2[246]),  246,278},
  {&(_ZTV8S20947C2[257]),  257,278},
  {&(_ZTV8S20947C2[261]),  261,278},
  {&(_ZTV8S20947C2[268]),  268,278},
  {&(_ZTV8S20947C2[275]),  275,278},
  {&(_tg__ZTV8S20947C3__8S20947C2[10]),  10,12},
  {&(_tg__ZTV9S20947C128S20947C3__8S20947C2[6]),  6,8},
  {&(_tg__ZTV9S20947C128S20947C3__8S20947C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C128S20947C3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C138S20947C3__8S20947C2[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C138S20947C3__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C138S20947C3__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C138S20947C3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C138S20947C3__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C138S20947C3__8S20947C2[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C169S20947C138S20947C3__8S20947C2[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C5__9S20947C138S20947C3__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C138S20947C3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C138S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C16__9S20947C138S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C4__8S20947C3__8S20947C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20947C3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C4__8S20947C3__8S20947C2[2]),  2,3},
  {&(_tg__ZTV9S20947C10__8S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C3__8S20947C2[10]),  10,12},
  {&(_tg__ZTV9S20947C13__8S20947C3__8S20947C2[7]),  7,9},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C4__8S20947C2[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C4__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C4__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C4__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C10__8S20947C2[3]),  3,6},
  {&(_tg__ZTV8S20947C5__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C20__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C20__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__A1__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C20__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C20__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C20__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C20__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C20__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C13__A2__8S20947C2[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C13__A2__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C13__A2__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A2__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C13__A2__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C13__A5__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__A6__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A6__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C13__A5__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C13__A2__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C13__A2__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C13__A2__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C13__A2__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C23__8S20947C2[14]),  14,17},
  {&(_tg__ZTV9S20947C23__8S20947C2[14]),  14,17},
  {&(_tg__ZTV8S20947C9__A1__9S20947C23__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C18__9S20947C23__8S20947C2[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20947C23__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C49S20947C199S20947C18__A2__9S20947C23__8S20947C2[2]),  2,3},
  {&(_tg__ZTV9S20947C20__9S20947C23__8S20947C2[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C23__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A1__9S20947C23__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C219S20947C18__9S20947C23__8S20947C2[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C23__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23__8S20947C2[7]),  7,9},
  {&(_tg__ZTV8S20947C5__A1__9S20947C23__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20947C139S20947C219S20947C18__A1__9S20947C23__8S20947C2[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A4__9S20947C23__8S20947C2[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C23__8S20947C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C23__8S20947C2[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C23__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C18__A1__8S20947C2[11]),  11,14},
  {&(_tg__ZTV9S20947C199S20947C18__A1__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C49S20947C199S20947C18__A2__8S20947C2[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__A2__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C199S20947C18__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C199S20947C18__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C199S20947C18__A1__8S20947C2[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A6__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C18__A7__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A7__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C18__A6__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C219S20947C18__A1__8S20947C2[9]),  9,13},
  {&(_tg__ZTV9S20947C169S20947C219S20947C18__A7__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A7__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__A3__8S20947C2[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C2[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C139S20947C219S20947C18__A3__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__A3__8S20947C2[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__A3__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__A3__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A10__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A10__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C10__9S20947C219S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C219S20947C18__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C219S20947C18__A1__8S20947C2[7]),  7,9},
  {&(_tg__ZTV8S20947C5__9S20947C219S20947C18__A1__8S20947C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C219S20947C18__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C219S20947C18__A1__8S20947C2[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C18__A1__8S20947C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C18__A1__8S20947C2[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C18__A1__8S20947C2[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C16__A1__9S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C21__9S20947C18__A1__8S20947C2[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18__A1__8S20947C2[7]),  7,9},
  {&(_tg__ZTV8S20947C5__A1__9S20947C18__A1__8S20947C2[4]),  4,6},
  {&(_tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__A1__8S20947C2[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C21__A4__9S20947C18__A1__8S20947C2[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C18__A1__8S20947C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__A1__8S20947C2[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C18__A1__8S20947C2[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20947C2[];
extern  VTBL_ENTRY _ZTV8S20947C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C2[];
static VTBL_ENTRY alt_thunk_names55[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C23D0Ev,_ZThn68_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C23D1Ev,_ZThn68_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C23D0Ev,_ZThn16_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C23D1Ev,_ZThn16_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C3D0Ev,_ZThn72_N8S20947C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C3D1Ev,_ZThn72_N8S20947C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20947C3D0Ev,_ZThn88_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C3D0Ev,_ZThn56_N8S20947C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20947C3D1Ev,_ZThn88_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C3D1Ev,_ZThn56_N8S20947C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev),
  (VTBL_ENTRY)_ZN8S20947C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev),
  (VTBL_ENTRY)_ZN8S20947C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20947C22D0Ev,_ZThn88_N9S20947C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20947C22D1Ev,_ZThn88_N9S20947C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20947C22D0Ev,_ZThn72_N9S20947C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20947C22D1Ev,_ZThn72_N9S20947C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20947C18D0Ev,_ZThn236_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20947C18D0Ev,_ZThn116_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20947C18D1Ev,_ZThn236_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20947C18D1Ev,_ZThn116_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20947C18D0Ev,_ZThn204_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20947C18D1Ev,_ZThn204_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C18D0Ev,_ZThn216_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C18D1Ev,_ZThn216_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C18D0Ev,_ZThn188_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C18D1Ev,_ZThn188_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20947C21D0Ev,_ZThn148_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20947C21D1Ev,_ZThn148_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C21D0Ev,_ZThn76_N9S20947C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C21D1Ev,_ZThn76_N9S20947C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20947C21D0Ev,_ZThn164_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20947C21D1Ev,_ZThn164_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn60_N9S20947C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C13D0Ev,_ZThn136_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn60_N9S20947C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C13D1Ev,_ZThn136_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn60_N9S20947C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C14D0Ev,_ZThn136_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn60_N9S20947C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C14D1Ev,_ZThn136_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn64_N9S20947C14D0Ev),
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn64_N9S20947C14D1Ev),
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn64_N9S20947C13D0Ev),
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn64_N9S20947C13D1Ev),
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C19D0Ev,_ZThn216_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C19D1Ev,_ZThn216_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C19D0Ev,_ZThn188_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C19D1Ev,_ZThn188_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C4D0Ev,_ZThn188_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C4D1Ev,_ZThn188_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C5D0Ev,_ZThn72_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C5D0Ev,_ZThn188_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C5D1Ev,_ZThn72_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C5D1Ev,_ZThn188_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C12D0Ev,_ZThn72_N9S20947C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20947C12D0Ev,_ZThn200_N9S20947C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C12D1Ev,_ZThn72_N9S20947C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20947C12D1Ev,_ZThn200_N9S20947C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C12D0Ev,_ZThn128_N9S20947C12D0Ev),
  (VTBL_ENTRY)_ZN9S20947C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C12D1Ev,_ZThn128_N9S20947C12D1Ev),
  (VTBL_ENTRY)_ZN9S20947C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20947C2D0Ev,_ZTv0_n48_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20947C2D0Ev,_ZThn308_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20947C2D1Ev,_ZTv0_n48_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20947C2D1Ev,_ZThn308_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20947C2D0Ev,_ZTv0_n60_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20947C2D0Ev,_ZThn292_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20947C2D1Ev,_ZTv0_n60_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20947C2D1Ev,_ZThn292_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20947C2D0Ev,_ZTv0_n28_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20947C2D0Ev,_ZThn228_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20947C2D1Ev,_ZTv0_n28_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20947C2D1Ev,_ZThn228_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C2D0Ev,_ZTv0_n12_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20947C2D0Ev,_ZThn200_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C2D1Ev,_ZTv0_n12_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20947C2D1Ev,_ZThn200_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20947C2D0Ev,_ZThn216_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20947C2D0Ev,_ZThn184_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20947C2D1Ev,_ZThn216_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20947C2D1Ev,_ZThn184_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20947C2D0Ev,_ZThn360_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C2D0Ev,_ZThn248_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20947C2D0Ev,_ZThn140_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20947C2D0Ev,_ZThn128_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C2D0Ev,_ZThn64_N8S20947C2D0Ev),
  (VTBL_ENTRY)_ZN8S20947C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20947C2D1Ev,_ZThn360_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C2D1Ev,_ZThn248_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20947C2D1Ev,_ZThn140_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20947C2D1Ev,_ZThn128_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C2D1Ev,_ZThn64_N8S20947C2D1Ev),
  (VTBL_ENTRY)_ZN8S20947C2D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C2 = {  "S20947C2", // class name
  bases_S20947C2, 99,
  &(vtc_S20947C2[0]), // expected_vtbl_contents
  &(vtt_S20947C2[0]), // expected_vtt_contents
  ABISELECT(704,408), // object size
  NSPAIRA(_ZTI8S20947C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20947C2),278, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20947C2),222, //virtual table table var
  62, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names55,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20947C1  : virtual S20947C2 , S20947C3 , S20947C17 {
  int s20947c1f0;
  virtual  ~S20947C1(); // _ZN8S20947C1D2Ev
  S20947C1(); // tgen
};
//SIG(1 S20947C1) C1{ VBC2{ VBC3{ VBC4{ BC5{ BC6{ m} VBC7{ vd m FD} vd} BC8{ m Fc[7]} BC9{ v1} VBC6} VBC10{ BC9 VBC11{ m} vd Fi:23} VBC9 BC12{ BC8 VBC5 VBC6 vd} BC13{ BC14{ BC6 BC15{ BC11 FC6 FC11} VBC5 VBC9 Fp} BC15 BC7 BC16{ BC17{ VBC9 vd} VBC6 vd FC8}} vd} BC12 BC18{ VBC15 BC19{ VBC9 BC4 VBC20{ BC6 VBC7 BC9 BC16 vd Fi} BC8 vd Fi} BC16 BC21{ VBC10 BC16 BC13 BC17 vd v2} VBC13 vd v3} BC22{ VBC15 VBC4 BC8 BC9 Fp} VBC23{ VBC24{ BC9} VBC9 VBC18 FL Fl}} BC3 BC17 vd Fi}


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

static void Test_S20947C1()
{
  extern Class_Descriptor cd_S20947C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(52,119)];
    init_test(&cd_S20947C1, buf);
    S20947C1 *dp, &lv = *(dp=new (buf) S20947C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(816,472), "sizeof(S20947C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20947C1)");
    /*is_ambiguous_... S20947C1::S20947C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*), ABISELECT(416,248), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*), ABISELECT(448,264), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*), ABISELECT(448,264), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(448,264), "S20947C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20947C20*), ABISELECT(448,264), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(448,264), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C4 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C4*), ABISELECT(416,248), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C4 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C4*), ABISELECT(424,252), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C4 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C4*), ABISELECT(432,260), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C12*)(S20947C3*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C3*), 0, "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C12*)(S20947C2*), 0, "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), 0, "S20947C1");
    check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C20*), 0, "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C18*)(S20947C2*), 0, "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C21*)(S20947C18*)(S20947C2*), 0, "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C4*)(S20947C19*)(S20947C18*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C18*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C21*)(S20947C18*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C12*)(S20947C3*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C16*)(S20947C13*)(S20947C3*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C4*)(S20947C3*), ABISELECT(416,248), "S20947C1");
    check_base_class_offset(lv, (S20947C4*)(S20947C22*)(S20947C2*), ABISELECT(416,248), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C4*)(S20947C3*), ABISELECT(416,248), "S20947C1");
    check_base_class_offset(lv, (S20947C9*)(S20947C10*), ABISELECT(480,280), "S20947C1");
    check_base_class_offset(lv, (S9624C39*)(S20947C10*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C10*)(S20947C3*), ABISELECT(480,280), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C10*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(480,280), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C10*)(S20947C21*)(S20947C18*), ABISELECT(480,280), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C10*)(S20947C3*), ABISELECT(480,280), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(400,236), "S20947C1");
    check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C18*)(S20947C2*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C23::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C23*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C19*)(S20947C18*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*)(S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C17*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C12*)(S20947C3*), ABISELECT(328,196), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C12*)(S20947C3*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C12*)(S20947C2*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C12*)(S20947C3*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C12*)(S20947C3*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(344,208), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(345,209), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(345,209), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(336,204), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C3*), ABISELECT(360,216), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C3*), ABISELECT(360,216), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C3*), ABISELECT(368,220), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(400,236), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C3*), ABISELECT(336,204), "S20947C1");
    check_base_class_offset(lv, (S20947C3*)(S20947C2*), ABISELECT(320,192), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C12*)(S20947C2*), ABISELECT(120,68), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C12 */ AMB_check_base_class_offset(lv, (S20947C12*)(S20947C2*), ABISELECT(112,64), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C15 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*), ABISELECT(491,287), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C18*)(S20947C2*), ABISELECT(491,287), "S20947C1");
    check_base_class_offset(lv, (S20947C15*)(S20947C22*)(S20947C2*), ABISELECT(491,287), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C18*), ABISELECT(491,287), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(128,76), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(128,76), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(136,80), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(144,88), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C4*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(128,76), "S20947C1");
    /*is_ambiguous_... S20947C20::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C20*), ABISELECT(496,292), "S20947C1");
    /*is_ambiguous_... S20947C20::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C20*), ABISELECT(496,292), "S20947C1");
    check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C20*), ABISELECT(504,296), "S20947C1");
    check_base_class_offset(lv, (S20947C16*)(S20947C20*), ABISELECT(504,296), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C20*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(496,292), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C20*)(S20947C19*)(S20947C18*), ABISELECT(496,292), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(152,92), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C19*)(S20947C18*)(S20947C2*), ABISELECT(128,76), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C18*)(S20947C2*), ABISELECT(168,104), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C18*)(S20947C2*), ABISELECT(168,104), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(192,116), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(192,116), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(216,132), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(217,133), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(217,133), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(208,128), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(232,140), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(232,140), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(240,144), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(272,160), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(272,160), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(208,128), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(288,172), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C21*)(S20947C18*)(S20947C2*), ABISELECT(192,116), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*), ABISELECT(536,316), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(537,317), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*), ABISELECT(537,317), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*), ABISELECT(528,312), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*), ABISELECT(552,324), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*), ABISELECT(552,324), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*), ABISELECT(560,328), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*), ABISELECT(592,344), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C13 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*), ABISELECT(592,344), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C18*)(S20947C2*), ABISELECT(528,312), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C18*), ABISELECT(528,312), "S20947C1");
    /*is_ambiguous_... S20947C2::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C18*)(S20947C2*), ABISELECT(128,76), "S20947C1");
    /*is_ambiguous_... S20947C22::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C22*)(S20947C2*), ABISELECT(304,180), "S20947C1");
    /*is_ambiguous_... S20947C22::S20947C9 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C22*)(S20947C2*), ABISELECT(296,176), "S20947C1");
    check_base_class_offset(lv, (S20947C22*)(S20947C2*), ABISELECT(296,176), "S20947C1");
    check_base_class_offset(lv, (S20947C9*)(S20947C24*), ABISELECT(608,356), "S20947C1");
    check_base_class_offset(lv, (S20947C24*)(S20947C23*), ABISELECT(608,356), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(640,372), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C5*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(640,372), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(648,376), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C9*)(S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(656,384), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C4*)(S20947C19*)(S20947C18*), ABISELECT(640,372), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C19*)(S20947C18*), ABISELECT(664,388), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C19*)(S20947C18*), ABISELECT(640,372), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C18*), ABISELECT(680,400), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C18*), ABISELECT(680,400), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(704,412), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C21*)(S20947C18*), ABISELECT(704,412), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(728,428), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(729,429), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(729,429), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(720,424), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(744,436), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(744,436), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(752,440), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(784,456), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(784,456), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C21*)(S20947C18*), ABISELECT(720,424), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C21*)(S20947C18*), ABISELECT(800,468), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C18 */ AMB_check_base_class_offset(lv, (S20947C21*)(S20947C18*), ABISELECT(704,412), "S20947C1");
    check_base_class_offset(lv, (S20947C18*)(S20947C23*), ABISELECT(640,372), "S20947C1");
    check_base_class_offset(lv, (S20947C23*)(S20947C2*), ABISELECT(608,356), "S20947C1");
    check_base_class_offset(lv, (S20947C2*), ABISELECT(112,64), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20948C8*)(S20947C12*)(S20947C3*), ABISELECT(8,4), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C12*)(S20947C3*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(24,16), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(25,17), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(25,17), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C14*)(S20947C13*)(S20947C3*), ABISELECT(16,12), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20947C15*)(S20947C13*)(S20947C3*), ABISELECT(40,24), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C15*)(S20947C13*)(S20947C3*), ABISELECT(40,24), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S20947C13*)(S20947C3*), ABISELECT(48,28), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C17*)(S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(80,44), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C16*)(S20947C13*)(S20947C3*), ABISELECT(80,44), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C13*)(S20947C3*), ABISELECT(16,12), "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C3 */ AMB_check_base_class_offset(lv, (S20947C3*), 0, "S20947C1");
    /*is_ambiguous_... S20947C1::S20947C17 */ AMB_check_base_class_offset(lv, (S20947C17*), ABISELECT(96,56), "S20947C1");
    check_field_offset(lv, s20947c1f0, ABISELECT(104,60), "S20947C1.s20947c1f0");
    test_class_info(&lv, &cd_S20947C1);
    dp->~S20947C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20947C1(Test_S20947C1, "S20947C1", ABISELECT(816,472));

#else // __cplusplus

extern void _ZN8S20947C1C1Ev();
extern void _ZN8S20947C1D2Ev();
Name_Map name_map_S20947C1[] = {
  NSPAIR(_ZN8S20947C1C1Ev),
  NSPAIR(_ZN8S20947C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C10;
extern VTBL_ENTRY _ZTI9S20947C10[];
extern  VTBL_ENTRY _ZTV9S20947C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C10[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20947C12;
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C3;
extern VTBL_ENTRY _ZTI8S20947C3[];
extern  VTBL_ENTRY _ZTV8S20947C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C3[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C12;
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C20;
extern VTBL_ENTRY _ZTI9S20947C20[];
extern  VTBL_ENTRY _ZTV9S20947C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C20[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C19;
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C21;
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C18;
extern VTBL_ENTRY _ZTI9S20947C18[];
extern  VTBL_ENTRY _ZTV9S20947C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C18[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C22;
extern VTBL_ENTRY _ZTI9S20947C22[];
extern  VTBL_ENTRY _ZTV9S20947C22[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C22[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C24;
extern VTBL_ENTRY _ZTI9S20947C24[];
extern  VTBL_ENTRY _ZTV9S20947C24[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20947C5;
extern VTBL_ENTRY _ZTI8S20947C5[];
extern  VTBL_ENTRY _ZTV8S20947C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C9;
extern VTBL_ENTRY _ZTI8S20947C9[];
extern  VTBL_ENTRY _ZTV8S20947C9[];
extern Class_Descriptor cd_S20947C4;
extern VTBL_ENTRY _ZTI8S20947C4[];
extern  VTBL_ENTRY _ZTV8S20947C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C4[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C19;
extern VTBL_ENTRY _ZTI9S20947C19[];
extern  VTBL_ENTRY _ZTV9S20947C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C19[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C21;
extern VTBL_ENTRY _ZTI9S20947C21[];
extern  VTBL_ENTRY _ZTV9S20947C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C21[];
extern Class_Descriptor cd_S20947C18;
extern VTBL_ENTRY _ZTI9S20947C18[];
extern  VTBL_ENTRY _ZTV9S20947C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C18[];
extern Class_Descriptor cd_S20947C23;
extern VTBL_ENTRY _ZTI9S20947C23[];
extern  VTBL_ENTRY _ZTV9S20947C23[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C23[];
extern Class_Descriptor cd_S20947C2;
extern VTBL_ENTRY _ZTI8S20947C2[];
extern  VTBL_ENTRY _ZTV8S20947C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C2[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S20947C12;
extern VTBL_ENTRY _ZTI9S20947C12[];
extern  VTBL_ENTRY _ZTV9S20947C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20947C14;
extern VTBL_ENTRY _ZTI9S20947C14[];
extern  VTBL_ENTRY _ZTV9S20947C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20947C15;
extern VTBL_ENTRY _ZTI9S20947C15[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
extern Class_Descriptor cd_S20947C16;
extern VTBL_ENTRY _ZTI9S20947C16[];
extern  VTBL_ENTRY _ZTV9S20947C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C16[];
extern Class_Descriptor cd_S20947C13;
extern VTBL_ENTRY _ZTI9S20947C13[];
extern  VTBL_ENTRY _ZTV9S20947C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C13[];
extern Class_Descriptor cd_S20947C3;
extern VTBL_ENTRY _ZTI8S20947C3[];
extern  VTBL_ENTRY _ZTV8S20947C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C3[];
extern Class_Descriptor cd_S20947C17;
extern VTBL_ENTRY _ZTI9S20947C17[];
extern  VTBL_ENTRY _ZTV9S20947C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20947C17[];
static Base_Class bases_S20947C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(448,264), //bcp->offset
    189, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20947C5,    ABISELECT(416,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(424,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
    6, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(432,260), //bcp->offset
    186, //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
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20947C4,    ABISELECT(416,248), //bcp->offset
    178, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    187, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20947C9,    ABISELECT(480,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C10,    ABISELECT(480,280), //bcp->offset
    194, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    191, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S20947C9,    ABISELECT(400,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(328,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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    192, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20947C12,    ABISELECT(320,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(344,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(345,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(345,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C14,    ABISELECT(336,204), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    167, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(360,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(360,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(368,220), //bcp->offset
    166, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(400,236), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(400,236), //bcp->offset
    170, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    171, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(336,204), //bcp->offset
    157, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    166, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20947C3,    ABISELECT(320,192), //bcp->offset
    145, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    162, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    99, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(120,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20947C12,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(491,287), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(491,287), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(136,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(144,88), //bcp->offset
    84, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20947C4,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(496,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
    39, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(496,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
    16, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(504,296), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    196, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(504,296), //bcp->offset
    212, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    195, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20947C20,    ABISELECT(496,292), //bcp->offset
    202, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    194, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(152,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S20947C19,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    43, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(168,104), //bcp->offset
    87, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    81, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(192,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    51, //init_seq
    45, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(192,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    52, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(217,133), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C15,    ABISELECT(217,133), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20947C14,    ABISELECT(208,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    53, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(232,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
    51, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(232,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
    55, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(240,144), //bcp->offset
    117, //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
    54, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(272,160), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    55, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(272,160), //bcp->offset
    121, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    95, //bcp->base_subarray_index_in_construction_vtbl_array
    56, //init_seq
    55, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(208,128), //bcp->offset
    108, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    90, //bcp->base_subarray_index_in_construction_vtbl_array
    57, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(288,172), //bcp->offset
    129, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    103, //bcp->base_subarray_index_in_construction_vtbl_array
    58, //init_seq
    57, //immediately_derived
  0, 0},
  {&cd_S20947C21,    ABISELECT(192,116), //bcp->offset
    95, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    85, //bcp->base_subarray_index_in_construction_vtbl_array
    59, //init_seq
    68, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(536,316), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(537,317), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(537,317), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    61, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(528,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    203, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(552,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(552,324), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(560,328), //bcp->offset
    229, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(592,344), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    208, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(592,344), //bcp->offset
    233, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    207, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    67, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(528,312), //bcp->offset
    220, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    202, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    68, //immediately_derived
  0, 1},
  {&cd_S20947C18,    ABISELECT(128,76), //bcp->offset
    70, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    40, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    60, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    71, //immediately_derived
  0, 0},
  {&cd_S20947C9,    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
    61, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S20947C22,    ABISELECT(296,176), //bcp->offset
    136, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    126, //bcp->base_subarray_index_in_construction_vtbl_array
    62, //init_seq
    99, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(608,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S20947C24,    ABISELECT(608,356), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(640,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
    75, //immediately_derived
  0, 0},
  {&cd_S20947C5,    ABISELECT(640,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    237, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(648,376), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20947C9,    ABISELECT(656,384), //bcp->offset
    277, //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
    28, //init_seq
    78, //immediately_derived
  0, 0},
  {&cd_S20947C4,    ABISELECT(640,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    236, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(664,388), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    80, //immediately_derived
  0, 0},
  {&cd_S20947C19,    ABISELECT(640,372), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    235, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(680,400), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    245, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    82, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(680,400), //bcp->offset
    280, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    244, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(704,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    250, //bcp->base_subarray_index_in_construction_vtbl_array
    33, //init_seq
    84, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(704,412), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    249, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(728,428), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(729,429), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    87, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(729,429), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    88, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(720,424), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    254, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(744,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    90, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(744,436), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(752,440), //bcp->offset
    310, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(784,456), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    259, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    93, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(784,456), //bcp->offset
    314, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    258, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    94, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(720,424), //bcp->offset
    301, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    253, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(800,468), //bcp->offset
    322, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    266, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    96, //immediately_derived
  0, 0},
  {&cd_S20947C21,    ABISELECT(704,412), //bcp->offset
    288, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    248, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    97, //immediately_derived
  0, 0},
  {&cd_S20947C18,    ABISELECT(640,372), //bcp->offset
    259, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    234, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    98, //immediately_derived
  0, 1},
  {&cd_S20947C23,    ABISELECT(608,356), //bcp->offset
    241, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    215, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    99, //immediately_derived
  0, 1},
  {&cd_S20947C2,    ABISELECT(112,64), //bcp->offset
    48, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    63, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    101, //immediately_derived
  0, 0},
  {&cd_S20947C12,    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
    64, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    105, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    104, //immediately_derived
  0, 0},
  {&cd_S20947C15,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    105, //immediately_derived
  0, 0},
  {&cd_S20947C14,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    65, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    107, //immediately_derived
  0, 0},
  {&cd_S20947C15,    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
    111, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //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
    66, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S20947C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    67, //init_seq
    110, //immediately_derived
  0, 0},
  {&cd_S20947C16,    ABISELECT(80,44), //bcp->offset
    33, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    68, //init_seq
    111, //immediately_derived
  0, 0},
  {&cd_S20947C13,    ABISELECT(16,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    69, //init_seq
    112, //immediately_derived
  0, 0},
  {&cd_S20947C3,    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
    70, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20947C17,    ABISELECT(96,56), //bcp->offset
    41, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    71, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20947C1[];
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void _ZN8S20947C1D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C1D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C1D1Ev,_ZThn12_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C1D0Ev,_ZThn12_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S20947C1D1Ev,_ZThn28_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S20947C1D0Ev,_ZThn28_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C1D1Ev,_ZThn44_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C1D0Ev,_ZThn44_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N8S20947C1D1Ev,_ZThn56_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C1D0Ev,_ZThn56_N8S20947C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S20947C1D1Ev,_ZThn64_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn112_N8S20947C1D0Ev,_ZThn64_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn16_n32_N8S20947C1D1Ev,_ZTvn12_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn16_n32_N8S20947C1D0Ev,_ZTvn12_n16_N8S20947C1D0Ev)();
extern void _ZN9S20947C182v3Ev();
extern void _ZN8S20947C92v1Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn56_n32_N8S20947C1D1Ev,_ZTvn40_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn56_n32_N8S20947C1D0Ev,_ZTvn40_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20947C1D1Ev,_ZTvn52_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20947C1D0Ev,_ZTvn52_n16_N8S20947C1D0Ev)();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn208_N8S20947C1D1Ev,_ZThn128_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn208_N8S20947C1D0Ev,_ZThn128_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn128_n32_N8S20947C1D1Ev,_ZTvn80_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn128_n32_N8S20947C1D0Ev,_ZTvn80_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n32_N8S20947C1D1Ev,_ZTvn96_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn160_n32_N8S20947C1D0Ev,_ZTvn96_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn176_n32_N8S20947C1D1Ev,_ZTvn108_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn176_n32_N8S20947C1D0Ev,_ZTvn108_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn184_n32_N8S20947C1D1Ev,_ZTvn112_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn184_n32_N8S20947C1D0Ev,_ZTvn112_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S20947C1D1Ev,_ZThn192_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn320_N8S20947C1D0Ev,_ZThn192_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S20947C1D1Ev,_ZThn204_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn336_N8S20947C1D0Ev,_ZThn204_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N8S20947C1D1Ev,_ZTvn28_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20947C1D0Ev,_ZTvn28_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20947C1D1Ev,_ZTvn44_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20947C1D0Ev,_ZTvn44_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S20947C1D1Ev,_ZTv0_n20_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn416_N8S20947C1D1Ev,_ZThn248_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C1D0Ev,_ZTv0_n20_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn416_N8S20947C1D0Ev,_ZThn248_N8S20947C1D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S20947C1D1Ev,_ZTv0_n12_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn448_N8S20947C1D1Ev,_ZThn264_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C1D0Ev,_ZTv0_n12_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn448_N8S20947C1D0Ev,_ZThn264_N8S20947C1D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C1D1Ev,_ZTv0_n20_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn480_N8S20947C1D1Ev,_ZThn280_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C1D0Ev,_ZTv0_n20_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn480_N8S20947C1D0Ev,_ZThn280_N8S20947C1D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20947C1D1Ev,_ZTv0_n28_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S20947C1D1Ev,_ZThn292_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20947C1D0Ev,_ZTv0_n28_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S20947C1D0Ev,_ZThn292_N8S20947C1D0Ev)() __attribute__((weak));
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20947C1D1Ev,_ZTvn4_n28_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20947C1D0Ev,_ZTvn4_n28_N8S20947C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn528_N8S20947C1D1Ev,_ZThn312_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn528_N8S20947C1D0Ev,_ZThn312_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S20947C1D1Ev,_ZTvn16_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20947C1D0Ev,_ZTvn16_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20947C1D1Ev,_ZTvn32_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20947C1D0Ev,_ZTvn32_n16_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20947C1D1Ev,_ZTv0_n60_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn608_N8S20947C1D1Ev,_ZThn356_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20947C1D0Ev,_ZTv0_n60_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn608_N8S20947C1D0Ev,_ZThn356_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20947C1D1Ev,_ZTv0_n48_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn640_N8S20947C1D1Ev,_ZThn372_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20947C1D0Ev,_ZTv0_n48_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn640_N8S20947C1D0Ev,_ZThn372_N8S20947C1D0Ev)() __attribute__((weak));
extern void _ZN9S20947C182v3Ev();
extern void _ZN8S20947C92v1Ev();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20947C1D1Ev,_ZTvn28_n48_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20947C1D0Ev,_ZTvn28_n48_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20947C1D1Ev,_ZTvn40_n48_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20947C1D0Ev,_ZTvn40_n48_N8S20947C1D0Ev)();
extern void _ZN9S20947C212v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev)();
extern void ABISELECT(_ZThn720_N8S20947C1D1Ev,_ZThn424_N8S20947C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev)();
extern void ABISELECT(_ZThn720_N8S20947C1D0Ev,_ZThn424_N8S20947C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn112_n96_N8S20947C1D1Ev,_ZTvn68_n48_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20947C1D0Ev,_ZTvn68_n48_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20947C1D1Ev,_ZTvn84_n48_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20947C1D0Ev,_ZTvn84_n48_N8S20947C1D0Ev)();
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20947C1D1Ev,_ZTvn96_n48_N8S20947C1D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20947C1D0Ev,_ZTvn96_n48_N8S20947C1D0Ev)();
static  VTBL_ENTRY vtc_S20947C1[] = {
  ABISELECT(640,372),
  ABISELECT(608,356),
  ABISELECT(608,356),
  ABISELECT(528,312),
  ABISELECT(496,292),
  ABISELECT(491,287),
  ABISELECT(320,192),
  ABISELECT(112,64),
  ABISELECT(400,236),
  0,
  ABISELECT(480,280),
  ABISELECT(416,248),
  0,
  ABISELECT(320,192),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-16,-12),
  ABISELECT(384,224),
  ABISELECT(304,180),
  ABISELECT(-16,-12),
  ABISELECT(432,252),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20947C1D1Ev,_ZThn28_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S20947C1D0Ev,_ZThn28_N8S20947C1D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C1D1Ev,_ZThn44_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C1D0Ev,_ZThn44_N8S20947C1D0Ev),
  ABISELECT(304,180),
  ABISELECT(304,180),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20947C1D1Ev,_ZThn56_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N8S20947C1D0Ev,_ZThn56_N8S20947C1D0Ev),
  ABISELECT(80,52),
  ABISELECT(16,12),
  ABISELECT(32,24),
  ABISELECT(528,308),
  ABISELECT(496,292),
  ABISELECT(496,292),
  ABISELECT(416,248),
  ABISELECT(384,228),
  ABISELECT(379,223),
  ABISELECT(288,172),
  ABISELECT(-112,-64),
  ABISELECT(368,216),
  ABISELECT(304,184),
  ABISELECT(208,128),
  ABISELECT(-112,-64),
  ABISELECT(208,128),
  ABISELECT(-112,-64),
  ABISELECT(336,200),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-128,-76),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n32_N8S20947C1D1Ev,_ZTvn12_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn16_n32_N8S20947C1D0Ev,_ZTvn12_n16_N8S20947C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n32_N8S20947C1D1Ev,_ZTvn40_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n32_N8S20947C1D0Ev,_ZTvn40_n16_N8S20947C1D0Ev),
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C1D1Ev,_ZTvn52_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C1D0Ev,_ZTvn52_n16_N8S20947C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-208,-128),
  ABISELECT(240,136),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-240,-144),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n32_N8S20947C1D1Ev,_ZTvn80_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn128_n32_N8S20947C1D0Ev,_ZTvn80_n16_N8S20947C1D0Ev),
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n32_N8S20947C1D1Ev,_ZTvn96_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n32_N8S20947C1D0Ev,_ZTvn96_n16_N8S20947C1D0Ev),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn176_n32_N8S20947C1D1Ev,_ZTvn108_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn176_n32_N8S20947C1D0Ev,_ZTvn108_n16_N8S20947C1D0Ev),
  ABISELECT(-296,-176),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  ABISELECT(-296,-176),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn184_n32_N8S20947C1D1Ev,_ZTvn112_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn184_n32_N8S20947C1D0Ev,_ZTvn112_n16_N8S20947C1D0Ev),
  ABISELECT(80,44),
  ABISELECT(-320,-192),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-320,-192),
  0,
  ABISELECT(-320,-192),
  ABISELECT(128,72),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-336,-204),
  ABISELECT(112,60),
  ABISELECT(-336,-204),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-368,-220),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20947C1D1Ev,_ZTvn28_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20947C1D0Ev,_ZTvn28_n16_N8S20947C1D0Ev),
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C1D1Ev,_ZTvn44_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C1D0Ev,_ZTvn44_n16_N8S20947C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-416,-248),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C1D1Ev,_ZTv0_n20_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C1D0Ev,_ZTv0_n20_N8S20947C1D0Ev),
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C1D1Ev,_ZTv0_n12_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C1D0Ev,_ZTv0_n12_N8S20947C1D0Ev),
  ABISELECT(-480,-280),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C1D1Ev,_ZTv0_n20_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C1D0Ev,_ZTv0_n20_N8S20947C1D0Ev),
  ABISELECT(-496,-292),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-496,-292),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20947C1D1Ev,_ZTv0_n28_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20947C1D0Ev,_ZTv0_n28_N8S20947C1D0Ev),
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-504,-296),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20947C1D1Ev,_ZTvn4_n28_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20947C1D0Ev,_ZTvn4_n28_N8S20947C1D0Ev),
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-528,-312),
  ABISELECT(-80,-48),
  ABISELECT(-528,-312),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-560,-328),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20947C1D1Ev,_ZTvn16_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20947C1D0Ev,_ZTvn16_n16_N8S20947C1D0Ev),
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-592,-344),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20947C1D1Ev,_ZTvn32_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20947C1D0Ev,_ZTvn32_n16_N8S20947C1D0Ev),
  ABISELECT(-608,-356),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-608,-356),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-608,-356),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,16),
  ABISELECT(-208,-120),
  0,
  0,
  ABISELECT(-608,-356),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20947C1D1Ev,_ZTv0_n60_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20947C1D0Ev,_ZTv0_n60_N8S20947C1D0Ev),
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-640,-372),
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-640,-372),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-640,-372),
  ABISELECT(-192,-108),
  ABISELECT(-640,-372),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20947C1D1Ev,_ZTv0_n48_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20947C1D0Ev,_ZTv0_n48_N8S20947C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
  ABISELECT(-656,-384),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  ABISELECT(-680,-400),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-680,-400),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20947C1D1Ev,_ZTvn28_n48_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20947C1D0Ev,_ZTvn28_n48_N8S20947C1D0Ev),
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-704,-412),
  ABISELECT(-224,-132),
  ABISELECT(-704,-412),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-704,-412),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20947C1D1Ev,_ZTvn40_n48_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20947C1D0Ev,_ZTvn40_n48_N8S20947C1D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
  ABISELECT(-720,-424),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-720,-424),
  ABISELECT(-272,-160),
  ABISELECT(-720,-424),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev),
  ABISELECT(-752,-440),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20947C1D1Ev,_ZTvn68_n48_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20947C1D0Ev,_ZTvn68_n48_N8S20947C1D0Ev),
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-784,-456),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20947C1D1Ev,_ZTvn84_n48_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20947C1D0Ev,_ZTvn84_n48_N8S20947C1D0Ev),
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-800,-468),
  (VTBL_ENTRY)&(_ZTI8S20947C1[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20947C1D1Ev,_ZTvn96_n48_N8S20947C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20947C1D0Ev,_ZTvn96_n48_N8S20947C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20947C1[];
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void _ZN8S20947C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void _ZN8S20947C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C3__A__8S20947C1[] = {
  ABISELECT(400,236),
  0,
  ABISELECT(480,280),
  ABISELECT(416,248),
  0,
  ABISELECT(320,192),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void _ZN9S20947C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void _ZN9S20947C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C128S20947C3__A2__8S20947C1[] = {
  0,
  ABISELECT(320,192),
  0,
  ABISELECT(448,264),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn320_N9S20947C12D1Ev,_ZThn192_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn320_N9S20947C12D0Ev,_ZThn192_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C128S20947C3__A2__8S20947C1[] = {
  ABISELECT(-320,-192),
  ABISELECT(128,72),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn448_N9S20947C12D1Ev,_ZThn264_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn448_N9S20947C12D0Ev,_ZThn264_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C128S20947C3__A2__8S20947C1[] = {
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(384,224),
  ABISELECT(304,180),
  0,
  ABISELECT(432,252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(384,224),
  ABISELECT(304,180),
  0,
  ABISELECT(432,252),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn304_N9S20947C14D1Ev,_ZThn180_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn304_N9S20947C14D0Ev,_ZThn180_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(128,72),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn432_N9S20947C14D1Ev,_ZThn252_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn432_N9S20947C14D0Ev,_ZThn252_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C138S20947C3__A4__8S20947C1[] = {
  0,
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C138S20947C3__A9__8S20947C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C138S20947C3__A11__8S20947C1[] = {
  ABISELECT(320,192),
  ABISELECT(320,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C138S20947C3__A11__8S20947C1[] = {
  0,
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C138S20947C3__A9__8S20947C1[] = {
  0,
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn304_N9S20947C13D1Ev,_ZThn180_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn304_N9S20947C13D0Ev,_ZThn180_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(-304,-180),
  ABISELECT(128,72),
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn432_N9S20947C13D1Ev,_ZThn252_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn432_N9S20947C13D0Ev,_ZThn252_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(-432,-252),
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C138S20947C3__A4__8S20947C1[] = {
  0,
  ABISELECT(-384,-224),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C138S20947C3__A4__8S20947C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn416_N8S20947C3D1Ev,_ZThn248_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn416_N8S20947C3D0Ev,_ZThn248_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C3__A__8S20947C1[] = {
  ABISELECT(16,12),
  ABISELECT(-416,-248),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn448_N8S20947C3D1Ev,_ZThn264_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn448_N8S20947C3D0Ev,_ZThn264_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C3__A__8S20947C1[] = {
  ABISELECT(-448,-264),
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C4__8S20947C3__A__8S20947C1[] = {
  ABISELECT(-432,-260),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn480_N8S20947C3D1Ev,_ZThn280_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn480_N8S20947C3D0Ev,_ZThn280_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C3__A__8S20947C1[] = {
  ABISELECT(-480,-280),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A2__8S20947C3__A__8S20947C1[] = {
  0,
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn320_N8S20947C3D1Ev,_ZThn192_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn320_N8S20947C3D0Ev,_ZThn192_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__8S20947C3__A__8S20947C1[] = {
  ABISELECT(-320,-192),
  ABISELECT(128,72),
  ABISELECT(-320,-192),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__8S20947C3__A__8S20947C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(384,224),
  ABISELECT(304,180),
  ABISELECT(-16,-12),
  ABISELECT(432,252),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__8S20947C3__A__8S20947C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(320,192),
  ABISELECT(320,192),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A12__8S20947C1[] = {
  ABISELECT(304,180),
  ABISELECT(304,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C17__A12__8S20947C1[] = {
  0,
  ABISELECT(-304,-180),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void _ZN8S20947C2D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void _ZN8S20947C2D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C2__8S20947C1[] = {
  ABISELECT(528,308),
  ABISELECT(496,292),
  ABISELECT(496,292),
  ABISELECT(416,248),
  ABISELECT(384,228),
  ABISELECT(379,223),
  ABISELECT(288,172),
  ABISELECT(-112,-64),
  ABISELECT(368,216),
  ABISELECT(304,184),
  ABISELECT(208,128),
  ABISELECT(-112,-64),
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void _ZN9S20947C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void _ZN9S20947C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C128S20947C2__A1__8S20947C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(208,128),
  0,
  ABISELECT(336,200),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn208_N9S20947C12D1Ev,_ZThn128_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn208_N9S20947C12D0Ev,_ZThn128_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C128S20947C2__A1__8S20947C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn336_N9S20947C12D1Ev,_ZThn200_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn336_N9S20947C12D0Ev,_ZThn200_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C128S20947C2__A1__8S20947C1[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern void _ZN9S20947C18D1Ev();
extern void _ZN9S20947C18D0Ev();
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-128,-76),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN9S20947C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C199S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C49S20947C199S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C49S20947C199S20947C188S20947C2__A2__8S20947C1[] = {
  ABISELECT(320,188),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn320_N8S20947C5D1Ev,_ZThn188_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn320_N8S20947C5D0Ev,_ZThn188_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C188S20947C2__A2__8S20947C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn320_N8S20947C4D1Ev,_ZThn188_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn320_N8S20947C4D0Ev,_ZThn188_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C199S20947C188S20947C2__8S20947C1[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn320_N9S20947C19D1Ev,_ZThn188_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn320_N9S20947C19D0Ev,_ZThn188_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C199S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZThn368_N9S20947C19D1Ev,_ZThn216_N9S20947C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
extern void ABISELECT(_ZThn368_N9S20947C19D0Ev,_ZThn216_N9S20947C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C199S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C199S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C188S20947C2__A2__8S20947C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C188S20947C2__A2__8S20947C1[] = {
  ABISELECT(232,132),
  ABISELECT(232,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C188S20947C2__A2__8S20947C1[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C188S20947C2__A2__8S20947C1[] = {
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[] = {
  ABISELECT(208,120),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(192,108),
  ABISELECT(112,64),
  0,
  ABISELECT(240,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn64_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn64_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn240_N9S20947C14D1Ev,_ZThn136_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn240_N9S20947C14D0Ev,_ZThn136_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[] = {
  ABISELECT(128,76),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[] = {
  0,
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn64_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn64_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(128,72),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn240_N9S20947C13D1Ev,_ZThn136_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn240_N9S20947C13D0Ev,_ZThn136_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-240,-136),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  0,
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C188S20947C2__A5__8S20947C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C219S20947C188S20947C2__A5__8S20947C1[] = {
  0,
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn288_N9S20947C21D1Ev,_ZThn164_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn288_N9S20947C21D0Ev,_ZThn164_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-288,-164),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  0,
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-16,-12),
  ABISELECT(240,136),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn128_N9S20947C21D1Ev,_ZThn76_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn128_N9S20947C21D0Ev,_ZThn76_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(128,72),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn256_N9S20947C21D1Ev,_ZThn148_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn256_N9S20947C21D0Ev,_ZThn148_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C219S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C188S20947C2__8S20947C1[] = {
  0,
  ABISELECT(-272,-160),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn320_N9S20947C18D1Ev,_ZThn188_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn320_N9S20947C18D0Ev,_ZThn188_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S20947C18D1Ev,_ZThn216_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S20947C18D0Ev,_ZThn216_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__A1__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C21__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn352_N9S20947C18D1Ev,_ZThn204_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn352_N9S20947C18D0Ev,_ZThn204_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-352,-204),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C21__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-80,-52),
  ABISELECT(240,136),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S20947C18D1Ev,_ZThn116_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S20947C18D0Ev,_ZThn116_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-192,-116),
  ABISELECT(128,72),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C21__A4__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn400_N9S20947C18D1Ev,_ZThn236_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn400_N9S20947C18D0Ev,_ZThn236_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-400,-236),
  ABISELECT(-80,-48),
  ABISELECT(-400,-236),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-432,-252),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C188S20947C2__8S20947C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-464,-268),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C22D1Ev();
extern void _ZN9S20947C22D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C228S20947C2__8S20947C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C22D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C22D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev)();
extern void ABISELECT(_ZThn120_N9S20947C22D1Ev,_ZThn72_N9S20947C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev)();
extern void ABISELECT(_ZThn120_N9S20947C22D0Ev,_ZThn72_N9S20947C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C4__9S20947C228S20947C2__8S20947C1[] = {
  ABISELECT(16,12),
  ABISELECT(-120,-72),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev)();
extern void ABISELECT(_ZThn152_N9S20947C22D1Ev,_ZThn88_N9S20947C22D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev)();
extern void ABISELECT(_ZThn152_N9S20947C22D0Ev,_ZThn88_N9S20947C22D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C228S20947C2__8S20947C1[] = {
  ABISELECT(-152,-88),
  ABISELECT(-152,-88),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C4__9S20947C228S20947C2__8S20947C1[] = {
  ABISELECT(-136,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C22[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn208_N8S20947C2D1Ev,_ZThn128_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn208_N8S20947C2D0Ev,_ZThn128_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C3__8S20947C2__8S20947C1[] = {
  ABISELECT(80,44),
  ABISELECT(-320,-192),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-320,-192),
  0,
  ABISELECT(-208,-128),
  ABISELECT(128,72),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn304_N8S20947C2D1Ev,_ZThn184_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn304_N8S20947C2D0Ev,_ZThn184_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C2__8S20947C1[] = {
  ABISELECT(16,12),
  ABISELECT(-304,-184),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-304,-184),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C2D1Ev,_ZTv0_n12_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn336_N8S20947C2D1Ev,_ZThn200_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C2D0Ev,_ZTv0_n12_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn336_N8S20947C2D0Ev,_ZThn200_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C2__8S20947C1[] = {
  ABISELECT(-336,-200),
  ABISELECT(-336,-200),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C2D1Ev,_ZTv0_n12_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C2D0Ev,_ZTv0_n12_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C4__8S20947C2__8S20947C1[] = {
  ABISELECT(-320,-196),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn368_N8S20947C2D1Ev,_ZThn216_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn368_N8S20947C2D0Ev,_ZThn216_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C2__8S20947C1[] = {
  ABISELECT(-368,-216),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-368,-216),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn80_n32_N8S20947C2D1Ev,_ZTvn44_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N8S20947C2D0Ev,_ZTvn44_n16_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C138S20947C3__8S20947C2__8S20947C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-288,-172),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C2D1Ev,_ZTvn44_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N8S20947C2D0Ev,_ZTvn44_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn224_N8S20947C2D1Ev,_ZThn140_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn224_N8S20947C2D0Ev,_ZThn140_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C138S20947C3__8S20947C2__8S20947C1[] = {
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-224,-140),
  ABISELECT(112,60),
  ABISELECT(-224,-140),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n32_N8S20947C2D1Ev,_ZTvn28_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N8S20947C2D0Ev,_ZTvn28_n16_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C138S20947C3__A1__8S20947C2__8S20947C1[] = {
  ABISELECT(-256,-156),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20947C2D1Ev,_ZTvn28_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N8S20947C2D0Ev,_ZTvn28_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZThn16_N8S20947C2D1Ev,_ZThn12_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C2D0Ev,_ZThn12_N8S20947C2D0Ev)();
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__A__8S20947C2__8S20947C1[] = {
  ABISELECT(400,236),
  ABISELECT(192,116),
  ABISELECT(-128,-76),
  ABISELECT(352,204),
  ABISELECT(363,211),
  ABISELECT(368,216),
  ABISELECT(272,160),
  ABISELECT(-128,-76),
  ABISELECT(320,188),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20947C2D1Ev,_ZThn12_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N8S20947C2D0Ev,_ZThn12_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S20947C2D1Ev,_ZTv0_n28_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn384_N8S20947C2D1Ev,_ZThn228_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S20947C2D0Ev,_ZTv0_n28_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn384_N8S20947C2D0Ev,_ZThn228_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C20__8S20947C2__8S20947C1[] = {
  ABISELECT(-384,-228),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(-384,-228),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20947C2D1Ev,_ZTv0_n28_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S20947C2D0Ev,_ZTv0_n28_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S20947C2D1Ev,_ZTvn4_n28_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S20947C2D0Ev,_ZTvn4_n28_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__A1__8S20947C2__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-392,-232),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20947C2D1Ev,_ZTvn4_n28_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S20947C2D0Ev,_ZTvn4_n28_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn56_N8S20947C2D1Ev,_ZThn40_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn56_N8S20947C2D0Ev,_ZThn40_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A2__8S20947C2__8S20947C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(232,132),
  ABISELECT(232,132),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20947C2D1Ev,_ZThn40_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N8S20947C2D0Ev,_ZThn40_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C2D1Ev,_ZThn52_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C2D0Ev,_ZThn52_N8S20947C2D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__8S20947C2__8S20947C1[] = {
  ABISELECT(256,148),
  ABISELECT(128,76),
  ABISELECT(-192,-116),
  ABISELECT(288,164),
  ABISELECT(-192,-116),
  ABISELECT(208,120),
  ABISELECT(208,120),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C2D1Ev,_ZThn52_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C2D0Ev,_ZThn52_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C2D1Ev,_ZThn64_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C2D0Ev,_ZThn64_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__A1__8S20947C2__8S20947C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(192,108),
  ABISELECT(112,64),
  ABISELECT(-96,-64),
  ABISELECT(240,136),
  ABISELECT(-96,-64),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N8S20947C2D1Ev,_ZThn96_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn160_N8S20947C2D0Ev,_ZThn96_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2__8S20947C1[] = {
  ABISELECT(-272,-160),
  ABISELECT(128,76),
  ABISELECT(128,76),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20947C2D1Ev,_ZThn96_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S20947C2D0Ev,_ZThn96_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn176_N8S20947C2D1Ev,_ZThn108_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn176_N8S20947C2D0Ev,_ZThn108_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A5__8S20947C2__8S20947C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(-176,-108),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20947C2D1Ev,_ZThn108_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S20947C2D0Ev,_ZThn108_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn416_N8S20947C2D1Ev,_ZThn248_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn416_N8S20947C2D0Ev,_ZThn248_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A2__8S20947C2__8S20947C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(-416,-248),
  ABISELECT(-80,-48),
  ABISELECT(-416,-248),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S20947C2D1Ev,_ZTvn16_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S20947C2D0Ev,_ZTvn16_n16_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A3__8S20947C2__8S20947C1[] = {
  ABISELECT(-448,-264),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20947C2D1Ev,_ZTvn16_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S20947C2D0Ev,_ZTvn16_n16_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S20947C2D1Ev,_ZTvn32_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S20947C2D0Ev,_ZTvn32_n16_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A5__8S20947C2__8S20947C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-480,-280),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20947C2D1Ev,_ZTvn32_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S20947C2D0Ev,_ZTvn32_n16_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn184_N8S20947C2D1Ev,_ZThn112_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn184_N8S20947C2D0Ev,_ZThn112_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C22__8S20947C2__8S20947C1[] = {
  ABISELECT(-296,-176),
  ABISELECT(152,88),
  ABISELECT(120,72),
  ABISELECT(195,111),
  ABISELECT(-184,-112),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20947C2D1Ev,_ZThn112_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn184_N8S20947C2D0Ev,_ZThn112_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n120_N8S20947C2D1Ev,_ZTv0_n60_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn496_N8S20947C2D1Ev,_ZThn292_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20947C2D0Ev,_ZTv0_n60_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn496_N8S20947C2D0Ev,_ZThn292_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C23__8S20947C2__8S20947C1[] = {
  ABISELECT(-496,-292),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-608,-356),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-608,-356),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,16),
  ABISELECT(-208,-120),
  0,
  0,
  ABISELECT(-496,-292),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20947C2D1Ev,_ZTv0_n60_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20947C2D0Ev,_ZTv0_n60_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n96_N8S20947C2D1Ev,_ZTv0_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn528_N8S20947C2D1Ev,_ZThn308_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N8S20947C2D0Ev,_ZTv0_n48_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn528_N8S20947C2D0Ev,_ZThn308_N8S20947C2D0Ev)() __attribute__((weak));
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__A1__8S20947C2__8S20947C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-528,-308),
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-640,-372),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-640,-372),
  ABISELECT(-192,-108),
  ABISELECT(-528,-308),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20947C2D1Ev,_ZTv0_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N8S20947C2D0Ev,_ZTv0_n48_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C49S20947C199S20947C18__A7__8S20947C2__8S20947C1[] = {
  ABISELECT(-544,-320),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn40_n96_N8S20947C2D1Ev,_ZTvn28_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N8S20947C2D0Ev,_ZTvn28_n48_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A6__8S20947C2__8S20947C1[] = {
  ABISELECT(-680,-400),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-568,-336),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20947C2D1Ev,_ZTvn28_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N8S20947C2D0Ev,_ZTvn28_n48_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n96_N8S20947C2D1Ev,_ZTvn40_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N8S20947C2D0Ev,_ZTvn40_n48_N8S20947C2D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__A1__8S20947C2__8S20947C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-704,-412),
  ABISELECT(-224,-132),
  ABISELECT(-704,-412),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-592,-348),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20947C2D1Ev,_ZTvn40_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N8S20947C2D0Ev,_ZTvn40_n48_N8S20947C2D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev)();
extern void ABISELECT(_ZThn608_N8S20947C2D1Ev,_ZThn360_N8S20947C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev)();
extern void ABISELECT(_ZThn608_N8S20947C2D0Ev,_ZThn360_N8S20947C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__A3__8S20947C2__8S20947C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-608,-360),
  ABISELECT(-272,-160),
  ABISELECT(-608,-360),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N8S20947C2D1Ev,_ZTvn68_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N8S20947C2D0Ev,_ZTvn68_n48_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C139S20947C219S20947C18__A4__8S20947C2__8S20947C1[] = {
  ABISELECT(-640,-376),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20947C2D1Ev,_ZTvn68_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N8S20947C2D0Ev,_ZTvn68_n48_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn144_n96_N8S20947C2D1Ev,_ZTvn84_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N8S20947C2D0Ev,_ZTvn84_n48_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C2__8S20947C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-672,-392),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20947C2D1Ev,_ZTvn84_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N8S20947C2D0Ev,_ZTvn84_n48_N8S20947C2D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n96_N8S20947C2D1Ev,_ZTvn96_n48_N8S20947C2D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N8S20947C2D0Ev,_ZTvn96_n48_N8S20947C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A10__8S20947C2__8S20947C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-688,-404),
  (VTBL_ENTRY)&(_ZTI8S20947C2[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20947C2D1Ev,_ZTvn96_n48_N8S20947C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N8S20947C2D0Ev,_ZTvn96_n48_N8S20947C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void _ZN8S20947C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void _ZN8S20947C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C3__8S20947C1[] = {
  ABISELECT(80,44),
  ABISELECT(-320,-192),
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(-320,-192),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev)();
extern void _ZN9S20947C12D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev)();
extern void _ZN9S20947C12D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C128S20947C3__8S20947C1[] = {
  ABISELECT(-320,-192),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev)();
extern void ABISELECT(_ZThn128_N9S20947C12D1Ev,_ZThn72_N9S20947C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev)();
extern void ABISELECT(_ZThn128_N9S20947C12D0Ev,_ZThn72_N9S20947C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C128S20947C3__8S20947C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S20947C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn60_N9S20947C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn60_N9S20947C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C138S20947C3__8S20947C1[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C138S20947C3__8S20947C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn60_N9S20947C13D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn60_N9S20947C13D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C138S20947C3__8S20947C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S20947C3D1Ev,_ZThn56_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S20947C3D0Ev,_ZThn56_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C3__8S20947C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C3D1Ev,_ZThn72_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn128_N8S20947C3D0Ev,_ZThn72_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C3__8S20947C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C4__8S20947C3__8S20947C1[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn160_N8S20947C3D1Ev,_ZThn88_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn160_N8S20947C3D0Ev,_ZThn88_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C3__8S20947C1[] = {
  ABISELECT(-160,-88),
  0,
  ABISELECT(-480,-280),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__8S20947C3__8S20947C1[] = {
  ABISELECT(-400,-236),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D1Ev,_ZThn44_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S20947C3D0Ev,_ZThn44_N8S20947C3D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__8S20947C3__8S20947C1[] = {
  ABISELECT(-336,-204),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20947C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev),
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C4__8S20947C1[] = {
  ABISELECT(-416,-248),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C4__8S20947C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C4__8S20947C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
extern void ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C4__8S20947C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C10D1Ev();
extern void _ZN9S20947C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C10__8S20947C1[] = {
  ABISELECT(-480,-280),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C10[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C10D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__8S20947C1[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZThn128_N8S20947C5D1Ev,_ZThn72_N8S20947C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
extern void ABISELECT(_ZThn128_N8S20947C5D0Ev,_ZThn72_N8S20947C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C5__A1__8S20947C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C20D1Ev();
extern void _ZN9S20947C20D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C20__8S20947C1[] = {
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C20D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__A1__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C20__A1__8S20947C1[] = {
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C20__A1__8S20947C1[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C20__A1__8S20947C1[] = {
  0,
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C20__8S20947C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D1Ev,_ZTv0_n12_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C20D0Ev,_ZTv0_n12_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev)();
extern void ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C20__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D1Ev,_ZThn4_N9S20947C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S20947C20D0Ev,_ZThn4_N9S20947C20D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C20__8S20947C1[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S20947C20[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__A2__8S20947C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C13__A2__8S20947C1[] = {
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  0,
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C13__A2__8S20947C1[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A2__8S20947C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C13__A2__8S20947C1[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A5__8S20947C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C13__A6__8S20947C1[] = {
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A6__8S20947C1[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C13__A5__8S20947C1[] = {
  0,
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C13__A2__8S20947C1[] = {
  ABISELECT(208,120),
  ABISELECT(128,72),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C13__A2__8S20947C1[] = {
  ABISELECT(80,48),
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C13__A2__8S20947C1[] = {
  0,
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C13__A2__8S20947C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C23D1Ev();
extern void _ZN9S20947C23D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C23__8S20947C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  ABISELECT(-608,-356),
  ABISELECT(-128,-76),
  ABISELECT(-112,-64),
  ABISELECT(-608,-356),
  ABISELECT(-160,-92),
  ABISELECT(-117,-69),
  ABISELECT(32,16),
  ABISELECT(-208,-120),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C23D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C23D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C23__8S20947C1[] = {
  0,
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn32_N9S20947C23D1Ev,_ZThn16_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn32_N9S20947C23D0Ev,_ZThn16_N9S20947C23D0Ev)() __attribute__((weak));
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__9S20947C23__8S20947C1[] = {
  ABISELECT(64,40),
  0,
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-640,-372),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-640,-372),
  ABISELECT(-192,-108),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C23__8S20947C1[] = {
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C23D1Ev,_ZTv0_n12_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C23D0Ev,_ZTv0_n12_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C98S20947C49S20947C199S20947C18__A2__9S20947C23__8S20947C1[] = {
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C23__8S20947C1[] = {
  ABISELECT(112,64),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C23D1Ev,_ZTv0_n28_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C23D0Ev,_ZTv0_n28_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C23D1Ev,_ZTvn4_n28_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C23D0Ev,_ZTvn4_n28_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C23__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(104,60),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C23D1Ev,_ZTvn4_n28_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C23D0Ev,_ZTvn4_n28_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn40_n96_N9S20947C23D1Ev,_ZTvn28_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn40_n96_N9S20947C23D0Ev,_ZTvn28_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A1__9S20947C23__8S20947C1[] = {
  ABISELECT(-680,-400),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20947C23D1Ev,_ZTvn28_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn40_n96_N9S20947C23D0Ev,_ZTvn28_n48_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n96_N9S20947C23D1Ev,_ZTvn40_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn64_n96_N9S20947C23D0Ev,_ZTvn40_n48_N9S20947C23D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__9S20947C23__8S20947C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-704,-412),
  ABISELECT(-224,-132),
  ABISELECT(-704,-412),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20947C23D1Ev,_ZTvn40_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n96_N9S20947C23D0Ev,_ZTvn40_n48_N9S20947C23D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C23__8S20947C1[] = {
  ABISELECT(128,76),
  0,
  ABISELECT(-480,-280),
  ABISELECT(128,76),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C23D1Ev,_ZTv0_n20_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C23D0Ev,_ZTv0_n20_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZThn112_N9S20947C23D1Ev,_ZThn68_N9S20947C23D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
extern void ABISELECT(_ZThn112_N9S20947C23D0Ev,_ZThn68_N9S20947C23D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23__8S20947C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-112,-68),
  ABISELECT(-272,-160),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C23__8S20947C1[] = {
  ABISELECT(288,164),
  ABISELECT(128,72),
  ABISELECT(288,164),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTvn112_n96_N9S20947C23D1Ev,_ZTvn68_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn112_n96_N9S20947C23D0Ev,_ZTvn68_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C139S20947C219S20947C18__A1__9S20947C23__8S20947C1[] = {
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20947C23D1Ev,_ZTvn68_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n96_N9S20947C23D0Ev,_ZTvn68_n48_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn144_n96_N9S20947C23D1Ev,_ZTvn84_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn144_n96_N9S20947C23D0Ev,_ZTvn84_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23__8S20947C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20947C23D1Ev,_ZTvn84_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn144_n96_N9S20947C23D0Ev,_ZTvn84_n48_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn160_n96_N9S20947C23D1Ev,_ZTvn96_n48_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn160_n96_N9S20947C23D0Ev,_ZTvn96_n48_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A4__9S20947C23__8S20947C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20947C23D1Ev,_ZTvn96_n48_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n96_N9S20947C23D0Ev,_ZTvn96_n48_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C23__8S20947C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(80,44),
  ABISELECT(-80,-48),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C23D1Ev,_ZTvn16_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C23D0Ev,_ZTvn16_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C23__8S20947C1[] = {
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C23D1Ev,_ZTvn16_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C23D0Ev,_ZTvn16_n16_N9S20947C23D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C23D1Ev,_ZTvn32_n16_N9S20947C23D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C23D0Ev,_ZTvn32_n16_N9S20947C23D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C23__8S20947C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S20947C23[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C23D1Ev,_ZTvn32_n16_N9S20947C23D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C23D0Ev,_ZTvn32_n16_N9S20947C23D0Ev),
};
extern void _ZN9S20947C18D1Ev();
extern void _ZN9S20947C18D0Ev();
extern void _ZN9S20947C182v3Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-112,-60),
  ABISELECT(-320,-180),
  ABISELECT(-640,-372),
  ABISELECT(-160,-92),
  ABISELECT(-149,-85),
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-640,-372),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN9S20947C18D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C18D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C182v3Ev,
};
extern void _ZN9S20947C19D1Ev();
extern void _ZN9S20947C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C199S20947C18__A1__8S20947C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-240,-136),
  ABISELECT(-640,-372),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN9S20947C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C19D0Ev,
};
extern void _ZN8S20947C4D1Ev();
extern void _ZN8S20947C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C49S20947C199S20947C18__A2__8S20947C1[] = {
  ABISELECT(-640,-372),
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&_ZN8S20947C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C4D0Ev,
};
extern void _ZN8S20947C5D1Ev();
extern void _ZN8S20947C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C1[] = {
  ABISELECT(-192,-108),
  0,
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&_ZN8S20947C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20947C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C1[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S20947C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__A2__8S20947C1[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI8S20947C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C199S20947C18__A1__8S20947C1[] = {
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C199S20947C18__A1__8S20947C1[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C199S20947C18__A1__8S20947C1[] = {
  ABISELECT(144,80),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__A1__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20947C19[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D1Ev,_ZTvn4_n28_N9S20947C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C19D0Ev,_ZTvn4_n28_N9S20947C19D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C18__A6__8S20947C1[] = {
  ABISELECT(-680,-400),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C18__A7__8S20947C1[] = {
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A7__8S20947C1[] = {
  0,
  ABISELECT(280,164),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C18__A6__8S20947C1[] = {
  0,
  ABISELECT(280,164),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C21D1Ev();
extern void _ZN9S20947C21D0Ev();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-704,-412),
  ABISELECT(-224,-132),
  ABISELECT(-704,-412),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C21D0Ev,
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C219S20947C18__A7__8S20947C1[] = {
  ABISELECT(-704,-412),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C1[] = {
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C1[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A7__8S20947C1[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void _ZN9S20947C13D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
extern void _ZN9S20947C13D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  0,
  ABISELECT(-272,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void _ZN9S20947C14D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
extern void _ZN9S20947C14D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  0,
  ABISELECT(-272,-160),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(400,232),
  ABISELECT(128,72),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(272,160),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  0,
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20947C14[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C16D1Ev();
extern void _ZN9S20947C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C16D0Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C1[] = {
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C1[] = {
  0,
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C1[] = {
  0,
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S20947C16[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(400,232),
  ABISELECT(128,72),
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(272,160),
  ABISELECT(272,160),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  0,
  ABISELECT(320,188),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__A3__8S20947C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S20947C13[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D1Ev,_ZThn32_N9S20947C13D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C13D0Ev,_ZThn32_N9S20947C13D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void _ZN9S20947C17D1Ev();
extern void _ZN9S20947C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C219S20947C18__A10__8S20947C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  0,
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D1Ev,
  (VTBL_ENTRY)&_ZN9S20947C17D0Ev,
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A10__8S20947C1[] = {
  0,
  ABISELECT(400,232),
  (VTBL_ENTRY)&(_ZTI9S20947C17[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(224,132),
  0,
  ABISELECT(-480,-280),
  ABISELECT(224,132),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__A1__9S20947C219S20947C18__A1__8S20947C1[] = {
  0,
  ABISELECT(304,176),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
extern void ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C13__9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-16,-12),
  ABISELECT(-272,-160),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(384,220),
  ABISELECT(128,72),
  ABISELECT(384,220),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(256,148),
  ABISELECT(256,148),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D1Ev,_ZThn44_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S20947C21D0Ev,_ZThn44_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C17__A2__9S20947C219S20947C18__A1__8S20947C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S20947C21[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D1Ev,_ZThn56_N9S20947C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S20947C21D0Ev,_ZThn56_N9S20947C21D0Ev),
};
extern void _ZN8S20947C92v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20947C9__9S20947C18__A1__8S20947C1[] = {
  0,
  ABISELECT(240,136),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(192,108),
  ABISELECT(192,108),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C20__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(144,80),
  0,
  ABISELECT(-496,-292),
  ABISELECT(-96,-56),
  ABISELECT(-48,-28),
  ABISELECT(144,80),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C20__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-504,-296),
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  ABISELECT(136,76),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D1Ev,_ZTvn4_n28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S20947C18D0Ev,_ZTvn4_n28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C16__A1__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-680,-400),
  ABISELECT(-280,-164),
  ABISELECT(-280,-164),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D1Ev,_ZThn28_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N9S20947C18D0Ev,_ZThn28_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev)();
extern void _ZN9S20947C212v2Ev();
static  VTBL_ENTRY _tg__ZTV9S20947C21__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-256,-148),
  ABISELECT(-384,-220),
  ABISELECT(-704,-412),
  ABISELECT(-224,-132),
  ABISELECT(-704,-412),
  ABISELECT(-304,-176),
  ABISELECT(-304,-176),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D1Ev,_ZThn40_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S20947C18D0Ev,_ZThn40_N9S20947C18D0Ev),
  (VTBL_ENTRY)&_ZN9S20947C212v2Ev,
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C10__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(160,92),
  0,
  ABISELECT(-480,-280),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
extern void ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20947C139S20947C21__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-720,-424),
  ABISELECT(-320,-188),
  ABISELECT(-400,-232),
  ABISELECT(-80,-52),
  ABISELECT(-272,-160),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S20947C5__A1__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(320,180),
  ABISELECT(128,72),
  ABISELECT(320,180),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-784,-456),
  ABISELECT(-384,-220),
  ABISELECT(-384,-220),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D1Ev,_ZThn84_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N9S20947C18D0Ev,_ZThn84_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C179S20947C21__A4__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D1Ev,_ZThn96_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N9S20947C18D0Ev,_ZThn96_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C13__A1__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-528,-312),
  ABISELECT(-128,-76),
  ABISELECT(-208,-120),
  ABISELECT(112,60),
  ABISELECT(-80,-48),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D1Ev,_ZTvn16_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N9S20947C18D0Ev,_ZTvn16_n16_N9S20947C18D0Ev),
};
extern void _ZN8S20947C92v1Ev();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S20947C169S20947C13__A4__9S20947C18__A1__8S20947C1[] = {
  ABISELECT(-592,-344),
  ABISELECT(-192,-108),
  ABISELECT(-192,-108),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI9S20947C18[0]),
  (VTBL_ENTRY)&_ZN8S20947C92v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D1Ev,_ZTvn32_n16_N9S20947C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N9S20947C18D0Ev,_ZTvn32_n16_N9S20947C18D0Ev),
};
static  VTT_ENTRY vtt_S20947C1[] = {
  {&(_ZTV8S20947C1[18]),  18,329},
  {&(_tg__ZTV8S20947C3__A__8S20947C1[10]),  10,12},
  {&(_tg__ZTV9S20947C128S20947C3__A2__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C128S20947C3__A2__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C128S20947C3__A2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C138S20947C3__A4__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C138S20947C3__A4__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C138S20947C3__A4__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C138S20947C3__A4__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C138S20947C3__A4__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__A9__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C138S20947C3__A11__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C138S20947C3__A11__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C138S20947C3__A9__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C138S20947C3__A4__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C138S20947C3__A4__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C138S20947C3__A4__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C138S20947C3__A4__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C4__8S20947C3__A__8S20947C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20947C3__A__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C4__8S20947C3__A__8S20947C1[2]),  2,3},
  {&(_tg__ZTV9S20947C10__8S20947C3__A__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A2__8S20947C3__A__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C5__A1__8S20947C3__A__8S20947C1[4]),  4,6},
  {&(_tg__ZTV9S20947C13__8S20947C3__A__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3__A__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A12__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C17__A12__8S20947C1[3]),  3,4},
  {&(_ZTV8S20947C1[68]),  68,329},
  {&(_ZTV8S20947C1[155]),  155,329},
  {&(_ZTV8S20947C1[184]),  184,329},
  {&(_ZTV8S20947C1[192]),  192,329},
  {&(_ZTV8S20947C1[188]),  188,329},
  {&(_ZTV8S20947C1[199]),  199,329},
  {&(_ZTV8S20947C1[175]),  175,329},
  {&(_ZTV8S20947C1[155]),  155,329},
  {&(_ZTV8S20947C1[164]),  164,329},
  {&(_ZTV8S20947C1[168]),  168,329},
  {&(_ZTV8S20947C1[175]),  175,329},
  {&(_ZTV8S20947C1[81]),  81,329},
  {&(_ZTV8S20947C1[86]),  86,329},
  {&(_ZTV8S20947C1[209]),  209,329},
  {&(_ZTV8S20947C1[217]),  217,329},
  {&(_ZTV8S20947C1[92]),  92,329},
  {&(_ZTV8S20947C1[104]),  104,329},
  {&(_ZTV8S20947C1[115]),  115,329},
  {&(_ZTV8S20947C1[119]),  119,329},
  {&(_ZTV8S20947C1[126]),  126,329},
  {&(_ZTV8S20947C1[133]),  133,329},
  {&(_ZTV8S20947C1[227]),  227,329},
  {&(_ZTV8S20947C1[231]),  231,329},
  {&(_ZTV8S20947C1[238]),  238,329},
  {&(_ZTV8S20947C1[142]),  142,329},
  {&(_ZTV8S20947C1[256]),  256,329},
  {&(_ZTV8S20947C1[256]),  256,329},
  {&(_ZTV8S20947C1[274]),  274,329},
  {&(_ZTV8S20947C1[279]),  279,329},
  {&(_ZTV8S20947C1[285]),  285,329},
  {&(_ZTV8S20947C1[297]),  297,329},
  {&(_ZTV8S20947C1[308]),  308,329},
  {&(_ZTV8S20947C1[312]),  312,329},
  {&(_ZTV8S20947C1[319]),  319,329},
  {&(_ZTV8S20947C1[326]),  326,329},
  {&(_ZTV8S20947C1[27]),  27,329},
  {&(_ZTV8S20947C1[38]),  38,329},
  {&(_ZTV8S20947C1[45]),  45,329},
  {&(_tg__ZTV8S20947C2__8S20947C1[17]),  17,19},
  {&(_tg__ZTV9S20947C128S20947C2__A1__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C128S20947C2__A1__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C128S20947C2__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C188S20947C2__8S20947C1[11]),  11,14},
  {&(_tg__ZTV9S20947C199S20947C188S20947C2__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C49S20947C199S20947C188S20947C2__A1__8S20947C1[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C49S20947C199S20947C188S20947C2__A2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C188S20947C2__A2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C188S20947C2__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C199S20947C188S20947C2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C199S20947C188S20947C2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C199S20947C188S20947C2__8S20947C1[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C199S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C188S20947C2__A2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C188S20947C2__A2__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C188S20947C2__A2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C188S20947C2__A2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C219S20947C188S20947C2__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C219S20947C188S20947C2__A3__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C188S20947C2__A4__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C139S20947C219S20947C188S20947C2__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C188S20947C2__A5__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C219S20947C188S20947C2__A5__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C10__9S20947C219S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C219S20947C188S20947C2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C219S20947C188S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV8S20947C5__9S20947C219S20947C188S20947C2__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C219S20947C188S20947C2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C219S20947C188S20947C2__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C188S20947C2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C188S20947C2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C188S20947C2__8S20947C1[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C16__A1__9S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C21__9S20947C188S20947C2__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C188S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV8S20947C5__A1__9S20947C188S20947C2__8S20947C1[4]),  4,6},
  {&(_tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C21__A4__9S20947C188S20947C2__8S20947C1[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C188S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C188S20947C2__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C188S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C228S20947C2__8S20947C1[6]),  6,9},
  {&(_tg__ZTV8S20947C4__9S20947C228S20947C2__8S20947C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C228S20947C2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C4__9S20947C228S20947C2__8S20947C1[2]),  2,3},
  {&(_tg__ZTV8S20947C3__8S20947C2__8S20947C1[10]),  10,12},
  {&(_tg__ZTV8S20947C4__8S20947C2__8S20947C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20947C2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C4__8S20947C2__8S20947C1[2]),  2,3},
  {&(_tg__ZTV9S20947C10__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C3__8S20947C2__8S20947C1[10]),  10,12},
  {&(_tg__ZTV9S20947C138S20947C3__8S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C138S20947C3__A1__8S20947C2__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C18__A__8S20947C2__8S20947C1[11]),  11,14},
  {&(_tg__ZTV9S20947C20__8S20947C2__8S20947C1[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__A1__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A2__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C219S20947C18__8S20947C2__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__A1__8S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A4__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A5__8S20947C2__8S20947C1[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A2__8S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A3__8S20947C2__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A5__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C22__8S20947C2__8S20947C1[6]),  6,9},
  {&(_tg__ZTV9S20947C23__8S20947C2__8S20947C1[15]),  15,18},
  {&(_tg__ZTV9S20947C23__8S20947C2__8S20947C1[15]),  15,18},
  {&(_tg__ZTV9S20947C18__A1__8S20947C2__8S20947C1[15]),  15,18},
  {&(_tg__ZTV8S20947C98S20947C49S20947C199S20947C18__A7__8S20947C2__8S20947C1[2]),  2,3},
  {&(_tg__ZTV9S20947C169S20947C18__A6__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C219S20947C18__A1__8S20947C2__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__A3__8S20947C2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C139S20947C219S20947C18__A4__8S20947C2__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A10__8S20947C2__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C3__8S20947C1[10]),  10,12},
  {&(_tg__ZTV9S20947C128S20947C3__8S20947C1[6]),  6,8},
  {&(_tg__ZTV9S20947C128S20947C3__8S20947C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S20947C128S20947C3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C138S20947C3__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C138S20947C3__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C138S20947C3__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C138S20947C3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C138S20947C3__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C138S20947C3__8S20947C1[4]),  4,7},
  {&(_tg__ZTV9S20947C179S20947C169S20947C138S20947C3__8S20947C1[4]),  4,7},
  {&(_tg__ZTV9S20947C169S20947C138S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C5__9S20947C138S20947C3__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C138S20947C3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C138S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C16__9S20947C138S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C4__8S20947C3__8S20947C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S20947C3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C4__8S20947C3__8S20947C1[2]),  2,3},
  {&(_tg__ZTV9S20947C10__8S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C3__8S20947C1[10]),  10,12},
  {&(_tg__ZTV9S20947C13__8S20947C3__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C169S20947C13__8S20947C3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C4__8S20947C1[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C4__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C4__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C4__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C10__8S20947C1[3]),  3,6},
  {&(_tg__ZTV8S20947C5__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C5__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C20__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C20__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C20__A1__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C20__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C20__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C20__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C16__9S20947C20__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C20__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C13__A2__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C13__A2__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C13__A2__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C13__A2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C13__A2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C13__A5__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C13__A6__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C13__A6__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C13__A5__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C13__A2__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C13__A2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C13__A2__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C13__A2__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C23__8S20947C1[14]),  14,17},
  {&(_tg__ZTV9S20947C23__8S20947C1[14]),  14,17},
  {&(_tg__ZTV8S20947C9__A1__9S20947C23__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C18__9S20947C23__8S20947C1[15]),  15,18},
  {&(_tg__ZTV11S20948C7_nt__9S20947C23__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C98S20947C49S20947C199S20947C18__A2__9S20947C23__8S20947C1[2]),  2,3},
  {&(_tg__ZTV9S20947C20__9S20947C23__8S20947C1[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C23__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A1__9S20947C23__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C219S20947C18__9S20947C23__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C23__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__9S20947C23__8S20947C1[7]),  7,9},
  {&(_tg__ZTV8S20947C5__A1__9S20947C23__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt9S20947C139S20947C219S20947C18__A1__9S20947C23__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A3__9S20947C23__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A4__9S20947C23__8S20947C1[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C23__8S20947C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C23__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C23__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C18__A1__8S20947C1[11]),  11,14},
  {&(_tg__ZTV9S20947C199S20947C18__A1__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C49S20947C199S20947C18__A2__8S20947C1[4]),  4,6},
  {&(_tg__ZTV8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C58S20947C49S20947C199S20947C18__A3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S20947C49S20947C199S20947C18__A2__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C199S20947C18__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C199S20947C18__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C199S20947C18__A1__8S20947C1[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C199S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C169S20947C18__A6__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C18__A7__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C18__A7__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C18__A6__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C219S20947C18__A1__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C169S20947C219S20947C18__A7__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C219S20947C18__A8__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C219S20947C18__A7__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C139S20947C219S20947C18__A3__8S20947C1[7]),  7,9},
  {&(_tg__ZTV9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[6]),  6,8},
  {&(_tg__ZTV8S20947C5__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C149S20947C139S20947C219S20947C18__A3__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C169S20947C139S20947C219S20947C18__A9__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C9__9S20947C169S20947C139S20947C219S20947C18__A8__8S20947C1[3]),  3,4},
  {&(_tg__ZTV8S20947C5__9S20947C139S20947C219S20947C18__A3__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C139S20947C219S20947C18__A3__8S20947C1[3]),  3,5},
  {&(_tg__ZTV8S20947C9__9S20947C139S20947C219S20947C18__A3__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C16__9S20947C139S20947C219S20947C18__A3__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C219S20947C18__A10__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C179S20947C219S20947C18__A10__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C10__9S20947C219S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV8S20947C9__A1__9S20947C219S20947C18__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV9S20947C13__9S20947C219S20947C18__A1__8S20947C1[7]),  7,9},
  {&(_tg__ZTV8S20947C5__9S20947C219S20947C18__A1__8S20947C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S20947C219S20947C18__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C169S20947C13__A1__9S20947C219S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C17__A2__9S20947C219S20947C18__A1__8S20947C1[4]),  4,7},
  {&(_tg__ZTV8S20947C9__9S20947C18__A1__8S20947C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__9S20947C18__A1__8S20947C1[3]),  3,5},
  {&(_tg__ZTV9S20947C20__9S20947C18__A1__8S20947C1[7]),  7,10},
  {&(_tg__ZTV9S20947C169S20947C20__9S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C16__A1__9S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C21__9S20947C18__A1__8S20947C1[9]),  9,13},
  {&(_tg__ZTV9S20947C10__9S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C139S20947C21__9S20947C18__A1__8S20947C1[7]),  7,9},
  {&(_tg__ZTV8S20947C5__A1__9S20947C18__A1__8S20947C1[4]),  4,6},
  {&(_tg__ZTV9S20947C169S20947C139S20947C21__A3__9S20947C18__A1__8S20947C1[5]),  5,8},
  {&(_tg__ZTV9S20947C179S20947C21__A4__9S20947C18__A1__8S20947C1[4]),  4,7},
  {&(_tg__ZTV9S20947C13__A1__9S20947C18__A1__8S20947C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S20947C13__A2__9S20947C18__A1__8S20947C1[2]),  2,4},
  {&(_tg__ZTV9S20947C169S20947C13__A4__9S20947C18__A1__8S20947C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20947C1[];
extern  VTBL_ENTRY _ZTV8S20947C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20947C1[];
static VTBL_ENTRY alt_thunk_names56[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C23D0Ev,_ZTv0_n16_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C23D0Ev,_ZThn68_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C23D1Ev,_ZTv0_n16_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C23D1Ev,_ZThn68_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20947C23D0Ev,_ZTv0_n48_N9S20947C23D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C23D0Ev,_ZThn16_N9S20947C23D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N9S20947C23D1Ev,_ZTv0_n48_N9S20947C23D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20947C23D1Ev,_ZThn16_N9S20947C23D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20947C2D0Ev,_ZTv0_n48_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20947C2D0Ev,_ZThn308_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20947C2D1Ev,_ZTv0_n48_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20947C2D1Ev,_ZThn308_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20947C2D0Ev,_ZTv0_n60_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20947C2D0Ev,_ZThn292_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20947C2D1Ev,_ZTv0_n60_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20947C2D1Ev,_ZThn292_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20947C2D0Ev,_ZTv0_n28_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20947C2D0Ev,_ZThn228_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20947C2D1Ev,_ZTv0_n28_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn384_N8S20947C2D1Ev,_ZThn228_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C2D0Ev,_ZTv0_n12_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20947C2D0Ev,_ZThn200_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C2D1Ev,_ZTv0_n12_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20947C2D1Ev,_ZThn200_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C2D0Ev,_ZTv0_n20_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20947C2D0Ev,_ZThn216_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20947C2D0Ev,_ZThn184_N8S20947C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C2D1Ev,_ZTv0_n20_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S20947C2D1Ev,_ZThn216_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N8S20947C2D1Ev,_ZThn184_N8S20947C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C22D0Ev,_ZTv0_n12_N9S20947C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20947C22D0Ev,_ZThn88_N9S20947C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C22D1Ev,_ZTv0_n12_N9S20947C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N9S20947C22D1Ev,_ZThn88_N9S20947C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C22D0Ev,_ZTv0_n20_N9S20947C22D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20947C22D0Ev,_ZThn72_N9S20947C22D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C22D1Ev,_ZTv0_n20_N9S20947C22D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S20947C22D1Ev,_ZThn72_N9S20947C22D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D0Ev,_ZTv0_n16_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20947C18D0Ev,_ZThn236_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20947C18D0Ev,_ZThn116_N9S20947C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D0Ev,_ZThn52_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C18D1Ev,_ZTv0_n16_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S20947C18D1Ev,_ZThn236_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S20947C18D1Ev,_ZThn116_N9S20947C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S20947C18D1Ev,_ZThn52_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D0Ev,_ZTv0_n20_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20947C18D0Ev,_ZThn204_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C18D1Ev,_ZTv0_n20_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N9S20947C18D1Ev,_ZThn204_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D0Ev,_ZTv0_n28_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C18D0Ev,_ZThn216_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C18D1Ev,_ZTv0_n28_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C18D1Ev,_ZThn216_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D0Ev,_ZTv0_n12_N9S20947C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C18D0Ev,_ZThn188_N9S20947C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C18D1Ev,_ZTv0_n12_N9S20947C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C18D1Ev,_ZThn188_N9S20947C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D0Ev,_ZTv0_n12_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20947C21D0Ev,_ZThn148_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C21D1Ev,_ZTv0_n12_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N9S20947C21D1Ev,_ZThn148_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D0Ev,_ZTv0_n16_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C21D0Ev,_ZThn76_N9S20947C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D0Ev,_ZThn12_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C21D1Ev,_ZTv0_n16_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C21D1Ev,_ZThn76_N9S20947C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S20947C21D1Ev,_ZThn12_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D0Ev,_ZTv0_n20_N9S20947C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20947C21D0Ev,_ZThn164_N9S20947C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S20947C21D1Ev,_ZTv0_n20_N9S20947C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S20947C21D1Ev,_ZThn164_N9S20947C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D0Ev,_ZTv0_n28_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C19D0Ev,_ZThn216_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S20947C19D1Ev,_ZTv0_n28_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S20947C19D1Ev,_ZThn216_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D0Ev,_ZTv0_n12_N9S20947C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C19D0Ev,_ZThn188_N9S20947C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C19D1Ev,_ZTv0_n12_N9S20947C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C19D1Ev,_ZThn188_N9S20947C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D0Ev,_ZTv0_n12_N8S20947C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D0Ev,_ZThn16_N8S20947C4D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C4D0Ev,_ZThn188_N8S20947C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C4D1Ev,_ZTv0_n12_N8S20947C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C4D1Ev,_ZThn16_N8S20947C4D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C4D1Ev,_ZThn188_N8S20947C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D0Ev,_ZTv0_n12_N8S20947C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C5D0Ev,_ZThn72_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D0Ev,_ZThn16_N8S20947C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C5D0Ev,_ZThn188_N8S20947C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C5D1Ev,_ZTv0_n12_N8S20947C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C5D1Ev,_ZThn72_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20947C5D1Ev,_ZThn16_N8S20947C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C5D1Ev,_ZThn188_N8S20947C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C2D0Ev,_ZTv0_n16_N8S20947C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20947C2D0Ev,_ZThn360_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C2D0Ev,_ZThn248_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C2D0Ev,_ZThn64_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20947C2D0Ev,_ZThn140_N8S20947C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20947C2D0Ev,_ZThn128_N8S20947C2D0Ev),
  (VTBL_ENTRY)_ZN8S20947C2D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C2D1Ev,_ZTv0_n16_N8S20947C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20947C2D1Ev,_ZThn360_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C2D1Ev,_ZThn248_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C2D1Ev,_ZThn64_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S20947C2D1Ev,_ZThn140_N8S20947C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20947C2D1Ev,_ZThn128_N8S20947C2D1Ev),
  (VTBL_ENTRY)_ZN8S20947C2D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C3D0Ev,_ZTv0_n12_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C3D0Ev,_ZThn72_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20947C3D0Ev,_ZThn264_N8S20947C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C3D1Ev,_ZTv0_n12_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20947C3D1Ev,_ZThn72_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20947C3D1Ev,_ZThn264_N8S20947C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C3D0Ev,_ZTv0_n20_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20947C3D0Ev,_ZThn88_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C3D0Ev,_ZThn56_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20947C3D0Ev,_ZThn280_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C3D0Ev,_ZThn248_N8S20947C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C3D1Ev,_ZTv0_n20_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S20947C3D1Ev,_ZThn88_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S20947C3D1Ev,_ZThn56_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20947C3D1Ev,_ZThn280_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C3D1Ev,_ZThn248_N8S20947C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D0Ev,_ZTv0_n12_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn60_N9S20947C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C13D0Ev,_ZThn136_N9S20947C13D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20947C13D0Ev,_ZThn252_N9S20947C13D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C13D1Ev,_ZTv0_n12_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn60_N9S20947C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C13D1Ev,_ZThn136_N9S20947C13D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20947C13D1Ev,_ZThn252_N9S20947C13D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D0Ev,_ZTv0_n12_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn60_N9S20947C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C14D0Ev,_ZThn136_N9S20947C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20947C14D0Ev,_ZThn252_N9S20947C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C14D1Ev,_ZTv0_n12_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn60_N9S20947C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn240_N9S20947C14D1Ev,_ZThn136_N9S20947C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N9S20947C14D1Ev,_ZThn252_N9S20947C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D0Ev,_ZTv0_n16_N9S20947C14D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D0Ev,_ZThn64_N9S20947C14D0Ev),
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20947C14D0Ev,_ZThn180_N9S20947C14D0Ev),
  (VTBL_ENTRY)_ZN9S20947C14D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C14D1Ev,_ZTv0_n16_N9S20947C14D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C14D1Ev,_ZThn64_N9S20947C14D1Ev),
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20947C14D1Ev,_ZThn180_N9S20947C14D1Ev),
  (VTBL_ENTRY)_ZN9S20947C14D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D0Ev,_ZTv0_n16_N9S20947C13D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D0Ev,_ZThn64_N9S20947C13D0Ev),
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20947C13D0Ev,_ZThn180_N9S20947C13D0Ev),
  (VTBL_ENTRY)_ZN9S20947C13D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C13D1Ev,_ZTv0_n16_N9S20947C13D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S20947C13D1Ev,_ZThn64_N9S20947C13D1Ev),
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S20947C13D1Ev,_ZThn180_N9S20947C13D1Ev),
  (VTBL_ENTRY)_ZN9S20947C13D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D0Ev,_ZTv0_n12_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C12D0Ev,_ZThn72_N9S20947C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20947C12D0Ev,_ZThn200_N9S20947C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20947C12D0Ev,_ZThn264_N9S20947C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S20947C12D1Ev,_ZTv0_n12_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S20947C12D1Ev,_ZThn72_N9S20947C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S20947C12D1Ev,_ZThn200_N9S20947C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N9S20947C12D1Ev,_ZThn264_N9S20947C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C12D0Ev,_ZTv0_n16_N9S20947C12D0Ev), // 
  (VTBL_ENTRY)_ZN9S20947C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C12D0Ev,_ZThn128_N9S20947C12D0Ev),
  (VTBL_ENTRY)_ZN9S20947C12D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C12D0Ev,_ZThn192_N9S20947C12D0Ev),
  (VTBL_ENTRY)_ZN9S20947C12D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S20947C12D1Ev,_ZTv0_n16_N9S20947C12D1Ev), // 
  (VTBL_ENTRY)_ZN9S20947C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn208_N9S20947C12D1Ev,_ZThn128_N9S20947C12D1Ev),
  (VTBL_ENTRY)_ZN9S20947C12D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S20947C12D1Ev,_ZThn192_N9S20947C12D1Ev),
  (VTBL_ENTRY)_ZN9S20947C12D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C3D0Ev,_ZTv0_n16_N8S20947C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev),
  (VTBL_ENTRY)_ZN8S20947C3D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D0Ev,_ZThn12_N8S20947C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C3D0Ev,_ZThn192_N8S20947C3D0Ev),
  (VTBL_ENTRY)_ZN8S20947C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C3D1Ev,_ZTv0_n16_N8S20947C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev),
  (VTBL_ENTRY)_ZN8S20947C3D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C3D1Ev,_ZThn12_N8S20947C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C3D1Ev,_ZThn192_N8S20947C3D1Ev),
  (VTBL_ENTRY)_ZN8S20947C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20947C1D0Ev,_ZTv0_n48_N8S20947C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S20947C1D0Ev,_ZThn372_N8S20947C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N8S20947C1D1Ev,_ZTv0_n48_N8S20947C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn640_N8S20947C1D1Ev,_ZThn372_N8S20947C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20947C1D0Ev,_ZTv0_n60_N8S20947C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20947C1D0Ev,_ZThn356_N8S20947C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20947C1D1Ev,_ZTv0_n60_N8S20947C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn608_N8S20947C1D1Ev,_ZThn356_N8S20947C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20947C1D0Ev,_ZTv0_n28_N8S20947C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20947C1D0Ev,_ZThn292_N8S20947C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S20947C1D1Ev,_ZTv0_n28_N8S20947C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S20947C1D1Ev,_ZThn292_N8S20947C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C1D0Ev,_ZTv0_n12_N8S20947C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20947C1D0Ev,_ZThn264_N8S20947C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20947C1D1Ev,_ZTv0_n12_N8S20947C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S20947C1D1Ev,_ZThn264_N8S20947C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C1D0Ev,_ZTv0_n20_N8S20947C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20947C1D0Ev,_ZThn280_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C1D0Ev,_ZThn248_N8S20947C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20947C1D1Ev,_ZTv0_n20_N8S20947C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N8S20947C1D1Ev,_ZThn280_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn416_N8S20947C1D1Ev,_ZThn248_N8S20947C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C1D0Ev,_ZTv0_n16_N8S20947C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S20947C1D0Ev,_ZThn424_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20947C1D0Ev,_ZThn312_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20947C1D0Ev,_ZThn204_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C1D0Ev,_ZThn192_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20947C1D0Ev,_ZThn128_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20947C1D0Ev,_ZThn64_N8S20947C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C1D0Ev,_ZThn12_N8S20947C1D0Ev),
  (VTBL_ENTRY)_ZN8S20947C1D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20947C1D1Ev,_ZTv0_n16_N8S20947C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn720_N8S20947C1D1Ev,_ZThn424_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn528_N8S20947C1D1Ev,_ZThn312_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N8S20947C1D1Ev,_ZThn204_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S20947C1D1Ev,_ZThn192_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn208_N8S20947C1D1Ev,_ZThn128_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S20947C1D1Ev,_ZThn64_N8S20947C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S20947C1D1Ev,_ZThn12_N8S20947C1D1Ev),
  (VTBL_ENTRY)_ZN8S20947C1D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20947C1 = {  "S20947C1", // class name
  bases_S20947C1, 114,
  &(vtc_S20947C1[0]), // expected_vtbl_contents
  &(vtt_S20947C1[0]), // expected_vtt_contents
  ABISELECT(816,472), // object size
  NSPAIRA(_ZTI8S20947C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20947C1),329, //virtual function table var
  18, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20947C1),288, //virtual table table var
  71, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names56,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16375C1  {
  ::S10296C48 s16375c1f0;
  ::S10296C32 s16375c1f1;
  ::S10296C32 s16375c1f2;
  ::S10296C32 s16375c1f3;
  ::S10296C6_nt s16375c1f4;
  ::S10296C11_nt s16375c1f5;
  void *s16375c1f6;
  void  mf16375c1(); // _ZN8S16375C19mf16375c1Ev
};
//SIG(1 S16375C1) C1{ m FC2{ m Fp[2]} FC3{ m Fp[2]} FC3 FC3 FC4{ m FC5{ m FC6{ m Fp[2]} FC7{ m Fp[2]}} FC5} FC8{ m FC9{ BC10{ vd v7 v8 v9 v10 v11 v12 FC11{ m Fp[4]}} BC12{} v1 v2 v3 v4 v5 v6 FC13{ BC14{ m Fp Fi Fp Fi[2]} FC15{ m FC16{ m FC17{ m FL[2]}} FC16 FC16 FC16}} FC18{ BC14 FC16}} FC19{ BC20{ BC21{ vd v13} vd v14 Fp[2] FC22{ m FC23{ m Fp Fi[2] FC24{ m}}} FC7} vd FC25{ m FC26{ Fs[2] Fc[2] Fs}[12] Fi FC27{ Fs[2]}[4] Fi FC3}}} Fp}


void  S16375C1 ::mf16375c1(){}

static void Test_S16375C1()
{
  {
    init_simple_test("S16375C1");
    S16375C1 lv;
    check2(sizeof(lv), ABISELECT(520,372), "sizeof(S16375C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16375C1)");
    check_field_offset(lv, s16375c1f0, 0, "S16375C1.s16375c1f0");
    check_field_offset(lv, s16375c1f1, ABISELECT(16,8), "S16375C1.s16375c1f1");
    check_field_offset(lv, s16375c1f2, ABISELECT(32,16), "S16375C1.s16375c1f2");
    check_field_offset(lv, s16375c1f3, ABISELECT(48,24), "S16375C1.s16375c1f3");
    check_field_offset(lv, s16375c1f4, ABISELECT(64,32), "S16375C1.s16375c1f4");
    check_field_offset(lv, s16375c1f5, ABISELECT(128,64), "S16375C1.s16375c1f5");
    check_field_offset(lv, s16375c1f6, ABISELECT(512,368), "S16375C1.s16375c1f6");
  }
}
static Arrange_To_Call_Me vS16375C1(Test_S16375C1, "S16375C1", ABISELECT(520,372));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3285C3  {
  int s3285c3f0;
  __tsi64 s3285c3f1;
  void *s3285c3f2[4];
  int s3285c3f3[2];
  void *s3285c3f4;
  ::S1540C5_nt s3285c3f5;
  void *s3285c3f6[2];
  virtual  ~S3285C3(); // _ZN7S3285C3D1Ev
  virtual void  v5(); // _ZN7S3285C32v5Ev
  virtual void  v6(); // _ZN7S3285C32v6Ev
  virtual void  v7(); // _ZN7S3285C32v7Ev
  virtual void  v8(); // _ZN7S3285C32v8Ev
  virtual void  v9(); // _ZN7S3285C32v9Ev
  virtual void  v10(); // _ZN7S3285C33v10Ev
  virtual void  v11(); // _ZN7S3285C33v11Ev
  virtual void  v12(); // _ZN7S3285C33v12Ev
  virtual void  v13(); // _ZN7S3285C33v13Ev
  virtual void  v14(); // _ZN7S3285C33v14Ev
  virtual void  v15(); // _ZN7S3285C33v15Ev
  virtual void  v16(); // _ZN7S3285C33v16Ev
  virtual void  v17(); // _ZN7S3285C33v17Ev
  virtual void  v18(); // _ZN7S3285C33v18Ev
  virtual void  v19(); // _ZN7S3285C33v19Ev
  virtual void  v20(); // _ZN7S3285C33v20Ev
  virtual void  v21(); // _ZN7S3285C33v21Ev
  virtual void  v22(); // _ZN7S3285C33v22Ev
  virtual void  v23(); // _ZN7S3285C33v23Ev
  virtual void  v24(); // _ZN7S3285C33v24Ev
  virtual void  v25(); // _ZN7S3285C33v25Ev
  virtual void  v26(); // _ZN7S3285C33v26Ev
  virtual void  v27(); // _ZN7S3285C33v27Ev
  virtual void  v28(); // _ZN7S3285C33v28Ev
  virtual void  v29(); // _ZN7S3285C33v29Ev
  virtual void  v30(); // _ZN7S3285C33v30Ev
  virtual void  v31(); // _ZN7S3285C33v31Ev
  virtual void  v32(); // _ZN7S3285C33v32Ev
  virtual void  v33(); // _ZN7S3285C33v33Ev
  virtual void  v34(); // _ZN7S3285C33v34Ev
  virtual void  v35(); // _ZN7S3285C33v35Ev
  virtual void  v36(); // _ZN7S3285C33v36Ev
  virtual void  v37(); // _ZN7S3285C33v37Ev
  virtual void  v38(); // _ZN7S3285C33v38Ev
  virtual void  v39(); // _ZN7S3285C33v39Ev
  virtual void  v40(); // _ZN7S3285C33v40Ev
  virtual void  v41(); // _ZN7S3285C33v41Ev
  virtual void  v42(); // _ZN7S3285C33v42Ev
  virtual void  v43(); // _ZN7S3285C33v43Ev
  virtual void  v44(); // _ZN7S3285C33v44Ev
  virtual void  v45(); // _ZN7S3285C33v45Ev
  virtual void  v46(); // _ZN7S3285C33v46Ev
  virtual void  v47(); // _ZN7S3285C33v47Ev
  virtual void  v48(); // _ZN7S3285C33v48Ev
  virtual void  v49(); // _ZN7S3285C33v49Ev
  virtual void  v50(); // _ZN7S3285C33v50Ev
  virtual void  v51(); // _ZN7S3285C33v51Ev
  virtual void  v52(); // _ZN7S3285C33v52Ev
  virtual void  v53(); // _ZN7S3285C33v53Ev
  virtual void  v54(); // _ZN7S3285C33v54Ev
  virtual void  v55(); // _ZN7S3285C33v55Ev
  virtual void  v56(); // _ZN7S3285C33v56Ev
  virtual void  v57(); // _ZN7S3285C33v57Ev
  virtual void  v58(); // _ZN7S3285C33v58Ev
  virtual void  v59(); // _ZN7S3285C33v59Ev
  virtual void  v60(); // _ZN7S3285C33v60Ev
  virtual void  v61(); // _ZN7S3285C33v61Ev
  virtual void  v62(); // _ZN7S3285C33v62Ev
  virtual void  v63(); // _ZN7S3285C33v63Ev
  virtual void  v64(); // _ZN7S3285C33v64Ev
  virtual void  v65(); // _ZN7S3285C33v65Ev
  virtual void  v66(); // _ZN7S3285C33v66Ev
  virtual void  v67(); // _ZN7S3285C33v67Ev
  virtual void  v68(); // _ZN7S3285C33v68Ev
  S3285C3(); // tgen
};
//SIG(-1 S3285C3) 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]}


 S3285C3 ::~S3285C3(){ note_dtor("S3285C3", this);}
void  S3285C3 ::v5(){vfunc_called(this, "_ZN7S3285C32v5Ev");}
void  S3285C3 ::v6(){vfunc_called(this, "_ZN7S3285C32v6Ev");}
void  S3285C3 ::v7(){vfunc_called(this, "_ZN7S3285C32v7Ev");}
void  S3285C3 ::v8(){vfunc_called(this, "_ZN7S3285C32v8Ev");}
void  S3285C3 ::v9(){vfunc_called(this, "_ZN7S3285C32v9Ev");}
void  S3285C3 ::v10(){vfunc_called(this, "_ZN7S3285C33v10Ev");}
void  S3285C3 ::v11(){vfunc_called(this, "_ZN7S3285C33v11Ev");}
void  S3285C3 ::v12(){vfunc_called(this, "_ZN7S3285C33v12Ev");}
void  S3285C3 ::v13(){vfunc_called(this, "_ZN7S3285C33v13Ev");}
void  S3285C3 ::v14(){vfunc_called(this, "_ZN7S3285C33v14Ev");}
void  S3285C3 ::v15(){vfunc_called(this, "_ZN7S3285C33v15Ev");}
void  S3285C3 ::v16(){vfunc_called(this, "_ZN7S3285C33v16Ev");}
void  S3285C3 ::v17(){vfunc_called(this, "_ZN7S3285C33v17Ev");}
void  S3285C3 ::v18(){vfunc_called(this, "_ZN7S3285C33v18Ev");}
void  S3285C3 ::v19(){vfunc_called(this, "_ZN7S3285C33v19Ev");}
void  S3285C3 ::v20(){vfunc_called(this, "_ZN7S3285C33v20Ev");}
void  S3285C3 ::v21(){vfunc_called(this, "_ZN7S3285C33v21Ev");}
void  S3285C3 ::v22(){vfunc_called(this, "_ZN7S3285C33v22Ev");}
void  S3285C3 ::v23(){vfunc_called(this, "_ZN7S3285C33v23Ev");}
void  S3285C3 ::v24(){vfunc_called(this, "_ZN7S3285C33v24Ev");}
void  S3285C3 ::v25(){vfunc_called(this, "_ZN7S3285C33v25Ev");}
void  S3285C3 ::v26(){vfunc_called(this, "_ZN7S3285C33v26Ev");}
void  S3285C3 ::v27(){vfunc_called(this, "_ZN7S3285C33v27Ev");}
void  S3285C3 ::v28(){vfunc_called(this, "_ZN7S3285C33v28Ev");}
void  S3285C3 ::v29(){vfunc_called(this, "_ZN7S3285C33v29Ev");}
void  S3285C3 ::v30(){vfunc_called(this, "_ZN7S3285C33v30Ev");}
void  S3285C3 ::v31(){vfunc_called(this, "_ZN7S3285C33v31Ev");}
void  S3285C3 ::v32(){vfunc_called(this, "_ZN7S3285C33v32Ev");}
void  S3285C3 ::v33(){vfunc_called(this, "_ZN7S3285C33v33Ev");}
void  S3285C3 ::v34(){vfunc_called(this, "_ZN7S3285C33v34Ev");}
void  S3285C3 ::v35(){vfunc_called(this, "_ZN7S3285C33v35Ev");}
void  S3285C3 ::v36(){vfunc_called(this, "_ZN7S3285C33v36Ev");}
void  S3285C3 ::v37(){vfunc_called(this, "_ZN7S3285C33v37Ev");}
void  S3285C3 ::v38(){vfunc_called(this, "_ZN7S3285C33v38Ev");}
void  S3285C3 ::v39(){vfunc_called(this, "_ZN7S3285C33v39Ev");}
void  S3285C3 ::v40(){vfunc_called(this, "_ZN7S3285C33v40Ev");}
void  S3285C3 ::v41(){vfunc_called(this, "_ZN7S3285C33v41Ev");}
void  S3285C3 ::v42(){vfunc_called(this, "_ZN7S3285C33v42Ev");}
void  S3285C3 ::v43(){vfunc_called(this, "_ZN7S3285C33v43Ev");}
void  S3285C3 ::v44(){vfunc_called(this, "_ZN7S3285C33v44Ev");}
void  S3285C3 ::v45(){vfunc_called(this, "_ZN7S3285C33v45Ev");}
void  S3285C3 ::v46(){vfunc_called(this, "_ZN7S3285C33v46Ev");}
void  S3285C3 ::v47(){vfunc_called(this, "_ZN7S3285C33v47Ev");}
void  S3285C3 ::v48(){vfunc_called(this, "_ZN7S3285C33v48Ev");}
void  S3285C3 ::v49(){vfunc_called(this, "_ZN7S3285C33v49Ev");}
void  S3285C3 ::v50(){vfunc_called(this, "_ZN7S3285C33v50Ev");}
void  S3285C3 ::v51(){vfunc_called(this, "_ZN7S3285C33v51Ev");}
void  S3285C3 ::v52(){vfunc_called(this, "_ZN7S3285C33v52Ev");}
void  S3285C3 ::v53(){vfunc_called(this, "_ZN7S3285C33v53Ev");}
void  S3285C3 ::v54(){vfunc_called(this, "_ZN7S3285C33v54Ev");}
void  S3285C3 ::v55(){vfunc_called(this, "_ZN7S3285C33v55Ev");}
void  S3285C3 ::v56(){vfunc_called(this, "_ZN7S3285C33v56Ev");}
void  S3285C3 ::v57(){vfunc_called(this, "_ZN7S3285C33v57Ev");}
void  S3285C3 ::v58(){vfunc_called(this, "_ZN7S3285C33v58Ev");}
void  S3285C3 ::v59(){vfunc_called(this, "_ZN7S3285C33v59Ev");}
void  S3285C3 ::v60(){vfunc_called(this, "_ZN7S3285C33v60Ev");}
void  S3285C3 ::v61(){vfunc_called(this, "_ZN7S3285C33v61Ev");}
void  S3285C3 ::v62(){vfunc_called(this, "_ZN7S3285C33v62Ev");}
void  S3285C3 ::v63(){vfunc_called(this, "_ZN7S3285C33v63Ev");}
void  S3285C3 ::v64(){vfunc_called(this, "_ZN7S3285C33v64Ev");}
void  S3285C3 ::v65(){vfunc_called(this, "_ZN7S3285C33v65Ev");}
void  S3285C3 ::v66(){vfunc_called(this, "_ZN7S3285C33v66Ev");}
void  S3285C3 ::v67(){vfunc_called(this, "_ZN7S3285C33v67Ev");}
void  S3285C3 ::v68(){vfunc_called(this, "_ZN7S3285C33v68Ev");}
S3285C3 ::S3285C3(){ note_ctor("S3285C3", this);} // tgen

static void Test_S3285C3()
{
  extern Class_Descriptor cd_S3285C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S3285C3, buf);
    S3285C3 *dp, &lv = *(dp=new (buf) S3285C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S3285C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3285C3)");
    check_field_offset(lv, s3285c3f0, ABISELECT(8,4), "S3285C3.s3285c3f0");
    check_field_offset(lv, s3285c3f1, ABISELECT(16,8), "S3285C3.s3285c3f1");
    check_field_offset(lv, s3285c3f2, ABISELECT(24,16), "S3285C3.s3285c3f2");
    check_field_offset(lv, s3285c3f3, ABISELECT(56,32), "S3285C3.s3285c3f3");
    check_field_offset(lv, s3285c3f4, ABISELECT(64,40), "S3285C3.s3285c3f4");
    check_field_offset(lv, s3285c3f5, ABISELECT(72,44), "S3285C3.s3285c3f5");
    check_field_offset(lv, s3285c3f6, ABISELECT(80,52), "S3285C3.s3285c3f6");
    test_class_info(&lv, &cd_S3285C3);
    dp->~S3285C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3285C3(Test_S3285C3, "S3285C3", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S3285C3C1Ev();
extern void _ZN7S3285C3D1Ev();
Name_Map name_map_S3285C3[] = {
  NSPAIR(_ZN7S3285C3C1Ev),
  NSPAIR(_ZN7S3285C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S3285C3[];
extern void _ZN7S3285C3D1Ev();
extern void _ZN7S3285C3D0Ev();
extern void _ZN7S3285C32v5Ev();
extern void _ZN7S3285C32v6Ev();
extern void _ZN7S3285C32v7Ev();
extern void _ZN7S3285C32v8Ev();
extern void _ZN7S3285C32v9Ev();
extern void _ZN7S3285C33v10Ev();
extern void _ZN7S3285C33v11Ev();
extern void _ZN7S3285C33v12Ev();
extern void _ZN7S3285C33v13Ev();
extern void _ZN7S3285C33v14Ev();
extern void _ZN7S3285C33v15Ev();
extern void _ZN7S3285C33v16Ev();
extern void _ZN7S3285C33v17Ev();
extern void _ZN7S3285C33v18Ev();
extern void _ZN7S3285C33v19Ev();
extern void _ZN7S3285C33v20Ev();
extern void _ZN7S3285C33v21Ev();
extern void _ZN7S3285C33v22Ev();
extern void _ZN7S3285C33v23Ev();
extern void _ZN7S3285C33v24Ev();
extern void _ZN7S3285C33v25Ev();
extern void _ZN7S3285C33v26Ev();
extern void _ZN7S3285C33v27Ev();
extern void _ZN7S3285C33v28Ev();
extern void _ZN7S3285C33v29Ev();
extern void _ZN7S3285C33v30Ev();
extern void _ZN7S3285C33v31Ev();
extern void _ZN7S3285C33v32Ev();
extern void _ZN7S3285C33v33Ev();
extern void _ZN7S3285C33v34Ev();
extern void _ZN7S3285C33v35Ev();
extern void _ZN7S3285C33v36Ev();
extern void _ZN7S3285C33v37Ev();
extern void _ZN7S3285C33v38Ev();
extern void _ZN7S3285C33v39Ev();
extern void _ZN7S3285C33v40Ev();
extern void _ZN7S3285C33v41Ev();
extern void _ZN7S3285C33v42Ev();
extern void _ZN7S3285C33v43Ev();
extern void _ZN7S3285C33v44Ev();
extern void _ZN7S3285C33v45Ev();
extern void _ZN7S3285C33v46Ev();
extern void _ZN7S3285C33v47Ev();
extern void _ZN7S3285C33v48Ev();
extern void _ZN7S3285C33v49Ev();
extern void _ZN7S3285C33v50Ev();
extern void _ZN7S3285C33v51Ev();
extern void _ZN7S3285C33v52Ev();
extern void _ZN7S3285C33v53Ev();
extern void _ZN7S3285C33v54Ev();
extern void _ZN7S3285C33v55Ev();
extern void _ZN7S3285C33v56Ev();
extern void _ZN7S3285C33v57Ev();
extern void _ZN7S3285C33v58Ev();
extern void _ZN7S3285C33v59Ev();
extern void _ZN7S3285C33v60Ev();
extern void _ZN7S3285C33v61Ev();
extern void _ZN7S3285C33v62Ev();
extern void _ZN7S3285C33v63Ev();
extern void _ZN7S3285C33v64Ev();
extern void _ZN7S3285C33v65Ev();
extern void _ZN7S3285C33v66Ev();
extern void _ZN7S3285C33v67Ev();
extern void _ZN7S3285C33v68Ev();
static  VTBL_ENTRY vtc_S3285C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3285C3[0]),
  (VTBL_ENTRY)&_ZN7S3285C3D1Ev,
  (VTBL_ENTRY)&_ZN7S3285C3D0Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v68Ev,
};
extern VTBL_ENTRY _ZTI7S3285C3[];
extern  VTBL_ENTRY _ZTV7S3285C3[];
Class_Descriptor cd_S3285C3 = {  "S3285C3", // class name
  0,0,//no base classes
  &(vtc_S3285C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S3285C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S3285C3),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  S3285C2  : S3285C3 {
  unsigned int s3285c2f0:1;
  unsigned int s3285c2f1:1;
  void *s3285c2f2;
  int s3285c2f3[3];
  virtual  ~S3285C2(); // _ZN7S3285C2D1Ev
  virtual void  v69(); // _ZN7S3285C23v69Ev
  virtual void  v70(); // _ZN7S3285C23v70Ev
  virtual void  v71(); // _ZN7S3285C23v71Ev
  virtual void  v72(); // _ZN7S3285C23v72Ev
  virtual void  v73(); // _ZN7S3285C23v73Ev
  S3285C2(); // tgen
};
//SIG(-1 S3285C2) 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 Fi:1 Fp Fi[3]}


 S3285C2 ::~S3285C2(){ note_dtor("S3285C2", this);}
void  S3285C2 ::v69(){vfunc_called(this, "_ZN7S3285C23v69Ev");}
void  S3285C2 ::v70(){vfunc_called(this, "_ZN7S3285C23v70Ev");}
void  S3285C2 ::v71(){vfunc_called(this, "_ZN7S3285C23v71Ev");}
void  S3285C2 ::v72(){vfunc_called(this, "_ZN7S3285C23v72Ev");}
void  S3285C2 ::v73(){vfunc_called(this, "_ZN7S3285C23v73Ev");}
S3285C2 ::S3285C2(){ note_ctor("S3285C2", this);} // tgen

static void Test_S3285C2()
{
  extern Class_Descriptor cd_S3285C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S3285C2, buf);
    S3285C2 *dp, &lv = *(dp=new (buf) S3285C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S3285C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3285C2)");
    check_base_class_offset(lv, (S3285C3*), 0, "S3285C2");
    set_bf_and_test(lv, s3285c2f0, ABISELECT(96,60), 0, 1, 1, "S3285C2");
    set_bf_and_test(lv, s3285c2f1, ABISELECT(96,60), 1, 1, 1, "S3285C2");
    check_field_offset(lv, s3285c2f2, ABISELECT(104,64), "S3285C2.s3285c2f2");
    check_field_offset(lv, s3285c2f3, ABISELECT(112,68), "S3285C2.s3285c2f3");
    test_class_info(&lv, &cd_S3285C2);
    dp->~S3285C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3285C2(Test_S3285C2, "S3285C2", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN7S3285C2C1Ev();
extern void _ZN7S3285C2D1Ev();
Name_Map name_map_S3285C2[] = {
  NSPAIR(_ZN7S3285C2C1Ev),
  NSPAIR(_ZN7S3285C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3285C3;
extern VTBL_ENTRY _ZTI7S3285C3[];
extern  VTBL_ENTRY _ZTV7S3285C3[];
static Base_Class bases_S3285C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3285C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3285C2[];
extern void _ZN7S3285C2D1Ev();
extern void _ZN7S3285C2D0Ev();
extern void _ZN7S3285C32v5Ev();
extern void _ZN7S3285C32v6Ev();
extern void _ZN7S3285C32v7Ev();
extern void _ZN7S3285C32v8Ev();
extern void _ZN7S3285C32v9Ev();
extern void _ZN7S3285C33v10Ev();
extern void _ZN7S3285C33v11Ev();
extern void _ZN7S3285C33v12Ev();
extern void _ZN7S3285C33v13Ev();
extern void _ZN7S3285C33v14Ev();
extern void _ZN7S3285C33v15Ev();
extern void _ZN7S3285C33v16Ev();
extern void _ZN7S3285C33v17Ev();
extern void _ZN7S3285C33v18Ev();
extern void _ZN7S3285C33v19Ev();
extern void _ZN7S3285C33v20Ev();
extern void _ZN7S3285C33v21Ev();
extern void _ZN7S3285C33v22Ev();
extern void _ZN7S3285C33v23Ev();
extern void _ZN7S3285C33v24Ev();
extern void _ZN7S3285C33v25Ev();
extern void _ZN7S3285C33v26Ev();
extern void _ZN7S3285C33v27Ev();
extern void _ZN7S3285C33v28Ev();
extern void _ZN7S3285C33v29Ev();
extern void _ZN7S3285C33v30Ev();
extern void _ZN7S3285C33v31Ev();
extern void _ZN7S3285C33v32Ev();
extern void _ZN7S3285C33v33Ev();
extern void _ZN7S3285C33v34Ev();
extern void _ZN7S3285C33v35Ev();
extern void _ZN7S3285C33v36Ev();
extern void _ZN7S3285C33v37Ev();
extern void _ZN7S3285C33v38Ev();
extern void _ZN7S3285C33v39Ev();
extern void _ZN7S3285C33v40Ev();
extern void _ZN7S3285C33v41Ev();
extern void _ZN7S3285C33v42Ev();
extern void _ZN7S3285C33v43Ev();
extern void _ZN7S3285C33v44Ev();
extern void _ZN7S3285C33v45Ev();
extern void _ZN7S3285C33v46Ev();
extern void _ZN7S3285C33v47Ev();
extern void _ZN7S3285C33v48Ev();
extern void _ZN7S3285C33v49Ev();
extern void _ZN7S3285C33v50Ev();
extern void _ZN7S3285C33v51Ev();
extern void _ZN7S3285C33v52Ev();
extern void _ZN7S3285C33v53Ev();
extern void _ZN7S3285C33v54Ev();
extern void _ZN7S3285C33v55Ev();
extern void _ZN7S3285C33v56Ev();
extern void _ZN7S3285C33v57Ev();
extern void _ZN7S3285C33v58Ev();
extern void _ZN7S3285C33v59Ev();
extern void _ZN7S3285C33v60Ev();
extern void _ZN7S3285C33v61Ev();
extern void _ZN7S3285C33v62Ev();
extern void _ZN7S3285C33v63Ev();
extern void _ZN7S3285C33v64Ev();
extern void _ZN7S3285C33v65Ev();
extern void _ZN7S3285C33v66Ev();
extern void _ZN7S3285C33v67Ev();
extern void _ZN7S3285C33v68Ev();
extern void _ZN7S3285C23v69Ev();
extern void _ZN7S3285C23v70Ev();
extern void _ZN7S3285C23v71Ev();
extern void _ZN7S3285C23v72Ev();
extern void _ZN7S3285C23v73Ev();
static  VTBL_ENTRY vtc_S3285C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3285C2[0]),
  (VTBL_ENTRY)&_ZN7S3285C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3285C2D0Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v73Ev,
};
extern VTBL_ENTRY _ZTI7S3285C2[];
extern  VTBL_ENTRY _ZTV7S3285C2[];
Class_Descriptor cd_S3285C2 = {  "S3285C2", // class name
  bases_S3285C2, 1,
  &(vtc_S3285C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI7S3285C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3285C2),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  S3285C1  : S3285C2 {
  virtual  ~S3285C1(); // _ZN7S3285C1D1Ev
  virtual void  v1(); // _ZN7S3285C12v1Ev
  virtual void  v2(); // _ZN7S3285C12v2Ev
  virtual void  v3(); // _ZN7S3285C12v3Ev
  virtual void  v4(); // _ZN7S3285C12v4Ev
  S3285C1(); // tgen
};
//SIG(1 S3285C1) C1{ BC2{ BC3{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC4{ m Fi[2]} Fp[2]} vd v69 v70 v71 v72 v73 Fi:1 Fi:1 Fp Fi[3]} vd v1 v2 v3 v4}


 S3285C1 ::~S3285C1(){ note_dtor("S3285C1", this);}
void  S3285C1 ::v1(){vfunc_called(this, "_ZN7S3285C12v1Ev");}
void  S3285C1 ::v2(){vfunc_called(this, "_ZN7S3285C12v2Ev");}
void  S3285C1 ::v3(){vfunc_called(this, "_ZN7S3285C12v3Ev");}
void  S3285C1 ::v4(){vfunc_called(this, "_ZN7S3285C12v4Ev");}
S3285C1 ::S3285C1(){ note_ctor("S3285C1", this);} // tgen

static void Test_S3285C1()
{
  extern Class_Descriptor cd_S3285C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S3285C1, buf);
    S3285C1 *dp, &lv = *(dp=new (buf) S3285C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S3285C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3285C1)");
    check_base_class_offset(lv, (S3285C3*)(S3285C2*), 0, "S3285C1");
    check_base_class_offset(lv, (S3285C2*), 0, "S3285C1");
    test_class_info(&lv, &cd_S3285C1);
    dp->~S3285C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3285C1(Test_S3285C1, "S3285C1", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN7S3285C1C1Ev();
extern void _ZN7S3285C1D1Ev();
Name_Map name_map_S3285C1[] = {
  NSPAIR(_ZN7S3285C1C1Ev),
  NSPAIR(_ZN7S3285C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3285C3;
extern VTBL_ENTRY _ZTI7S3285C3[];
extern  VTBL_ENTRY _ZTV7S3285C3[];
extern Class_Descriptor cd_S3285C2;
extern VTBL_ENTRY _ZTI7S3285C2[];
extern  VTBL_ENTRY _ZTV7S3285C2[];
static Base_Class bases_S3285C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3285C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3285C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3285C1[];
extern void _ZN7S3285C1D1Ev();
extern void _ZN7S3285C1D0Ev();
extern void _ZN7S3285C32v5Ev();
extern void _ZN7S3285C32v6Ev();
extern void _ZN7S3285C32v7Ev();
extern void _ZN7S3285C32v8Ev();
extern void _ZN7S3285C32v9Ev();
extern void _ZN7S3285C33v10Ev();
extern void _ZN7S3285C33v11Ev();
extern void _ZN7S3285C33v12Ev();
extern void _ZN7S3285C33v13Ev();
extern void _ZN7S3285C33v14Ev();
extern void _ZN7S3285C33v15Ev();
extern void _ZN7S3285C33v16Ev();
extern void _ZN7S3285C33v17Ev();
extern void _ZN7S3285C33v18Ev();
extern void _ZN7S3285C33v19Ev();
extern void _ZN7S3285C33v20Ev();
extern void _ZN7S3285C33v21Ev();
extern void _ZN7S3285C33v22Ev();
extern void _ZN7S3285C33v23Ev();
extern void _ZN7S3285C33v24Ev();
extern void _ZN7S3285C33v25Ev();
extern void _ZN7S3285C33v26Ev();
extern void _ZN7S3285C33v27Ev();
extern void _ZN7S3285C33v28Ev();
extern void _ZN7S3285C33v29Ev();
extern void _ZN7S3285C33v30Ev();
extern void _ZN7S3285C33v31Ev();
extern void _ZN7S3285C33v32Ev();
extern void _ZN7S3285C33v33Ev();
extern void _ZN7S3285C33v34Ev();
extern void _ZN7S3285C33v35Ev();
extern void _ZN7S3285C33v36Ev();
extern void _ZN7S3285C33v37Ev();
extern void _ZN7S3285C33v38Ev();
extern void _ZN7S3285C33v39Ev();
extern void _ZN7S3285C33v40Ev();
extern void _ZN7S3285C33v41Ev();
extern void _ZN7S3285C33v42Ev();
extern void _ZN7S3285C33v43Ev();
extern void _ZN7S3285C33v44Ev();
extern void _ZN7S3285C33v45Ev();
extern void _ZN7S3285C33v46Ev();
extern void _ZN7S3285C33v47Ev();
extern void _ZN7S3285C33v48Ev();
extern void _ZN7S3285C33v49Ev();
extern void _ZN7S3285C33v50Ev();
extern void _ZN7S3285C33v51Ev();
extern void _ZN7S3285C33v52Ev();
extern void _ZN7S3285C33v53Ev();
extern void _ZN7S3285C33v54Ev();
extern void _ZN7S3285C33v55Ev();
extern void _ZN7S3285C33v56Ev();
extern void _ZN7S3285C33v57Ev();
extern void _ZN7S3285C33v58Ev();
extern void _ZN7S3285C33v59Ev();
extern void _ZN7S3285C33v60Ev();
extern void _ZN7S3285C33v61Ev();
extern void _ZN7S3285C33v62Ev();
extern void _ZN7S3285C33v63Ev();
extern void _ZN7S3285C33v64Ev();
extern void _ZN7S3285C33v65Ev();
extern void _ZN7S3285C33v66Ev();
extern void _ZN7S3285C33v67Ev();
extern void _ZN7S3285C33v68Ev();
extern void _ZN7S3285C23v69Ev();
extern void _ZN7S3285C23v70Ev();
extern void _ZN7S3285C23v71Ev();
extern void _ZN7S3285C23v72Ev();
extern void _ZN7S3285C23v73Ev();
extern void _ZN7S3285C12v1Ev();
extern void _ZN7S3285C12v2Ev();
extern void _ZN7S3285C12v3Ev();
extern void _ZN7S3285C12v4Ev();
static  VTBL_ENTRY vtc_S3285C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3285C1[0]),
  (VTBL_ENTRY)&_ZN7S3285C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3285C1D0Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v5Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v6Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v7Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v8Ev,
  (VTBL_ENTRY)&_ZN7S3285C32v9Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v10Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v11Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v12Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v13Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v14Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v15Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v16Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v17Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v18Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v19Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v20Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v21Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v22Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v23Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v24Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v25Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v26Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v27Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v28Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v29Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v30Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v31Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v32Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v33Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v34Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v35Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v36Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v37Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v38Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v39Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v40Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v41Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v42Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v43Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v44Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v45Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v46Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v47Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v48Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v49Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v50Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v51Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v52Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v53Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v54Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v55Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v56Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v57Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v58Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v59Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v60Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v61Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v62Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v63Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v64Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v65Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v66Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v67Ev,
  (VTBL_ENTRY)&_ZN7S3285C33v68Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v69Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v70Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v71Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v72Ev,
  (VTBL_ENTRY)&_ZN7S3285C23v73Ev,
  (VTBL_ENTRY)&_ZN7S3285C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3285C12v2Ev,
  (VTBL_ENTRY)&_ZN7S3285C12v3Ev,
  (VTBL_ENTRY)&_ZN7S3285C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S3285C1[];
extern  VTBL_ENTRY _ZTV7S3285C1[];
Class_Descriptor cd_S3285C1 = {  "S3285C1", // class name
  bases_S3285C1, 2,
  &(vtc_S3285C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI7S3285C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3285C1),77, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C5  : S9624C48 , virtual S20948C7_nt {
  virtual  ~S19861C5(); // _ZN8S19861C5D2Ev
  S19861C5(); // tgen
};
//SIG(-1 S19861C5) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S19861C5()
{
  extern Class_Descriptor cd_S19861C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S19861C5, buf);
    S19861C5 *dp, &lv = *(dp=new (buf) S19861C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S19861C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19861C5");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S19861C5");
    test_class_info(&lv, &cd_S19861C5);
    dp->~S19861C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C5(Test_S19861C5, "S19861C5", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S19861C5C1Ev();
extern void _ZN8S19861C5D2Ev();
Name_Map name_map_S19861C5[] = {
  NSPAIR(_ZN8S19861C5C1Ev),
  NSPAIR(_ZN8S19861C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S19861C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19861C5[];
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S19861C5D1Ev,_ZThn4_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S19861C5D0Ev,_ZThn4_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19861C5[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern VTBL_ENTRY _ZTV8S19861C5[];
static  VTT_ENTRY vtt_S19861C5[] = {
  {&(_ZTV8S19861C5[3]),  3,10},
  {&(_ZTV8S19861C5[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
static VTBL_ENTRY alt_thunk_names57[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19861C5D0Ev,_ZThn4_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19861C5D1Ev,_ZThn4_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C5 = {  "S19861C5", // class name
  bases_S19861C5, 2,
  &(vtc_S19861C5[0]), // expected_vtbl_contents
  &(vtt_S19861C5[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S19861C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19861C5),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19861C5),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names57,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C3  : S20948C8 , virtual S19861C5 , virtual S9624C48 {
  virtual  ~S19861C3(); // _ZN8S19861C3D2Ev
  S19861C3(); // tgen
};
//SIG(-1 S19861C3) C1{ BC2{ m Fc[7]} VBC3{ BC4{ m} VBC5{ vd m FD} vd} VBC4 vd}


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

static void Test_S19861C3()
{
  extern Class_Descriptor cd_S19861C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S19861C3, buf);
    S19861C3 *dp, &lv = *(dp=new (buf) S19861C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S19861C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C3)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S19861C3");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*), 0, "S19861C3");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(16,12), "S19861C3");
    check_base_class_offset(lv, (S19861C5*), 0, "S19861C3");
    /*is_ambiguous_... S19861C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(48,28), "S19861C3");
    test_class_info(&lv, &cd_S19861C3);
    dp->~S19861C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C3(Test_S19861C3, "S19861C3", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S19861C3C1Ev();
extern void _ZN8S19861C3D2Ev();
Name_Map name_map_S19861C3[] = {
  NSPAIR(_ZN8S19861C3C1Ev),
  NSPAIR(_ZN8S19861C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19861C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19861C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19861C3[];
extern void _ZN8S19861C3D1Ev();
extern void _ZN8S19861C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19861C3D1Ev,_ZTv0_n12_N8S19861C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19861C3D1Ev,_ZThn12_N8S19861C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C3D0Ev,_ZTv0_n12_N8S19861C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19861C3D0Ev,_ZThn12_N8S19861C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19861C3[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C3[0]),
  (VTBL_ENTRY)&_ZN8S19861C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C3D1Ev,_ZTv0_n12_N8S19861C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C3D0Ev,_ZTv0_n12_N8S19861C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S19861C3[];
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__8S19861C3[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn16_N8S19861C5D1Ev,_ZThn12_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn16_N8S19861C5D0Ev,_ZThn12_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__8S19861C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
static  VTT_ENTRY vtt_S19861C3[] = {
  {&(_ZTV8S19861C3[6]),  6,13},
  {&(_ZTV8S19861C3[6]),  6,13},
  {&(_ZTV8S19861C3[11]),  11,13},
  {&(_tg__ZTV8S19861C5__8S19861C3[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__8S19861C3[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S19861C3[];
extern  VTBL_ENTRY _ZTV8S19861C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C3[];
static VTBL_ENTRY alt_thunk_names58[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19861C5D0Ev,_ZThn12_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19861C5D1Ev,_ZThn12_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C3D0Ev,_ZTv0_n12_N8S19861C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19861C3D0Ev,_ZThn12_N8S19861C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C3D1Ev,_ZTv0_n12_N8S19861C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19861C3D1Ev,_ZThn12_N8S19861C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C3 = {  "S19861C3", // class name
  bases_S19861C3, 5,
  &(vtc_S19861C3[0]), // expected_vtbl_contents
  &(vtt_S19861C3[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S19861C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19861C3),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19861C3),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names58,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C10  : S9624C39 {
  ::S9624C48 s19861c10f0;
  ::S9624C39 s19861c10f1;
};
//SIG(-1 S19861C10) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S19861C10()
{
  extern Class_Descriptor cd_S19861C10;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S19861C10, buf);
    S19861C10 &lv = *(new (buf) S19861C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S19861C10)");
    check2(__alignof__(lv), 1, "__alignof__(S19861C10)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19861C10");
    check_field_offset(lv, s19861c10f0, 0, "S19861C10.s19861c10f0");
    check_field_offset(lv, s19861c10f1, 1, "S19861C10.s19861c10f1");
    test_class_info(&lv, &cd_S19861C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C10(Test_S19861C10, "S19861C10", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19861C13  {
  virtual void  v1(); // _ZN9S19861C132v1Ev
  ~S19861C13(); // tgen
  S19861C13(); // tgen
};
//SIG(-1 S19861C13) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN9S19861C13C1Ev();
extern void _ZN9S19861C13D1Ev();
Name_Map name_map_S19861C13[] = {
  NSPAIR(_ZN9S19861C13C1Ev),
  NSPAIR(_ZN9S19861C13D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19861C13[];
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY vtc_S19861C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C13[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
Class_Descriptor cd_S19861C13 = {  "S19861C13", // class name
  0,0,//no base classes
  &(vtc_S19861C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19861C13),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19861C13),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  S19861C14  : S19861C5 , S20948C8 , S19861C13 , virtual S9624C48 {
  ~S19861C14(); // tgen
  S19861C14(); // tgen
};
//SIG(-1 S19861C14) C1{ BC2{ BC3{ m} VBC4{ vd m FD} vd} BC5{ m Fc[7]} BC6{ v1} VBC3}


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

static void Test_S19861C14()
{
  extern Class_Descriptor cd_S19861C14;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S19861C14, buf);
    S19861C14 *dp, &lv = *(dp=new (buf) S19861C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S19861C14)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C14)");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*), 0, "S19861C14");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(32,16), "S19861C14");
    check_base_class_offset(lv, (S19861C5*), 0, "S19861C14");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S19861C14");
    check_base_class_offset(lv, (S19861C13*), ABISELECT(16,12), "S19861C14");
    /*is_ambiguous_... S19861C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(64,32), "S19861C14");
    test_class_info(&lv, &cd_S19861C14);
    dp->~S19861C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C14(Test_S19861C14, "S19861C14", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN9S19861C14C1Ev();
extern void _ZN9S19861C14D1Ev();
Name_Map name_map_S19861C14[] = {
  NSPAIR(_ZN9S19861C14C1Ev),
  NSPAIR(_ZN9S19861C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19861C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19861C5,    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_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C13,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19861C14[];
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn32_N9S19861C14D1Ev,_ZThn16_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn32_N9S19861C14D0Ev,_ZThn16_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19861C14[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern VTBL_ENTRY _ZTV9S19861C14[];
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C14[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S19861C5D1Ev,_ZThn16_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S19861C5D0Ev,_ZThn16_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__9S19861C14[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
static  VTT_ENTRY vtt_S19861C14[] = {
  {&(_ZTV9S19861C14[4]),  4,14},
  {&(_tg__ZTV8S19861C5__9S19861C14[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__9S19861C14[3]),  3,5},
  {&(_ZTV9S19861C14[12]),  12,14},
};
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
static VTBL_ENTRY alt_thunk_names59[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19861C5D0Ev,_ZThn16_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19861C5D1Ev,_ZThn16_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19861C14D0Ev,_ZThn16_N9S19861C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19861C14D1Ev,_ZThn16_N9S19861C14D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C14 = {  "S19861C14", // class name
  bases_S19861C14, 6,
  &(vtc_S19861C14[0]), // expected_vtbl_contents
  &(vtt_S19861C14[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI9S19861C14),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19861C14),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C14),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names59,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C17  : virtual S19861C13 {
  virtual  ~S19861C17(); // _ZN9S19861C17D2Ev
  S19861C17(); // tgen
};
//SIG(-1 S19861C17) C1{ VBC2{ v1} vd}


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

static void Test_S19861C17()
{
  extern Class_Descriptor cd_S19861C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19861C17, buf);
    S19861C17 *dp, &lv = *(dp=new (buf) S19861C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19861C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19861C17)");
    check_base_class_offset(lv, (S19861C13*), 0, "S19861C17");
    test_class_info(&lv, &cd_S19861C17);
    dp->~S19861C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C17(Test_S19861C17, "S19861C17", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19861C17C1Ev();
extern void _ZN9S19861C17D2Ev();
Name_Map name_map_S19861C17[] = {
  NSPAIR(_ZN9S19861C17C1Ev),
  NSPAIR(_ZN9S19861C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
static Base_Class bases_S19861C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C13,    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 _ZTI9S19861C17[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY vtc_S19861C17[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern VTBL_ENTRY _ZTV9S19861C17[];
static  VTT_ENTRY vtt_S19861C17[] = {
  {&(_ZTV9S19861C17[4]),  4,7},
  {&(_ZTV9S19861C17[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
Class_Descriptor cd_S19861C17 = {  "S19861C17", // class name
  bases_S19861C17, 1,
  &(vtc_S19861C17[0]), // expected_vtbl_contents
  &(vtt_S19861C17[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19861C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19861C17),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C17),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  S19861C16  : S19861C17 , virtual S9624C48 {
  ::S20948C8 s19861c16f0;
  virtual  ~S19861C16(); // _ZN9S19861C16D2Ev
  S19861C16(); // tgen
};
//SIG(-1 S19861C16) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S19861C16()
{
  extern Class_Descriptor cd_S19861C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19861C16, buf);
    S19861C16 *dp, &lv = *(dp=new (buf) S19861C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19861C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19861C16)");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*), 0, "S19861C16");
    check_base_class_offset(lv, (S19861C17*), 0, "S19861C16");
    check_base_class_offset(lv, (S9624C48*), 0, "S19861C16");
    check_field_offset(lv, s19861c16f0, ABISELECT(8,4), "S19861C16.s19861c16f0");
    test_class_info(&lv, &cd_S19861C16);
    dp->~S19861C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C16(Test_S19861C16, "S19861C16", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S19861C16C1Ev();
extern void _ZN9S19861C16D2Ev();
Name_Map name_map_S19861C16[] = {
  NSPAIR(_ZN9S19861C16C1Ev),
  NSPAIR(_ZN9S19861C16D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19861C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C13,    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_S19861C17,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19861C16[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY vtc_S19861C16[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern VTBL_ENTRY _ZTV9S19861C16[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C17__9S19861C16[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
static  VTT_ENTRY vtt_S19861C16[] = {
  {&(_ZTV9S19861C16[5]),  5,8},
  {&(_tg__ZTV9S19861C17__9S19861C16[4]),  4,7},
  {&(_tg__ZTV9S19861C17__9S19861C16[4]),  4,7},
  {&(_ZTV9S19861C16[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
Class_Descriptor cd_S19861C16 = {  "S19861C16", // class name
  bases_S19861C16, 3,
  &(vtc_S19861C16[0]), // expected_vtbl_contents
  &(vtt_S19861C16[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S19861C16),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19861C16),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C15  : S9624C48 , virtual S20948C7_nt , S19861C13 , S19861C16 {
  int s19861c15f0;
  virtual  ~S19861C15(); // _ZN9S19861C15D2Ev
  S19861C15(); // tgen
};
//SIG(-1 S19861C15) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


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

static void Test_S19861C15()
{
  extern Class_Descriptor cd_S19861C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S19861C15, buf);
    S19861C15 *dp, &lv = *(dp=new (buf) S19861C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19861C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C15)");
    /*is_ambiguous_... S19861C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S19861C15");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S19861C15");
    /*is_ambiguous_... S19861C15::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*), 0, "S19861C15");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*), ABISELECT(8,4), "S19861C15");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*), ABISELECT(8,4), "S19861C15");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*), ABISELECT(64,36), "S19861C15");
    check_base_class_offset(lv, (S19861C16*), ABISELECT(8,4), "S19861C15");
    check_field_offset(lv, s19861c15f0, ABISELECT(24,16), "S19861C15.s19861c15f0");
    test_class_info(&lv, &cd_S19861C15);
    dp->~S19861C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C15(Test_S19861C15, "S19861C15", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN9S19861C15C1Ev();
extern void _ZN9S19861C15D2Ev();
Name_Map name_map_S19861C15[] = {
  NSPAIR(_ZN9S19861C15C1Ev),
  NSPAIR(_ZN9S19861C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
static Base_Class bases_S19861C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19861C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C13,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19861C17,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S19861C16,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI9S19861C15[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C15D1Ev();
extern void _ZN9S19861C15D0Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn32_N9S19861C15D1Ev,_ZThn20_N9S19861C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev)();
extern void ABISELECT(_ZThn32_N9S19861C15D0Ev,_ZThn20_N9S19861C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19861C15[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev),
};
extern VTBL_ENTRY _ZTV9S19861C15[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C15[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C16__9S19861C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
static  VTT_ENTRY vtt_S19861C15[] = {
  {&(_ZTV9S19861C15[5]),  5,21},
  {&(_tg__ZTV9S19861C16__9S19861C15[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C16__9S19861C15[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C16__9S19861C15[4]),  4,7},
  {&(_tg__ZTV9S19861C16__9S19861C15[5]),  5,8},
  {&(_ZTV9S19861C15[19]),  19,21},
  {&(_ZTV9S19861C15[13]),  13,21},
  {&(_ZTV9S19861C15[13]),  13,21},
};
extern VTBL_ENTRY _ZTI9S19861C15[];
extern  VTBL_ENTRY _ZTV9S19861C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C15[];
static VTBL_ENTRY alt_thunk_names60[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19861C15D0Ev,_ZThn20_N9S19861C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19861C15D1Ev,_ZThn20_N9S19861C15D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C15 = {  "S19861C15", // class name
  bases_S19861C15, 7,
  &(vtc_S19861C15[0]), // expected_vtbl_contents
  &(vtt_S19861C15[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI9S19861C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19861C15),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C15),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names60,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C12  : virtual S19861C13 , S19861C14 , virtual S19861C15 , S20948C8 {
  int s19861c12f0;
  virtual  ~S19861C12(); // _ZN9S19861C12D2Ev
  S19861C12(); // tgen
};
//SIG(-1 S19861C12) C1{ VBC2{ v1} BC3{ BC4{ BC5{ m} VBC6{ vd m FD} vd} BC7{ m Fc[7]} BC2 VBC5} VBC8{ BC5 VBC6 BC2 BC9{ BC10{ VBC2 vd} VBC5 vd FC7} vd Fi} BC7 vd Fi}


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

static void Test_S19861C12()
{
  extern Class_Descriptor cd_S19861C12;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,18)];
    init_test(&cd_S19861C12, buf);
    S19861C12 *dp, &lv = *(dp=new (buf) S19861C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S19861C12)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C12)");
    /*is_ambiguous_... S19861C12::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*), ABISELECT(96,52), "S19861C12");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(96,52), "S19861C12");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*), 0, "S19861C12");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*), ABISELECT(48,28), "S19861C12");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C15*), ABISELECT(48,28), "S19861C12");
    check_base_class_offset(lv, (S19861C5*)(S19861C14*), 0, "S19861C12");
    check_base_class_offset(lv, (S20948C8*)(S19861C14*), ABISELECT(8,4), "S19861C12");
    check_base_class_offset(lv, (S19861C13*)(S19861C14*), ABISELECT(16,12), "S19861C12");
    /*is_ambiguous_... S19861C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*), ABISELECT(80,44), "S19861C12");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C15*), ABISELECT(80,44), "S19861C12");
    check_base_class_offset(lv, (S19861C14*), 0, "S19861C12");
    /*is_ambiguous_... S19861C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C15*), ABISELECT(88,48), "S19861C12");
    /*is_ambiguous_... S19861C15::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C15*), ABISELECT(88,48), "S19861C12");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(96,52), "S19861C12");
    check_base_class_offset(lv, (S19861C16*)(S19861C15*), ABISELECT(96,52), "S19861C12");
    check_base_class_offset(lv, (S19861C15*), ABISELECT(88,48), "S19861C12");
    /*is_ambiguous_... S19861C12::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(24,16), "S19861C12");
    check_field_offset(lv, s19861c12f0, ABISELECT(32,24), "S19861C12.s19861c12f0");
    test_class_info(&lv, &cd_S19861C12);
    dp->~S19861C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C12(Test_S19861C12, "S19861C12", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN9S19861C12C1Ev();
extern void _ZN9S19861C12D2Ev();
Name_Map name_map_S19861C12[] = {
  NSPAIR(_ZN9S19861C12C1Ev),
  NSPAIR(_ZN9S19861C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C15;
extern VTBL_ENTRY _ZTI9S19861C15[];
extern  VTBL_ENTRY _ZTV9S19861C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C15[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S19861C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C13,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    11, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19861C5,    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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C13,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19861C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19861C13,    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
    3, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(96,52), //bcp->offset
    26, //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
    5, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19861C15,    ABISELECT(88,48), //bcp->offset
    16, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19861C12[];
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn48_N9S19861C12D1Ev,_ZThn28_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn48_N9S19861C12D0Ev,_ZThn28_N9S19861C12D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn88_N9S19861C12D1Ev,_ZThn48_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn88_N9S19861C12D0Ev,_ZThn48_N9S19861C12D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY vtc_S19861C12[] = {
  ABISELECT(88,48),
  ABISELECT(96,52),
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
  ABISELECT(-88,-48),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern VTBL_ENTRY _ZTV9S19861C12[];
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C14__9S19861C12[] = {
  ABISELECT(80,44),
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C14__9S19861C12[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn48_N8S19861C5D1Ev,_ZThn28_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn48_N8S19861C5D0Ev,_ZThn28_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C14__9S19861C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn48_N9S19861C14D1Ev,_ZThn28_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn48_N9S19861C14D0Ev,_ZThn28_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C14__9S19861C12[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C15D1Ev();
extern void _ZN9S19861C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C12[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C12[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C15__9S19861C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C15__9S19861C12[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C15__9S19861C12[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev),
};
static  VTT_ENTRY vtt_S19861C12[] = {
  {&(_ZTV9S19861C12[6]),  6,34},
  {&(_tg__ZTV9S19861C14__9S19861C12[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C14__9S19861C12[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C14__9S19861C12[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C14__9S19861C12[3]),  3,5},
  {&(_ZTV9S19861C12[31]),  31,34},
  {&(_ZTV9S19861C12[14]),  14,34},
  {&(_ZTV9S19861C12[23]),  23,34},
  {&(_ZTV9S19861C12[31]),  31,34},
  {&(_tg__ZTV9S19861C15__9S19861C12[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C12[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__9S19861C12[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__9S19861C12[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C12[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C15__9S19861C12[3]),  3,5},
  {&(_tg__ZTV9S19861C16__9S19861C15__9S19861C12[5]),  5,8},
  {&(_tg__ZTV9S19861C16__9S19861C15__9S19861C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
static VTBL_ENTRY alt_thunk_names61[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19861C14D0Ev,_ZThn28_N9S19861C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19861C14D1Ev,_ZThn28_N9S19861C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19861C5D0Ev,_ZThn28_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19861C5D1Ev,_ZThn28_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19861C12D0Ev,_ZThn48_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N9S19861C12D1Ev,_ZThn48_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19861C12D0Ev,_ZThn28_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N9S19861C12D1Ev,_ZThn28_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C12 = {  "S19861C12", // class name
  bases_S19861C12, 14,
  &(vtc_S19861C12[0]), // expected_vtbl_contents
  &(vtt_S19861C12[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI9S19861C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19861C12),34, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C12),17, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names61,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C19  : S19861C13 , virtual S9624C39 {
  int s19861c19f0:23;
  virtual  ~S19861C19(); // _ZN9S19861C19D2Ev
  S19861C19(); // tgen
};
//SIG(-1 S19861C19) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S19861C19()
{
  extern Class_Descriptor cd_S19861C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19861C19, buf);
    S19861C19 *dp, &lv = *(dp=new (buf) S19861C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19861C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19861C19)");
    check_base_class_offset(lv, (S19861C13*), 0, "S19861C19");
    check_base_class_offset(lv, (S9624C39*), 0, "S19861C19");
    set_bf_and_test(lv, s19861c19f0, ABISELECT(8,4), 0, 23, 1, "S19861C19");
    set_bf_and_test(lv, s19861c19f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S19861C19");
    test_class_info(&lv, &cd_S19861C19);
    dp->~S19861C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C19(Test_S19861C19, "S19861C19", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19861C19C1Ev();
extern void _ZN9S19861C19D2Ev();
Name_Map name_map_S19861C19[] = {
  NSPAIR(_ZN9S19861C19C1Ev),
  NSPAIR(_ZN9S19861C19D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S19861C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19861C19[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C19D1Ev();
extern void _ZN9S19861C19D0Ev();
static  VTBL_ENTRY vtc_S19861C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C19[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D0Ev,
};
extern VTBL_ENTRY _ZTV9S19861C19[];
static  VTT_ENTRY vtt_S19861C19[] = {
  {&(_ZTV9S19861C19[3]),  3,6},
};
extern VTBL_ENTRY _ZTI9S19861C19[];
extern  VTBL_ENTRY _ZTV9S19861C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C19[];
Class_Descriptor cd_S19861C19 = {  "S19861C19", // class name
  bases_S19861C19, 2,
  &(vtc_S19861C19[0]), // expected_vtbl_contents
  &(vtt_S19861C19[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19861C19),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV9S19861C19),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C19),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  S19861C21  : S9624C48 , S19861C10 , virtual S19861C5 , virtual S19861C13 {
  void *s19861c21f0;
  ~S19861C21(); // tgen
  S19861C21(); // tgen
};
//SIG(-1 S19861C21) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S19861C21()
{
  extern Class_Descriptor cd_S19861C21;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S19861C21, buf);
    S19861C21 *dp, &lv = *(dp=new (buf) S19861C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S19861C21)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C21)");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S19861C21");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*), ABISELECT(9,5), "S19861C21");
    check_base_class_offset(lv, (S19861C10*), ABISELECT(9,5), "S19861C21");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*), 0, "S19861C21");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(32,12), "S19861C21");
    check_base_class_offset(lv, (S19861C5*), 0, "S19861C21");
    check_base_class_offset(lv, (S19861C13*), ABISELECT(64,28), "S19861C21");
    check_field_offset(lv, s19861c21f0, ABISELECT(16,8), "S19861C21.s19861c21f0");
    test_class_info(&lv, &cd_S19861C21);
    dp->~S19861C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C21(Test_S19861C21, "S19861C21", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN9S19861C21C1Ev();
extern void _ZN9S19861C21D1Ev();
Name_Map name_map_S19861C21[] = {
  NSPAIR(_ZN9S19861C21C1Ev),
  NSPAIR(_ZN9S19861C21D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
static Base_Class bases_S19861C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S19861C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19861C13,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19861C21[];
extern void _ZN9S19861C21D1Ev();
extern void _ZN9S19861C21D0Ev();
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn32_N9S19861C21D1Ev,_ZThn12_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn32_N9S19861C21D0Ev,_ZThn12_N9S19861C21D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY vtc_S19861C21[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C21D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern VTBL_ENTRY _ZTV9S19861C21[];
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C21[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn32_N8S19861C5D1Ev,_ZThn12_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn32_N8S19861C5D0Ev,_ZThn12_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__9S19861C21[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
static  VTT_ENTRY vtt_S19861C21[] = {
  {&(_ZTV9S19861C21[6]),  6,17},
  {&(_ZTV9S19861C21[6]),  6,17},
  {&(_ZTV9S19861C21[11]),  11,17},
  {&(_ZTV9S19861C21[16]),  16,17},
  {&(_tg__ZTV8S19861C5__9S19861C21[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__9S19861C21[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
static VTBL_ENTRY alt_thunk_names62[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19861C5D0Ev,_ZThn12_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19861C5D1Ev,_ZThn12_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19861C21D0Ev,_ZThn12_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S19861C21D1Ev,_ZThn12_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C21 = {  "S19861C21", // class name
  bases_S19861C21, 7,
  &(vtc_S19861C21[0]), // expected_vtbl_contents
  &(vtt_S19861C21[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI9S19861C21),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19861C21),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C21),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names62,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C20  : S19861C21 , S19861C10 , S20948C7_nt , S19861C16 {
  ~S19861C20(); // tgen
  S19861C20(); // tgen
};
//SIG(-1 S19861C20) C1{ BC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} BC4 BC7 BC9{ BC10{ VBC8 vd} VBC3 vd FC11{ m Fc[7]}}}


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

static void Test_S19861C20()
{
  extern Class_Descriptor cd_S19861C20;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S19861C20, buf);
    S19861C20 *dp, &lv = *(dp=new (buf) S19861C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S19861C20)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C20)");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*), ABISELECT(8,4), "S19861C20");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*), ABISELECT(9,5), "S19861C20");
    check_base_class_offset(lv, (S19861C10*)(S19861C21*), ABISELECT(9,5), "S19861C20");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*), 0, "S19861C20");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(80,44), "S19861C20");
    check_base_class_offset(lv, (S19861C5*)(S19861C21*), 0, "S19861C20");
    check_base_class_offset(lv, (S19861C13*)(S19861C21*), ABISELECT(64,32), "S19861C20");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*), ABISELECT(64,32), "S19861C20");
    check_base_class_offset(lv, (S19861C21*), 0, "S19861C20");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*), ABISELECT(24,12), "S19861C20");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*), ABISELECT(24,12), "S19861C20");
    /*is_ambiguous_... S19861C20::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,16), "S19861C20");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*), ABISELECT(64,32), "S19861C20");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*), ABISELECT(112,60), "S19861C20");
    check_base_class_offset(lv, (S19861C16*), ABISELECT(64,32), "S19861C20");
    test_class_info(&lv, &cd_S19861C20);
    dp->~S19861C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C20(Test_S19861C20, "S19861C20", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN9S19861C20C1Ev();
extern void _ZN9S19861C20D1Ev();
Name_Map name_map_S19861C20[] = {
  NSPAIR(_ZN9S19861C20C1Ev),
  NSPAIR(_ZN9S19861C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
static Base_Class bases_S19861C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19861C5,    0, //bcp->offset
    -1, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19861C13,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S19861C21,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19861C10,    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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C17,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S19861C16,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19861C20[];
extern void _ZN9S19861C20D1Ev();
extern void _ZN9S19861C20D0Ev();
extern void ABISELECT(_ZThn32_N9S19861C20D1Ev,_ZThn16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn32_N9S19861C20D0Ev,_ZThn16_N9S19861C20D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C20D1Ev,_ZThn44_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn80_N9S19861C20D0Ev,_ZThn44_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19861C20[] = {
  ABISELECT(112,60),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C20D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19861C20D1Ev,_ZThn16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N9S19861C20D0Ev,_ZThn16_N9S19861C20D0Ev),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern VTBL_ENTRY _ZTV9S19861C20[];
extern void _ZN9S19861C21D1Ev();
extern void _ZN9S19861C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C21__9S19861C20[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C21D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C21D1Ev,_ZThn44_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn80_N9S19861C21D0Ev,_ZThn44_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C21__9S19861C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C21__9S19861C20[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C20[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C16__9S19861C20[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C20[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C5D1Ev,_ZThn44_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C5D0Ev,_ZThn44_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__9S19861C20[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
static  VTT_ENTRY vtt_S19861C20[] = {
  {&(_ZTV9S19861C20[7]),  7,26},
  {&(_tg__ZTV9S19861C21__9S19861C20[6]),  6,8},
  {&(_tg__ZTV9S19861C21__9S19861C20[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C21__9S19861C20[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C21__9S19861C20[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C20[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C16__9S19861C20[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C16__9S19861C20[4]),  4,7},
  {&(_tg__ZTV9S19861C16__9S19861C20[5]),  5,8},
  {&(_ZTV9S19861C20[7]),  7,26},
  {&(_ZTV9S19861C20[24]),  24,26},
  {&(_ZTV9S19861C20[18]),  18,26},
  {&(_ZTV9S19861C20[18]),  18,26},
  {&(_tg__ZTV8S19861C5__9S19861C20[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__9S19861C20[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
static VTBL_ENTRY alt_thunk_names63[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C5D0Ev,_ZThn44_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C5D1Ev,_ZThn44_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19861C21D0Ev,_ZThn44_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19861C21D1Ev,_ZThn44_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19861C20D0Ev,_ZThn44_N9S19861C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N9S19861C20D1Ev,_ZThn44_N9S19861C20D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C20 = {  "S19861C20", // class name
  bases_S19861C20, 14,
  &(vtc_S19861C20[0]), // expected_vtbl_contents
  &(vtt_S19861C20[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI9S19861C20),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19861C20),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C20),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names63,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C18  : virtual S19861C19 , S19861C16 , S19861C20 , S19861C17 {
  virtual  ~S19861C18(); // _ZN9S19861C18D2Ev
  virtual void  v2(); // _ZN9S19861C182v2Ev
  S19861C18(); // tgen
};
//SIG(-1 S19861C18) C1{ VBC2{ BC3{ v2} VBC4{ m} vd Fi:23} BC5{ BC6{ VBC3 vd} VBC7{ m} vd FC8{ m Fc[7]}} BC9{ BC10{ BC7 BC11{ BC4 FC7 FC4} VBC12{ BC7 VBC13{ vd m FD} vd} VBC3 Fp} BC11 BC13 BC5} BC6 vd v1}


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

static void Test_S19861C18()
{
  extern Class_Descriptor cd_S19861C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,22)];
    init_test(&cd_S19861C18, buf);
    S19861C18 *dp, &lv = *(dp=new (buf) S19861C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,84), "sizeof(S19861C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C18)");
    check_base_class_offset(lv, (S19861C13*)(S19861C19*), ABISELECT(104,60), "S19861C18");
    check_base_class_offset(lv, (S9624C39*)(S19861C19*), 0, "S19861C18");
    check_base_class_offset(lv, (S19861C19*), ABISELECT(104,60), "S19861C18");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*), 0, "S19861C18");
    check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*), 0, "S19861C18");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*), 0, "S19861C18");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*), 0, "S19861C18");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*), 0, "S19861C18");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*), 0, "S19861C18");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*), 0, "S19861C18");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*), 0, "S19861C18");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*), ABISELECT(24,16), "S19861C18");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(25,17), "S19861C18");
    check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(25,17), "S19861C18");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*), ABISELECT(16,12), "S19861C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(128,68), "S19861C18");
    check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*), ABISELECT(16,12), "S19861C18");
    check_base_class_offset(lv, (S19861C21*)(S19861C20*), ABISELECT(16,12), "S19861C18");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*), ABISELECT(40,24), "S19861C18");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*), ABISELECT(40,24), "S19861C18");
    /*is_ambiguous_... S19861C20::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*), ABISELECT(48,28), "S19861C18");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(80,44), "S19861C18");
    check_base_class_offset(lv, (S19861C16*)(S19861C20*), ABISELECT(80,44), "S19861C18");
    check_base_class_offset(lv, (S19861C20*), ABISELECT(16,12), "S19861C18");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C17*), ABISELECT(96,56), "S19861C18");
    test_class_info(&lv, &cd_S19861C18);
    dp->~S19861C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C18(Test_S19861C18, "S19861C18", ABISELECT(160,84));

#else // __cplusplus

extern void _ZN9S19861C18C1Ev();
extern void _ZN9S19861C18D2Ev();
Name_Map name_map_S19861C18[] = {
  NSPAIR(_ZN9S19861C18C1Ev),
  NSPAIR(_ZN9S19861C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C19;
extern VTBL_ENTRY _ZTI9S19861C19[];
extern  VTBL_ENTRY _ZTV9S19861C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C19[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
static Base_Class bases_S19861C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C13,    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
    2, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19861C19,    ABISELECT(104,60), //bcp->offset
    41, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19861C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19861C17,    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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19861C16,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(128,68), //bcp->offset
    49, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19861C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19861C21,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    22, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(80,44), //bcp->offset
    26, //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
    11, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C17,    ABISELECT(96,56), //bcp->offset
    34, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19861C18[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N9S19861C18D1Ev,_ZThn28_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn48_N9S19861C18D0Ev,_ZThn28_N9S19861C18D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn104_N9S19861C18D1Ev,_ZThn60_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn104_N9S19861C18D0Ev,_ZThn60_N9S19861C18D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn128_N9S19861C18D1Ev,_ZThn68_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn128_N9S19861C18D0Ev,_ZThn68_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19861C18[] = {
  ABISELECT(128,68),
  ABISELECT(16,12),
  0,
  ABISELECT(104,60),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  ABISELECT(-16,-12),
  ABISELECT(112,56),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19861C18D1Ev,_ZThn28_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N9S19861C18D0Ev,_ZThn28_N9S19861C18D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
  ABISELECT(-104,-60),
  0,
  ABISELECT(-104,-60),
  ABISELECT(-104,-60),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern VTBL_ENTRY _ZTV9S19861C18[];
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C18[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C16__9S19861C18[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C20__9S19861C18[] = {
  ABISELECT(-16,-12),
  0,
  0,
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn112_N9S19861C21D1Ev,_ZThn56_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn112_N9S19861C21D0Ev,_ZThn56_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C20__9S19861C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C20__9S19861C18[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C18[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C20__A1__9S19861C18[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A1__9S19861C18[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C20__A1__9S19861C18[] = {
  0,
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S19861C20D1Ev,_ZThn56_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S19861C20D0Ev,_ZThn56_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C20__9S19861C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C20__9S19861C18[] = {
  0,
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C20__9S19861C18[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C18[] = {
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C17__A2__9S19861C18[] = {
  0,
  ABISELECT(96,56),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C19D1Ev();
extern void _ZN9S19861C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C18[] = {
  ABISELECT(-104,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C19[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C18[] = {
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn112_N8S19861C5D1Ev,_ZThn56_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn112_N8S19861C5D0Ev,_ZThn56_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__9S19861C18[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
static  VTT_ENTRY vtt_S19861C18[] = {
  {&(_ZTV9S19861C18[9]),  9,54},
  {&(_tg__ZTV9S19861C16__9S19861C18[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C16__9S19861C18[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C16__9S19861C18[4]),  4,7},
  {&(_tg__ZTV9S19861C16__9S19861C18[5]),  5,8},
  {&(_tg__ZTV9S19861C20__9S19861C18[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C20__9S19861C18[6]),  6,8},
  {&(_tg__ZTV9S19861C219S19861C20__9S19861C18[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C20__9S19861C18[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C20__9S19861C18[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C18[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C20__A1__9S19861C18[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A1__9S19861C18[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C20__A1__9S19861C18[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C18[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C20__9S19861C18[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C20__9S19861C18[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C20__9S19861C18[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C18[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C17__A2__9S19861C18[3]),  3,4},
  {&(_ZTV9S19861C18[46]),  46,54},
  {&(_ZTV9S19861C18[9]),  9,54},
  {&(_ZTV9S19861C18[20]),  20,54},
  {&(_ZTV9S19861C18[20]),  20,54},
  {&(_ZTV9S19861C18[52]),  52,54},
  {&(_ZTV9S19861C18[31]),  31,54},
  {&(_ZTV9S19861C18[38]),  38,54},
  {&(_tg__ZTV9S19861C19__9S19861C18[3]),  3,6},
  {&(_tg__ZTV8S19861C5__9S19861C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__9S19861C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
static VTBL_ENTRY alt_thunk_names64[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19861C5D0Ev,_ZThn56_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N8S19861C5D1Ev,_ZThn56_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C20D0Ev,_ZThn56_N9S19861C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C20D1Ev,_ZThn56_N9S19861C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C21D0Ev,_ZThn56_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C21D1Ev,_ZThn56_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19861C18D0Ev,_ZThn68_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19861C18D1Ev,_ZThn68_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19861C18D0Ev,_ZThn60_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N9S19861C18D1Ev,_ZThn60_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C18 = {  "S19861C18", // class name
  bases_S19861C18, 21,
  &(vtc_S19861C18[0]), // expected_vtbl_contents
  &(vtt_S19861C18[0]), // expected_vtt_contents
  ABISELECT(160,84), // object size
  NSPAIRA(_ZTI9S19861C18),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19861C18),54, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19861C18),30, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names64,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C9  : virtual S19861C10 , S19861C12 , S19861C16 , S19861C18 , virtual S19861C20 {
  virtual  ~S19861C9(); // _ZN8S19861C9D2Ev
  virtual void  v3(); // _ZN8S19861C92v3Ev
  S19861C9(); // tgen
};
//SIG(-1 S19861C9) C1{ VBC2{ BC3{ m} FC4{ m} FC3} BC5{ VBC6{ v2} BC7{ BC8{ BC4 VBC9{ vd m FD} vd} BC10{ m Fc[7]} BC6 VBC4} VBC11{ BC4 VBC9 BC6 BC12{ BC13{ VBC6 vd} VBC4 vd FC10} vd Fi} BC10 vd Fi} BC12 BC14{ VBC15{ BC6 VBC3 vd Fi:23} BC12 BC16{ BC17{ BC4 BC2 VBC8 VBC6 Fp} BC2 BC9 BC12} BC13 vd v3} VBC16 vd v1}


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

static void Test_S19861C9()
{
  extern Class_Descriptor cd_S19861C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,50)];
    init_test(&cd_S19861C9, buf);
    S19861C9 *dp, &lv = *(dp=new (buf) S19861C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,196), "sizeof(S19861C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C9)");
    /*is_ambiguous_... S19861C9::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*), ABISELECT(168,100), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*), ABISELECT(168,100), "S19861C9");
    /*is_ambiguous_... S19861C12::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C12*), ABISELECT(224,128), "S19861C9");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(224,128), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*), ABISELECT(224,128), "S19861C9");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C18*), ABISELECT(224,128), "S19861C9");
    check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*)(S19861C18*), ABISELECT(224,128), "S19861C9");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*), ABISELECT(224,128), "S19861C9");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C18*), ABISELECT(224,128), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*), ABISELECT(224,128), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(224,128), "S19861C9");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*)(S19861C12*), 0, "S19861C9");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*)(S19861C12*), ABISELECT(176,104), "S19861C9");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C15*), ABISELECT(176,104), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(176,104), "S19861C9");
    check_base_class_offset(lv, (S19861C5*)(S19861C14*)(S19861C12*), 0, "S19861C9");
    check_base_class_offset(lv, (S20948C8*)(S19861C14*)(S19861C12*), ABISELECT(8,4), "S19861C9");
    check_base_class_offset(lv, (S19861C13*)(S19861C14*)(S19861C12*), ABISELECT(16,12), "S19861C9");
    /*is_ambiguous_... S19861C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*)(S19861C12*), ABISELECT(208,120), "S19861C9");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C15*), ABISELECT(208,120), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*), ABISELECT(208,120), "S19861C9");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C18*), ABISELECT(208,120), "S19861C9");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*)(S19861C18*), ABISELECT(208,120), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*), ABISELECT(208,120), "S19861C9");
    check_base_class_offset(lv, (S19861C14*)(S19861C12*), 0, "S19861C9");
    /*is_ambiguous_... S19861C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C15*), ABISELECT(216,124), "S19861C9");
    /*is_ambiguous_... S19861C15::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C15*), ABISELECT(216,124), "S19861C9");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(224,128), "S19861C9");
    check_base_class_offset(lv, (S19861C16*)(S19861C15*), ABISELECT(224,128), "S19861C9");
    check_base_class_offset(lv, (S19861C15*)(S19861C12*), ABISELECT(216,124), "S19861C9");
    /*is_ambiguous_... S19861C12::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C12*), ABISELECT(24,16), "S19861C9");
    check_base_class_offset(lv, (S19861C12*), 0, "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*), ABISELECT(40,28), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*), ABISELECT(40,28), "S19861C9");
    check_base_class_offset(lv, (S19861C13*)(S19861C19*), ABISELECT(248,144), "S19861C9");
    check_base_class_offset(lv, (S9624C39*)(S19861C19*), 0, "S19861C9");
    check_base_class_offset(lv, (S19861C19*)(S19861C18*), ABISELECT(248,144), "S19861C9");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C18*), ABISELECT(64,40), "S19861C9");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C18*), ABISELECT(64,40), "S19861C9");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*)(S19861C18*), ABISELECT(88,56), "S19861C9");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*), ABISELECT(89,57), "S19861C9");
    check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*), ABISELECT(89,57), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C5*), ABISELECT(80,52), "S19861C9");
    check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*)(S19861C18*), ABISELECT(80,52), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*), ABISELECT(80,52), "S19861C9");
    check_base_class_offset(lv, (S19861C21*)(S19861C20*)(S19861C18*), ABISELECT(80,52), "S19861C9");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*)(S19861C18*), ABISELECT(104,64), "S19861C9");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*)(S19861C18*), ABISELECT(104,64), "S19861C9");
    /*is_ambiguous_... S19861C20::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*)(S19861C18*), ABISELECT(112,68), "S19861C9");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*), ABISELECT(144,84), "S19861C9");
    check_base_class_offset(lv, (S19861C16*)(S19861C20*)(S19861C18*), ABISELECT(144,84), "S19861C9");
    check_base_class_offset(lv, (S19861C20*)(S19861C18*), ABISELECT(80,52), "S19861C9");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C18*), ABISELECT(160,96), "S19861C9");
    check_base_class_offset(lv, (S19861C18*), ABISELECT(64,40), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*), ABISELECT(280,156), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(281,157), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(281,157), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C21*)(S19861C20*), ABISELECT(272,152), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*), ABISELECT(296,164), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*), ABISELECT(296,164), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*), ABISELECT(304,168), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(336,184), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C20*), ABISELECT(336,184), "S19861C9");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C20*), ABISELECT(272,152), "S19861C9");
    test_class_info(&lv, &cd_S19861C9);
    dp->~S19861C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C9(Test_S19861C9, "S19861C9", ABISELECT(352,196));

#else // __cplusplus

extern void _ZN8S19861C9C1Ev();
extern void _ZN8S19861C9D2Ev();
Name_Map name_map_S19861C9[] = {
  NSPAIR(_ZN8S19861C9C1Ev),
  NSPAIR(_ZN8S19861C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C15;
extern VTBL_ENTRY _ZTI9S19861C15[];
extern  VTBL_ENTRY _ZTV9S19861C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C15[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C12;
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C19;
extern VTBL_ENTRY _ZTI9S19861C19[];
extern  VTBL_ENTRY _ZTV9S19861C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C19[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C18;
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
static Base_Class bases_S19861C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(168,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
  0, 0},
  {&cd_S19861C10,    ABISELECT(168,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_S19861C13,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(176,104), //bcp->offset
    66, //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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19861C5,    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
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C13,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(208,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
    9, //immediately_derived
  0, 1},
  {&cd_S19861C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    58, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(224,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    45, //bcp->index_in_construction_vtbl_array
    57, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19861C15,    ABISELECT(216,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    56, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19861C12,    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
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    46, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C13,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19861C19,    ABISELECT(248,144), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19861C17,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19861C16,    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
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S19861C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    50, //bcp->index_in_construction_vtbl_array
    65, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19861C21,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C18,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19861C21,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(296,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(304,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(336,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(272,152), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    67, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19861C9[];
extern void _ZN8S19861C9D1Ev();
extern void _ZN8S19861C9D0Ev();
extern void _ZN8S19861C92v3Ev();
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev)();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N8S19861C9D1Ev,_ZThn68_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn112_N8S19861C9D0Ev,_ZThn68_N8S19861C9D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C9D1Ev,_ZThn104_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C9D0Ev,_ZThn104_N8S19861C9D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn216_N8S19861C9D1Ev,_ZThn124_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn216_N8S19861C9D0Ev,_ZThn124_N8S19861C9D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn248_N8S19861C9D1Ev,_ZThn144_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn248_N8S19861C9D0Ev,_ZThn144_N8S19861C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn272_N8S19861C9D1Ev,_ZThn152_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn272_N8S19861C9D0Ev,_ZThn152_N8S19861C9D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY vtc_S19861C9[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN8S19861C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C9D1Ev,_ZThn68_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C9D0Ev,_ZThn68_N8S19861C9D0Ev),
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev),
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19861C9[];
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C12__8S19861C9[] = {
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
};
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C149S19861C12__8S19861C9[] = {
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C149S19861C12__8S19861C9[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C5D1Ev,_ZThn104_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C5D0Ev,_ZThn104_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C12__8S19861C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn176_N9S19861C14D1Ev,_ZThn104_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn176_N9S19861C14D0Ev,_ZThn104_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C149S19861C12__8S19861C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C12__8S19861C9[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn176_N9S19861C12D1Ev,_ZThn104_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn176_N9S19861C12D0Ev,_ZThn104_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C12__8S19861C9[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn216_N9S19861C12D1Ev,_ZThn124_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn216_N9S19861C12D0Ev,_ZThn124_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C12__8S19861C9[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C16__A1__8S19861C9[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C16__A1__8S19861C9[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C16__A1__8S19861C9[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C16__A1__8S19861C9[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C18__8S19861C9[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C18__A2__8S19861C9[] = {
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C18__A2__8S19861C9[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C18__A2__8S19861C9[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C18__A2__8S19861C9[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C18__8S19861C9[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C209S19861C18__8S19861C9[] = {
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C21D1Ev,_ZThn52_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S19861C21D0Ev,_ZThn52_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C18__8S19861C9[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C209S19861C18__8S19861C9[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C9[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C209S19861C18__A3__8S19861C9[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C18__A3__8S19861C9[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C209S19861C18__A3__8S19861C9[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C20D1Ev,_ZThn52_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn96_N9S19861C20D0Ev,_ZThn52_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C209S19861C18__8S19861C9[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C209S19861C18__8S19861C9[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C209S19861C18__8S19861C9[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C18__A4__8S19861C9[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C18__A4__8S19861C9[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn184_N9S19861C18D1Ev,_ZThn104_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn184_N9S19861C18D0Ev,_ZThn104_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C18__8S19861C9[] = {
  ABISELECT(-184,-104),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__A1__9S19861C18__8S19861C9[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C18__8S19861C9[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn112_N9S19861C18D1Ev,_ZThn64_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn112_N9S19861C18D0Ev,_ZThn64_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C18__8S19861C9[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C18__8S19861C9[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C18__8S19861C9[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C15D1Ev();
extern void _ZN9S19861C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C9[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C9[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C15__8S19861C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C15__8S19861C9[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C15__8S19861C9[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C19D1Ev();
extern void _ZN9S19861C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C9[] = {
  ABISELECT(-248,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C19[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C9[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S19861C5D1Ev,_ZThn52_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S19861C5D0Ev,_ZThn52_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__A1__8S19861C9[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C9[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C20__A1__8S19861C9[] = {
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C9[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C9[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C9[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C9[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C9[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C9[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C9[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C20__A1__8S19861C9[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C9[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C20__A1__8S19861C9[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C20__A1__8S19861C9[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
static  VTT_ENTRY vtt_S19861C9[] = {
  {&(_ZTV8S19861C9[11]),  11,118},
  {&(_tg__ZTV9S19861C12__8S19861C9[6]),  6,8},
  {&(_tg__ZTV9S19861C149S19861C12__8S19861C9[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C149S19861C12__8S19861C9[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C12__8S19861C9[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C149S19861C12__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C12__8S19861C9[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C12__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C15__9S19861C12__8S19861C9[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C12__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C16__A1__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C16__A1__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C16__A1__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C16__A1__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C18__8S19861C9[9]),  9,13},
  {&(_tg__ZTV9S19861C169S19861C18__A2__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C18__A2__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C18__A2__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C18__A2__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C9[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C209S19861C18__8S19861C9[6]),  6,8},
  {&(_tg__ZTV9S19861C219S19861C209S19861C18__8S19861C9[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C18__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C209S19861C18__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C209S19861C18__A3__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C18__A3__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C209S19861C18__A3__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C9[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C209S19861C18__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C209S19861C18__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C209S19861C18__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C18__A4__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C18__A4__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C19__9S19861C18__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C13__A1__9S19861C18__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C18__8S19861C9[7]),  7,9},
  {&(_tg__ZTV9S19861C20__9S19861C18__8S19861C9[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C18__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C18__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C18__8S19861C9[4]),  4,7},
  {&(_ZTV8S19861C9[86]),  86,118},
  {&(_ZTV8S19861C9[69]),  69,118},
  {&(_ZTV8S19861C9[78]),  78,118},
  {&(_ZTV8S19861C9[86]),  86,118},
  {&(_ZTV8S19861C9[22]),  22,118},
  {&(_ZTV8S19861C9[34]),  34,118},
  {&(_ZTV8S19861C9[94]),  94,118},
  {&(_ZTV8S19861C9[45]),  45,118},
  {&(_ZTV8S19861C9[45]),  45,118},
  {&(_ZTV8S19861C9[56]),  56,118},
  {&(_ZTV8S19861C9[63]),  63,118},
  {&(_ZTV8S19861C9[104]),  104,118},
  {&(_ZTV8S19861C9[108]),  108,118},
  {&(_ZTV8S19861C9[115]),  115,118},
  {&(_tg__ZTV9S19861C15__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C9[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C15__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C19__8S19861C9[3]),  3,6},
  {&(_tg__ZTV8S19861C5__A1__8S19861C9[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__A1__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C20__A1__8S19861C9[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C20__A1__8S19861C9[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C9[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C9[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C9[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C9[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C20__A1__8S19861C9[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C9[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C20__A1__8S19861C9[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C20__A1__8S19861C9[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19861C9[];
extern  VTBL_ENTRY _ZTV8S19861C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C9[];
static VTBL_ENTRY alt_thunk_names65[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C18D0Ev,_ZThn64_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C18D1Ev,_ZThn64_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19861C18D0Ev,_ZThn104_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19861C18D1Ev,_ZThn104_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C20D0Ev,_ZThn52_N9S19861C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C20D1Ev,_ZThn52_N9S19861C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C21D0Ev,_ZThn52_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C21D1Ev,_ZThn52_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19861C12D0Ev,_ZThn124_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19861C12D1Ev,_ZThn124_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C12D0Ev,_ZThn104_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C12D1Ev,_ZThn104_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C14D0Ev,_ZThn104_N9S19861C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C14D1Ev,_ZThn104_N9S19861C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19861C5D0Ev,_ZThn52_N8S19861C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C5D0Ev,_ZThn104_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19861C5D1Ev,_ZThn52_N8S19861C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C5D1Ev,_ZThn104_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19861C9D0Ev,_ZThn144_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19861C9D1Ev,_ZThn144_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19861C9D0Ev,_ZThn124_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19861C9D1Ev,_ZThn124_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C9D0Ev,_ZThn104_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C9D1Ev,_ZThn104_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C9D0Ev,_ZThn152_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C9D1Ev,_ZThn152_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C9 = {  "S19861C9", // class name
  bases_S19861C9, 48,
  &(vtc_S19861C9[0]), // expected_vtbl_contents
  &(vtt_S19861C9[0]), // expected_vtt_contents
  ABISELECT(352,196), // object size
  NSPAIRA(_ZTI8S19861C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19861C9),118, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19861C9),79, //virtual table table var
  29, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names65,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C8  : S19861C9 {
  ~S19861C8(); // tgen
  S19861C8(); // tgen
};
//SIG(-1 S19861C8) C1{ BC2{ VBC3{ BC4{ m} FC5{ m} FC4} BC6{ VBC7{ v1} BC8{ BC9{ BC5 VBC10{ vd m FD} vd} BC11{ m Fc[7]} BC7 VBC5} VBC12{ BC5 VBC10 BC7 BC13{ BC14{ VBC7 vd} VBC5 vd FC11} vd Fi} BC11 vd Fi} BC13 BC15{ VBC16{ BC7 VBC4 vd Fi:23} BC13 BC17{ BC18{ BC5 BC3 VBC9 VBC7 Fp} BC3 BC10 BC13} BC14 vd v2} VBC17 vd v3}}


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

static void Test_S19861C8()
{
  extern Class_Descriptor cd_S19861C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(23,50)];
    init_test(&cd_S19861C8, buf);
    S19861C8 *dp, &lv = *(dp=new (buf) S19861C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,196), "sizeof(S19861C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C8)");
    /*is_ambiguous_... S19861C8::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*), ABISELECT(168,100), "S19861C8");
    /*is_ambiguous_... S19861C9::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C9*), ABISELECT(168,100), "S19861C8");
    /*is_ambiguous_... S19861C12::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C12*)(S19861C9*), ABISELECT(224,128), "S19861C8");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(224,128), "S19861C8");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C9*), ABISELECT(224,128), "S19861C8");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(224,128), "S19861C8");
    check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(224,128), "S19861C8");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(224,128), "S19861C8");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C18*)(S19861C9*), ABISELECT(224,128), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*), ABISELECT(224,128), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(224,128), "S19861C8");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*), 0, "S19861C8");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(176,104), "S19861C8");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C15*), ABISELECT(176,104), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(176,104), "S19861C8");
    check_base_class_offset(lv, (S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*), 0, "S19861C8");
    check_base_class_offset(lv, (S20948C8*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(8,4), "S19861C8");
    check_base_class_offset(lv, (S19861C13*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(16,12), "S19861C8");
    /*is_ambiguous_... S19861C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(208,120), "S19861C8");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C15*), ABISELECT(208,120), "S19861C8");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C9*), ABISELECT(208,120), "S19861C8");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(208,120), "S19861C8");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(208,120), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*), ABISELECT(208,120), "S19861C8");
    check_base_class_offset(lv, (S19861C14*)(S19861C12*)(S19861C9*), 0, "S19861C8");
    /*is_ambiguous_... S19861C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C15*), ABISELECT(216,124), "S19861C8");
    /*is_ambiguous_... S19861C15::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C15*), ABISELECT(216,124), "S19861C8");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(224,128), "S19861C8");
    check_base_class_offset(lv, (S19861C16*)(S19861C15*), ABISELECT(224,128), "S19861C8");
    check_base_class_offset(lv, (S19861C15*)(S19861C12*)(S19861C9*), ABISELECT(216,124), "S19861C8");
    /*is_ambiguous_... S19861C12::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C12*)(S19861C9*), ABISELECT(24,16), "S19861C8");
    check_base_class_offset(lv, (S19861C12*)(S19861C9*), 0, "S19861C8");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C9*), ABISELECT(40,28), "S19861C8");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C9*), ABISELECT(40,28), "S19861C8");
    check_base_class_offset(lv, (S19861C13*)(S19861C19*), ABISELECT(248,144), "S19861C8");
    check_base_class_offset(lv, (S9624C39*)(S19861C19*), 0, "S19861C8");
    check_base_class_offset(lv, (S19861C19*)(S19861C18*)(S19861C9*), ABISELECT(248,144), "S19861C8");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(64,40), "S19861C8");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(64,40), "S19861C8");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(88,56), "S19861C8");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(89,57), "S19861C8");
    check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(89,57), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C5*), ABISELECT(80,52), "S19861C8");
    check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(80,52), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*), ABISELECT(80,52), "S19861C8");
    check_base_class_offset(lv, (S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(80,52), "S19861C8");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(104,64), "S19861C8");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(104,64), "S19861C8");
    /*is_ambiguous_... S19861C20::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(112,68), "S19861C8");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(144,84), "S19861C8");
    check_base_class_offset(lv, (S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(144,84), "S19861C8");
    check_base_class_offset(lv, (S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(80,52), "S19861C8");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C18*)(S19861C9*), ABISELECT(160,96), "S19861C8");
    check_base_class_offset(lv, (S19861C18*)(S19861C9*), ABISELECT(64,40), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*), ABISELECT(280,156), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(281,157), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(281,157), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C21*)(S19861C20*), ABISELECT(272,152), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*), ABISELECT(296,164), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*), ABISELECT(296,164), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*), ABISELECT(304,168), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(336,184), "S19861C8");
    /*is_ambiguous_... S19861C8::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C20*), ABISELECT(336,184), "S19861C8");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C9*), ABISELECT(272,152), "S19861C8");
    check_base_class_offset(lv, (S19861C9*), 0, "S19861C8");
    test_class_info(&lv, &cd_S19861C8);
    dp->~S19861C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C8(Test_S19861C8, "S19861C8", ABISELECT(352,196));

#else // __cplusplus

extern void _ZN8S19861C8C1Ev();
extern void _ZN8S19861C8D1Ev();
Name_Map name_map_S19861C8[] = {
  NSPAIR(_ZN8S19861C8C1Ev),
  NSPAIR(_ZN8S19861C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C15;
extern VTBL_ENTRY _ZTI9S19861C15[];
extern  VTBL_ENTRY _ZTV9S19861C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C15[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C12;
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C19;
extern VTBL_ENTRY _ZTI9S19861C19[];
extern  VTBL_ENTRY _ZTV9S19861C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C19[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C18;
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C9;
extern VTBL_ENTRY _ZTI8S19861C9[];
extern  VTBL_ENTRY _ZTV8S19861C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C9[];
static Base_Class bases_S19861C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(168,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
  0, 0},
  {&cd_S19861C10,    ABISELECT(168,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
    48, //immediately_derived
  0, 1},
  {&cd_S19861C13,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(176,104), //bcp->offset
    66, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    58, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19861C5,    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
    15, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C13,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(208,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
    9, //immediately_derived
  0, 1},
  {&cd_S19861C14,    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
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(216,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
    14, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(224,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(224,128), //bcp->offset
    81, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    60, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19861C15,    ABISELECT(216,124), //bcp->offset
    71, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    71, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19861C12,    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
    18, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    61, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(248,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19861C19,    ABISELECT(248,144), //bcp->offset
    89, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    63, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19861C17,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19861C16,    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
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S19861C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    65, //bcp->index_in_construction_vtbl_array
    80, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19861C21,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    66, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    64, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    67, //bcp->index_in_construction_vtbl_array
    34, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C18,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    62, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(281,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19861C21,    ABISELECT(272,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(296,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
    43, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(296,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(304,168), //bcp->offset
    106, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    69, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(336,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(336,184), //bcp->offset
    110, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    70, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(272,152), //bcp->offset
    97, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    68, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19861C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19861C8[];
extern void _ZN8S19861C8D1Ev();
extern void _ZN8S19861C8D0Ev();
extern void _ZN8S19861C92v3Ev();
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C8D1Ev,_ZThn28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C8D0Ev,_ZThn28_N8S19861C8D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C8D1Ev,_ZThn40_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C8D0Ev,_ZThn40_N8S19861C8D0Ev)();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C8D1Ev,_ZThn52_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C8D0Ev,_ZThn52_N8S19861C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N8S19861C8D1Ev,_ZThn68_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn112_N8S19861C8D0Ev,_ZThn68_N8S19861C8D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C8D1Ev,_ZThn84_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C8D0Ev,_ZThn84_N8S19861C8D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C8D1Ev,_ZThn96_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C8D0Ev,_ZThn96_N8S19861C8D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C8D1Ev,_ZThn104_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C8D0Ev,_ZThn104_N8S19861C8D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn216_N8S19861C8D1Ev,_ZThn124_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn216_N8S19861C8D0Ev,_ZThn124_N8S19861C8D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C8D1Ev,_ZTvn4_n28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C8D0Ev,_ZTvn4_n28_N8S19861C8D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn248_N8S19861C8D1Ev,_ZThn144_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn248_N8S19861C8D0Ev,_ZThn144_N8S19861C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn272_N8S19861C8D1Ev,_ZThn152_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn272_N8S19861C8D0Ev,_ZThn152_N8S19861C8D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S19861C8D1Ev,_ZTvn16_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C8D0Ev,_ZTvn16_n16_N8S19861C8D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C8D1Ev,_ZTvn32_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C8D0Ev,_ZTvn32_n16_N8S19861C8D0Ev)();
static  VTBL_ENTRY vtc_S19861C8[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN8S19861C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C8D1Ev,_ZThn28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C8D0Ev,_ZThn28_N8S19861C8D0Ev),
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C8D1Ev,_ZThn40_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C8D0Ev,_ZThn40_N8S19861C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C8D1Ev,_ZThn68_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C8D0Ev,_ZThn68_N8S19861C8D0Ev),
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C8D1Ev,_ZThn84_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C8D0Ev,_ZThn84_N8S19861C8D0Ev),
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C8D1Ev,_ZThn96_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C8D0Ev,_ZThn96_N8S19861C8D0Ev),
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev),
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev),
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C8D1Ev,_ZTvn4_n28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C8D0Ev,_ZTvn4_n28_N8S19861C8D0Ev),
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev),
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C8D1Ev,_ZTvn16_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C8D0Ev,_ZTvn16_n16_N8S19861C8D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C8D1Ev,_ZTvn32_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C8D0Ev,_ZTvn32_n16_N8S19861C8D0Ev),
};
extern VTBL_ENTRY _ZTV8S19861C8[];
extern void _ZN8S19861C9D1Ev();
extern void _ZN8S19861C9D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C9__8S19861C8[] = {
  ABISELECT(272,152),
  ABISELECT(80,52),
  0,
  ABISELECT(248,144),
  ABISELECT(168,100),
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN8S19861C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(216,124),
  ABISELECT(224,128),
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
};
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C149S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(208,120),
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C149S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(176,104),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C5D1Ev,_ZThn104_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C5D0Ev,_ZThn104_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn176_N9S19861C14D1Ev,_ZThn104_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn176_N9S19861C14D0Ev,_ZThn104_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn176_N9S19861C12D1Ev,_ZThn104_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn176_N9S19861C12D0Ev,_ZThn104_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn216_N9S19861C12D1Ev,_ZThn124_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn216_N9S19861C12D0Ev,_ZThn124_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C128S19861C9__8S19861C8[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C9__A1__8S19861C8[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C168S19861C9__A1__8S19861C8[] = {
  ABISELECT(184,100),
  ABISELECT(184,100),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C168S19861C9__A1__8S19861C8[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C168S19861C9__A1__8S19861C8[] = {
  0,
  ABISELECT(-184,-100),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C188S19861C9__A2__8S19861C8[] = {
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C188S19861C9__A2__8S19861C8[] = {
  ABISELECT(160,88),
  ABISELECT(160,88),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C9__A2__8S19861C8[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C188S19861C9__A2__8S19861C8[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C209S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(144,76),
  0,
  0,
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C21D1Ev,_ZThn52_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn96_N9S19861C21D0Ev,_ZThn52_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C9__8S19861C8[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[] = {
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C20D1Ev,_ZThn52_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn96_N9S19861C20D0Ev,_ZThn52_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C209S19861C188S19861C9__8S19861C8[] = {
  0,
  ABISELECT(-144,-76),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C209S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C9__A4__8S19861C8[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C188S19861C9__A4__8S19861C8[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn184_N9S19861C18D1Ev,_ZThn104_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn184_N9S19861C18D0Ev,_ZThn104_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(-184,-104),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-184,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__A1__9S19861C188S19861C9__8S19861C8[] = {
  0,
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-16,-12),
  ABISELECT(96,52),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn112_N9S19861C18D1Ev,_ZThn64_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn112_N9S19861C18D0Ev,_ZThn64_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C188S19861C9__8S19861C8[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C9__8S19861C8[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C9D1Ev,_ZThn104_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C9D0Ev,_ZThn104_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C9__8S19861C8[] = {
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn216_N8S19861C9D1Ev,_ZThn124_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn216_N8S19861C9D0Ev,_ZThn124_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C9__8S19861C8[] = {
  ABISELECT(-216,-124),
  0,
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-216,-124),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__A1__8S19861C9__8S19861C8[] = {
  ABISELECT(168,92),
  ABISELECT(184,100),
  ABISELECT(184,100),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C18__8S19861C9__8S19861C8[] = {
  ABISELECT(112,64),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(184,104),
  ABISELECT(144,80),
  ABISELECT(160,88),
  ABISELECT(160,88),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn248_N8S19861C9D1Ev,_ZThn144_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn248_N8S19861C9D0Ev,_ZThn144_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C9__8S19861C8[] = {
  ABISELECT(-248,-144),
  0,
  ABISELECT(-248,-144),
  ABISELECT(-248,-144),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C18__8S19861C9__8S19861C8[] = {
  ABISELECT(128,68),
  ABISELECT(144,76),
  0,
  ABISELECT(-80,-52),
  ABISELECT(96,52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C9__8S19861C8[] = {
  ABISELECT(64,36),
  ABISELECT(80,44),
  ABISELECT(80,44),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C18__A4__8S19861C9__8S19861C8[] = {
  ABISELECT(64,32),
  ABISELECT(64,32),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn272_N8S19861C9D1Ev,_ZThn152_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn272_N8S19861C9D0Ev,_ZThn152_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C9__8S19861C8[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  ABISELECT(-272,-152),
  ABISELECT(-96,-48),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C9__8S19861C8[] = {
  ABISELECT(-304,-168),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C9__8S19861C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-336,-184),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C15D1Ev();
extern void _ZN9S19861C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C8[] = {
  ABISELECT(-8,-4),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C8[] = {
  ABISELECT(-16,-8),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C15__8S19861C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C15__8S19861C8[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C15__8S19861C8[] = {
  ABISELECT(-16,-8),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C19D1Ev();
extern void _ZN9S19861C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C8[] = {
  ABISELECT(-248,-144),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C19[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C8[] = {
  ABISELECT(96,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn96_N8S19861C5D1Ev,_ZThn52_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn96_N8S19861C5D0Ev,_ZThn52_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__A1__8S19861C8[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C8[] = {
  ABISELECT(-64,-32),
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C20__A1__8S19861C8[] = {
  ABISELECT(-48,-24),
  ABISELECT(-192,-100),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C8[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C8[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C8[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C8[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C8[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C8[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C20__A1__8S19861C8[] = {
  ABISELECT(192,100),
  ABISELECT(96,52),
  ABISELECT(192,100),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C8[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C20__A1__8S19861C8[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C20__A1__8S19861C8[] = {
  ABISELECT(-128,-64),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
static  VTT_ENTRY vtt_S19861C8[] = {
  {&(_ZTV8S19861C8[11]),  11,118},
  {&(_tg__ZTV8S19861C9__8S19861C8[11]),  11,14},
  {&(_tg__ZTV9S19861C128S19861C9__8S19861C8[6]),  6,8},
  {&(_tg__ZTV9S19861C149S19861C128S19861C9__8S19861C8[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C149S19861C128S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C128S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C15__9S19861C128S19861C9__8S19861C8[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C9__A1__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C168S19861C9__A1__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C168S19861C9__A1__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C168S19861C9__A1__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C188S19861C9__8S19861C8[9]),  9,13},
  {&(_tg__ZTV9S19861C169S19861C188S19861C9__A2__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C188S19861C9__A2__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C9__A2__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C188S19861C9__A2__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C9__8S19861C8[6]),  6,8},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C9__8S19861C8[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C9__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C209S19861C188S19861C9__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C209S19861C188S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C9__A4__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C188S19861C9__A4__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C19__9S19861C188S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C13__A1__9S19861C188S19861C9__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C188S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C188S19861C9__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C9__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C9__8S19861C8[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C16__A1__8S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C18__8S19861C9__8S19861C8[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C9__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C18__A4__8S19861C9__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C9__8S19861C8[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C9__8S19861C8[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C9__8S19861C8[5]),  5,8},
  {&(_ZTV8S19861C8[86]),  86,118},
  {&(_ZTV8S19861C8[69]),  69,118},
  {&(_ZTV8S19861C8[78]),  78,118},
  {&(_ZTV8S19861C8[86]),  86,118},
  {&(_ZTV8S19861C8[22]),  22,118},
  {&(_ZTV8S19861C8[34]),  34,118},
  {&(_ZTV8S19861C8[94]),  94,118},
  {&(_ZTV8S19861C8[45]),  45,118},
  {&(_ZTV8S19861C8[45]),  45,118},
  {&(_ZTV8S19861C8[56]),  56,118},
  {&(_ZTV8S19861C8[63]),  63,118},
  {&(_ZTV8S19861C8[104]),  104,118},
  {&(_ZTV8S19861C8[108]),  108,118},
  {&(_ZTV8S19861C8[115]),  115,118},
  {&(_tg__ZTV9S19861C15__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C8[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C15__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C19__8S19861C8[3]),  3,6},
  {&(_tg__ZTV8S19861C5__A1__8S19861C8[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__A1__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C20__A1__8S19861C8[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C20__A1__8S19861C8[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C8[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C8[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C8[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C8[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C20__A1__8S19861C8[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C8[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C20__A1__8S19861C8[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C20__A1__8S19861C8[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19861C8[];
extern  VTBL_ENTRY _ZTV8S19861C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C8[];
static VTBL_ENTRY alt_thunk_names66[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C9D0Ev,_ZThn152_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C9D1Ev,_ZThn152_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19861C9D0Ev,_ZThn144_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19861C9D1Ev,_ZThn144_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19861C9D0Ev,_ZThn124_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19861C9D1Ev,_ZThn124_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C9D0Ev,_ZThn104_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C9D1Ev,_ZThn104_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C18D0Ev,_ZThn64_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C18D1Ev,_ZThn64_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19861C18D0Ev,_ZThn104_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn184_N9S19861C18D1Ev,_ZThn104_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C20D0Ev,_ZThn52_N9S19861C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C20D1Ev,_ZThn52_N9S19861C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C21D0Ev,_ZThn52_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N9S19861C21D1Ev,_ZThn52_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19861C12D0Ev,_ZThn124_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N9S19861C12D1Ev,_ZThn124_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C12D0Ev,_ZThn104_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C12D1Ev,_ZThn104_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C14D0Ev,_ZThn104_N9S19861C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N9S19861C14D1Ev,_ZThn104_N9S19861C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19861C5D0Ev,_ZThn52_N8S19861C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C5D0Ev,_ZThn104_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19861C5D1Ev,_ZThn52_N8S19861C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C5D1Ev,_ZThn104_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19861C8D0Ev,_ZThn144_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn248_N8S19861C8D1Ev,_ZThn144_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19861C8D0Ev,_ZThn124_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn216_N8S19861C8D1Ev,_ZThn124_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C8D0Ev,_ZThn104_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N8S19861C8D1Ev,_ZThn104_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C8D0Ev,_ZThn152_N8S19861C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C8D0Ev,_ZThn52_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C8D1Ev,_ZThn152_N8S19861C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C8D1Ev,_ZThn52_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C8 = {  "S19861C8", // class name
  bases_S19861C8, 49,
  &(vtc_S19861C8[0]), // expected_vtbl_contents
  &(vtt_S19861C8[0]), // expected_vtt_contents
  ABISELECT(352,196), // object size
  NSPAIRA(_ZTI8S19861C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19861C8),118, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19861C8),94, //virtual table table var
  30, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names66,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C22  : S9624C48 {
};
//SIG(-1 S19861C22) C1{ BC2{ m}}



static void Test_S19861C22()
{
  extern Class_Descriptor cd_S19861C22;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19861C22, buf);
    S19861C22 &lv = *(new (buf) S19861C22());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19861C22)");
    check2(__alignof__(lv), 1, "__alignof__(S19861C22)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19861C22");
    test_class_info(&lv, &cd_S19861C22);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C22(Test_S19861C22, "S19861C22", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19861C23_nt  {
  int s19861c23f0;
  void  mf19861c23(); // _ZN12S19861C23_nt10mf19861c23Ev
  virtual  ~S19861C23_nt(); // _ZN12S19861C23_ntD1Ev
  S19861C23_nt(); // tgen
};
//SIG(-1 S19861C23_nt) C1{ vd m Fi}


void  S19861C23_nt ::mf19861c23(){}
 S19861C23_nt ::~S19861C23_nt(){ note_dtor("S19861C23_nt", this);}
S19861C23_nt ::S19861C23_nt(){ note_ctor("S19861C23_nt", this);} // tgen

//skip512 S19861C23_nt

#else // __cplusplus

extern void _ZN12S19861C23_ntC1Ev();
extern void _ZN12S19861C23_ntD1Ev();
Name_Map name_map_S19861C23_nt[] = {
  NSPAIR(_ZN12S19861C23_ntC1Ev),
  NSPAIR(_ZN12S19861C23_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern void _ZN12S19861C23_ntD1Ev();
extern void _ZN12S19861C23_ntD0Ev();
static  VTBL_ENTRY vtc_S19861C23_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI12S19861C23_nt[0]),
  (VTBL_ENTRY)&_ZN12S19861C23_ntD1Ev,
  (VTBL_ENTRY)&_ZN12S19861C23_ntD0Ev,
};
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
VTBL_ENTRY *P__ZTI12S19861C23_nt = _ZTI12S19861C23_nt; 
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
Class_Descriptor cd_S19861C23_nt = {  "S19861C23_nt", // class name
  0,0,//no base classes
  &(vtc_S19861C23_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI12S19861C23_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV12S19861C23_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  S19861C7  : virtual S9624C48 , S19861C8 , S19861C9 , S19861C22 , S19861C23_nt {
  virtual  ~S19861C7(); // _ZN8S19861C7D2Ev
  S19861C7(); // tgen
};
//SIG(-1 S19861C7) C1{ VBC2{ m} BC3{ BC4{ VBC5{ BC6{ m} FC2 FC6} BC7{ VBC8{ v1} BC9{ BC10{ BC2 VBC11{ vd m FD} vd} BC12{ m Fc[7]} BC8 VBC2} VBC13{ BC2 VBC11 BC8 BC14{ BC15{ VBC8 vd} VBC2 vd FC12} vd Fi} BC12 vd Fi} BC14 BC16{ VBC17{ BC8 VBC6 vd Fi:23} BC14 BC18{ BC19{ BC2 BC5 VBC10 VBC8 Fp} BC5 BC11 BC14} BC15 vd v2} VBC18 vd v3}} BC4 BC20{ BC2} BC21{ vd m Fi} vd}


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

static void Test_S19861C7()
{
  extern Class_Descriptor cd_S19861C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(34,76)];
    init_test(&cd_S19861C7, buf);
    S19861C7 *dp, &lv = *(dp=new (buf) S19861C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,300), "sizeof(S19861C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C7)");
    /*is_ambiguous_... S19861C7::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(356,208), "S19861C7");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C15*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C9*)(S19861C8*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(356,208), "S19861C7");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C9*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(356,208), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*), ABISELECT(357,209), "S19861C7");
    /*is_ambiguous_... S19861C9::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C9*)(S19861C8*), ABISELECT(357,209), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C9*), ABISELECT(357,209), "S19861C7");
    /*is_ambiguous_... S19861C12::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(408,232), "S19861C7");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C9*)(S19861C8*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(408,232), "S19861C7");
    check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(408,232), "S19861C7");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C12*)(S19861C9*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C9*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(408,232), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C18*)(S19861C9*), ABISELECT(408,232), "S19861C7");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), 0, "S19861C7");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(368,212), "S19861C7");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C15*), ABISELECT(368,212), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(368,212), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(368,212), "S19861C7");
    check_base_class_offset(lv, (S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), 0, "S19861C7");
    check_base_class_offset(lv, (S20948C8*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(8,4), "S19861C7");
    check_base_class_offset(lv, (S19861C13*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(16,12), "S19861C7");
    check_base_class_offset(lv, (S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*), 0, "S19861C7");
    /*is_ambiguous_... S19861C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C15*), ABISELECT(400,228), "S19861C7");
    /*is_ambiguous_... S19861C15::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C15*), ABISELECT(400,228), "S19861C7");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(408,232), "S19861C7");
    check_base_class_offset(lv, (S19861C16*)(S19861C15*), ABISELECT(408,232), "S19861C7");
    check_base_class_offset(lv, (S19861C15*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(400,228), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C15*)(S19861C12*)(S19861C9*), ABISELECT(400,228), "S19861C7");
    /*is_ambiguous_... S19861C12::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C12*)(S19861C9*)(S19861C8*), ABISELECT(24,16), "S19861C7");
    check_base_class_offset(lv, (S19861C12*)(S19861C9*)(S19861C8*), 0, "S19861C7");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C9*)(S19861C8*), ABISELECT(40,28), "S19861C7");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C9*)(S19861C8*), ABISELECT(40,28), "S19861C7");
    check_base_class_offset(lv, (S19861C13*)(S19861C19*), ABISELECT(432,248), "S19861C7");
    check_base_class_offset(lv, (S9624C39*)(S19861C19*), 0, "S19861C7");
    check_base_class_offset(lv, (S19861C19*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(432,248), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C19*)(S19861C18*)(S19861C9*), ABISELECT(432,248), "S19861C7");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(64,40), "S19861C7");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(64,40), "S19861C7");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(88,56), "S19861C7");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(89,57), "S19861C7");
    check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(89,57), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C5*), ABISELECT(80,52), "S19861C7");
    check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(80,52), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*), ABISELECT(80,52), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(80,52), "S19861C7");
    check_base_class_offset(lv, (S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(80,52), "S19861C7");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(104,64), "S19861C7");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(104,64), "S19861C7");
    /*is_ambiguous_... S19861C20::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(112,68), "S19861C7");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(144,84), "S19861C7");
    check_base_class_offset(lv, (S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(144,84), "S19861C7");
    check_base_class_offset(lv, (S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(80,52), "S19861C7");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(160,96), "S19861C7");
    check_base_class_offset(lv, (S19861C18*)(S19861C9*)(S19861C8*), ABISELECT(64,40), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*), ABISELECT(456,260), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(457,261), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(457,261), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C21*)(S19861C20*), ABISELECT(448,256), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*), ABISELECT(472,268), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*), ABISELECT(472,268), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*), ABISELECT(480,272), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(512,288), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C20*), ABISELECT(512,288), "S19861C7");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C9*)(S19861C8*), ABISELECT(448,256), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C9*), ABISELECT(448,256), "S19861C7");
    check_base_class_offset(lv, (S19861C9*)(S19861C8*), 0, "S19861C7");
    check_base_class_offset(lv, (S19861C8*), 0, "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(176,100), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(176,100), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(184,104), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(192,112), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C14*)(S19861C12*)(S19861C9*), ABISELECT(176,100), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C12*)(S19861C9*), ABISELECT(200,116), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C12*)(S19861C9*), ABISELECT(176,100), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C9*), ABISELECT(216,128), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C9*), ABISELECT(216,128), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(240,140), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C18*)(S19861C9*), ABISELECT(240,140), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(264,156), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(265,157), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(265,157), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(256,152), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(280,164), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(280,164), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(288,168), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(320,184), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(320,184), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C18*)(S19861C9*), ABISELECT(256,152), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C18*)(S19861C9*), ABISELECT(336,196), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C18*)(S19861C9*), ABISELECT(240,140), "S19861C7");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C9*), ABISELECT(176,100), "S19861C7");
    check_base_class_offset(lv, (S9624C48*)(S19861C22*), ABISELECT(344,200), "S19861C7");
    check_base_class_offset(lv, (S19861C22*), ABISELECT(344,200), "S19861C7");
    check_base_class_offset(lv, (S19861C23_nt*), ABISELECT(344,200), "S19861C7");
    test_class_info(&lv, &cd_S19861C7);
    dp->~S19861C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C7(Test_S19861C7, "S19861C7", ABISELECT(528,300));

#else // __cplusplus

extern void _ZN8S19861C7C1Ev();
extern void _ZN8S19861C7D2Ev();
Name_Map name_map_S19861C7[] = {
  NSPAIR(_ZN8S19861C7C1Ev),
  NSPAIR(_ZN8S19861C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C15;
extern VTBL_ENTRY _ZTI9S19861C15[];
extern  VTBL_ENTRY _ZTV9S19861C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C15[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C12;
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C19;
extern VTBL_ENTRY _ZTI9S19861C19[];
extern  VTBL_ENTRY _ZTV9S19861C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C19[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C18;
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C9;
extern VTBL_ENTRY _ZTI8S19861C9[];
extern  VTBL_ENTRY _ZTV8S19861C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C9[];
extern Class_Descriptor cd_S19861C8;
extern VTBL_ENTRY _ZTI8S19861C8[];
extern  VTBL_ENTRY _ZTV8S19861C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C12;
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C18;
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
extern Class_Descriptor cd_S19861C9;
extern VTBL_ENTRY _ZTI8S19861C9[];
extern  VTBL_ENTRY _ZTV8S19861C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C22;
extern VTBL_ENTRY _ZTI9S19861C22[];
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
static Base_Class bases_S19861C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(356,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    ABISELECT(357,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19861C10,    ABISELECT(357,209), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S19861C13,    ABISELECT(408,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    127, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(368,212), //bcp->offset
    136, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    128, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S19861C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C13,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19861C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(400,228), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(400,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
    3, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(408,232), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    149, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(408,232), //bcp->offset
    151, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    130, //bcp->index_in_construction_vtbl_array
    148, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19861C15,    ABISELECT(400,228), //bcp->offset
    141, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    129, //bcp->index_in_construction_vtbl_array
    147, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19861C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(40,28), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    131, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(432,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
    7, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S19861C19,    ABISELECT(432,248), //bcp->offset
    159, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    133, //bcp->index_in_construction_vtbl_array
    155, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    37, //immediately_derived
  0, 1},
  {&cd_S19861C17,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19861C16,    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
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S19861C5,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    135, //bcp->index_in_construction_vtbl_array
    156, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S19861C21,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(144,84), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    136, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(80,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    134, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(160,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    137, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C18,    ABISELECT(64,40), //bcp->offset
    25, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    132, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(456,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
    41, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(457,261), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(457,261), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S19861C21,    ABISELECT(448,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    159, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(472,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
    43, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(472,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
    47, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(480,272), //bcp->offset
    176, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    139, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(512,288), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    164, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(512,288), //bcp->offset
    180, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    140, //bcp->index_in_construction_vtbl_array
    163, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(448,256), //bcp->offset
    167, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    138, //bcp->index_in_construction_vtbl_array
    158, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    48, //immediately_derived
  0, 1},
  {&cd_S19861C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19861C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19861C5,    ABISELECT(176,100), //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
    32, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(192,112), //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
    33, //init_seq
    54, //immediately_derived
  0, 0},
  {&cd_S19861C14,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(200,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
    56, //immediately_derived
  0, 0},
  {&cd_S19861C12,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(216,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(216,128), //bcp->offset
    83, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    142, //bcp->index_in_construction_vtbl_array
    82, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(240,140), //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
    39, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(264,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
    64, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(265,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    63, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(265,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    64, //immediately_derived
  0, 0},
  {&cd_S19861C21,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(280,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
    66, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(280,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
    70, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(288,168), //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
    41, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    69, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(320,184), //bcp->offset
    117, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    145, //bcp->index_in_construction_vtbl_array
    96, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    70, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(256,152), //bcp->offset
    104, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    144, //bcp->index_in_construction_vtbl_array
    91, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(336,196), //bcp->offset
    125, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    146, //bcp->index_in_construction_vtbl_array
    104, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S19861C18,    ABISELECT(240,140), //bcp->offset
    91, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    143, //bcp->index_in_construction_vtbl_array
    86, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    73, //immediately_derived
  0, 0},
  {&cd_S19861C9,    ABISELECT(176,100), //bcp->offset
    66, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    141, //bcp->index_in_construction_vtbl_array
    72, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(344,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
    75, //immediately_derived
  0, 0},
  {&cd_S19861C22,    ABISELECT(344,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
    -1, //immediately_derived
  1, 0},
  {&cd_S19861C23_nt,    ABISELECT(344,200), //bcp->offset
    132, //bcp->virtual_function_table_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
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19861C7[];
extern void _ZN8S19861C7D1Ev();
extern void _ZN8S19861C7D0Ev();
extern void _ZN8S19861C92v3Ev();
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C7D1Ev,_ZThn28_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C7D0Ev,_ZThn28_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C7D1Ev,_ZThn40_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C7D0Ev,_ZThn40_N8S19861C7D0Ev)();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C7D1Ev,_ZThn52_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C7D0Ev,_ZThn52_N8S19861C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N8S19861C7D1Ev,_ZThn68_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn112_N8S19861C7D0Ev,_ZThn68_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C7D1Ev,_ZThn84_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C7D0Ev,_ZThn84_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C7D1Ev,_ZThn96_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C7D0Ev,_ZThn96_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C7D1Ev,_ZThn100_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C7D0Ev,_ZThn100_N8S19861C7D0Ev)();
extern void _ZN8S19861C92v3Ev();
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn216_N8S19861C7D1Ev,_ZThn128_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn216_N8S19861C7D0Ev,_ZThn128_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn240_N8S19861C7D1Ev,_ZThn140_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19861C7D0Ev,_ZThn140_N8S19861C7D0Ev)();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19861C7D1Ev,_ZThn152_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19861C7D0Ev,_ZThn152_N8S19861C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn288_N8S19861C7D1Ev,_ZThn168_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn288_N8S19861C7D0Ev,_ZThn168_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn320_N8S19861C7D1Ev,_ZThn184_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn320_N8S19861C7D0Ev,_ZThn184_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn336_N8S19861C7D1Ev,_ZThn196_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn336_N8S19861C7D0Ev,_ZThn196_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn344_N8S19861C7D1Ev,_ZThn200_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn344_N8S19861C7D0Ev,_ZThn200_N8S19861C7D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19861C7D1Ev,_ZTv0_n12_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn368_N8S19861C7D1Ev,_ZThn212_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C7D0Ev,_ZTv0_n12_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn368_N8S19861C7D0Ev,_ZThn212_N8S19861C7D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C7D1Ev,_ZTv0_n28_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C7D1Ev,_ZThn228_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C7D0Ev,_ZTv0_n28_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C7D0Ev,_ZThn228_N8S19861C7D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C7D1Ev,_ZTvn4_n28_N8S19861C7D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C7D0Ev,_ZTvn4_n28_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C7D1Ev,_ZTv0_n20_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn432_N8S19861C7D1Ev,_ZThn248_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C7D0Ev,_ZTv0_n20_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn432_N8S19861C7D0Ev,_ZThn248_N8S19861C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn448_N8S19861C7D1Ev,_ZThn256_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn448_N8S19861C7D0Ev,_ZThn256_N8S19861C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S19861C7D1Ev,_ZTvn16_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C7D0Ev,_ZTvn16_n16_N8S19861C7D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C7D1Ev,_ZTvn32_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C7D0Ev,_ZTvn32_n16_N8S19861C7D0Ev)();
static  VTBL_ENTRY vtc_S19861C7[] = {
  ABISELECT(448,256),
  ABISELECT(80,52),
  0,
  ABISELECT(432,248),
  ABISELECT(357,209),
  ABISELECT(400,228),
  ABISELECT(408,232),
  ABISELECT(356,208),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN8S19861C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(316,180),
  ABISELECT(368,204),
  ABISELECT(368,204),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C7D1Ev,_ZThn28_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C7D0Ev,_ZThn28_N8S19861C7D0Ev),
  ABISELECT(304,172),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(368,208),
  ABISELECT(292,168),
  ABISELECT(344,192),
  ABISELECT(344,192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C7D1Ev,_ZThn40_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C7D0Ev,_ZThn40_N8S19861C7D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(276,156),
  ABISELECT(328,180),
  0,
  ABISELECT(-80,-52),
  ABISELECT(288,160),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C7D1Ev,_ZThn68_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C7D0Ev,_ZThn68_N8S19861C7D0Ev),
  ABISELECT(212,124),
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C7D1Ev,_ZThn84_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C7D0Ev,_ZThn84_N8S19861C7D0Ev),
  ABISELECT(248,136),
  ABISELECT(248,136),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C7D1Ev,_ZThn96_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C7D0Ev,_ZThn96_N8S19861C7D0Ev),
  ABISELECT(272,156),
  ABISELECT(-96,-48),
  ABISELECT(-176,-100),
  ABISELECT(256,148),
  ABISELECT(181,109),
  ABISELECT(224,128),
  ABISELECT(232,132),
  ABISELECT(180,108),
  ABISELECT(192,112),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19861C7D1Ev,_ZThn100_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19861C7D0Ev,_ZThn100_N8S19861C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(140,80),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S19861C7D1Ev,_ZThn128_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S19861C7D0Ev,_ZThn128_N8S19861C7D0Ev),
  ABISELECT(128,72),
  ABISELECT(-160,-88),
  ABISELECT(-240,-140),
  ABISELECT(192,108),
  ABISELECT(116,68),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S19861C7D1Ev,_ZThn140_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S19861C7D0Ev,_ZThn140_N8S19861C7D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(100,56),
  ABISELECT(152,80),
  ABISELECT(-176,-100),
  ABISELECT(-256,-152),
  ABISELECT(112,60),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S19861C7D1Ev,_ZThn168_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S19861C7D0Ev,_ZThn168_N8S19861C7D0Ev),
  ABISELECT(36,24),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19861C7D1Ev,_ZThn184_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19861C7D0Ev,_ZThn184_N8S19861C7D0Ev),
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19861C7D1Ev,_ZThn196_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19861C7D0Ev,_ZThn196_N8S19861C7D0Ev),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn344_N8S19861C7D1Ev,_ZThn200_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn344_N8S19861C7D0Ev,_ZThn200_N8S19861C7D0Ev),
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C7D1Ev,_ZTv0_n12_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C7D0Ev,_ZTv0_n12_N8S19861C7D0Ev),
  ABISELECT(-400,-228),
  0,
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C7D1Ev,_ZTv0_n28_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C7D0Ev,_ZTv0_n28_N8S19861C7D0Ev),
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-408,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C7D1Ev,_ZTvn4_n28_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C7D0Ev,_ZTvn4_n28_N8S19861C7D0Ev),
  ABISELECT(-432,-248),
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C7D1Ev,_ZTv0_n20_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C7D0Ev,_ZTv0_n20_N8S19861C7D0Ev),
  ABISELECT(-92,-48),
  ABISELECT(-40,-24),
  ABISELECT(-368,-204),
  ABISELECT(-448,-256),
  ABISELECT(-80,-44),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C7D1Ev,_ZTvn16_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C7D0Ev,_ZTvn16_n16_N8S19861C7D0Ev),
  ABISELECT(-156,-80),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C7D1Ev,_ZTvn32_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C7D0Ev,_ZTvn32_n16_N8S19861C7D0Ev),
};
extern VTBL_ENTRY _ZTV8S19861C7[];
extern void _ZN8S19861C8D1Ev();
extern void _ZN8S19861C8D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C8__8S19861C7[] = {
  ABISELECT(448,256),
  ABISELECT(80,52),
  0,
  ABISELECT(432,248),
  ABISELECT(357,209),
  ABISELECT(400,228),
  ABISELECT(408,232),
  ABISELECT(356,208),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN8S19861C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN8S19861C9D1Ev();
extern void _ZN8S19861C9D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(448,256),
  ABISELECT(80,52),
  0,
  ABISELECT(432,248),
  ABISELECT(357,209),
  ABISELECT(400,228),
  ABISELECT(408,232),
  ABISELECT(356,208),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN8S19861C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(400,228),
  ABISELECT(408,232),
  ABISELECT(356,208),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
};
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C149S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(356,208),
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C149S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(368,212),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn368_N8S19861C5D1Ev,_ZThn212_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn368_N8S19861C5D0Ev,_ZThn212_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn368_N9S19861C14D1Ev,_ZThn212_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn368_N9S19861C14D0Ev,_ZThn212_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-408,-232),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn368_N9S19861C12D1Ev,_ZThn212_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn368_N9S19861C12D0Ev,_ZThn212_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn400_N9S19861C12D1Ev,_ZThn228_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn400_N9S19861C12D0Ev,_ZThn228_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C128S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-400,-228),
  0,
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C98S19861C8__A1__8S19861C7[] = {
  ABISELECT(316,180),
  ABISELECT(368,204),
  ABISELECT(368,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C168S19861C98S19861C8__A1__8S19861C7[] = {
  ABISELECT(368,204),
  ABISELECT(368,204),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C168S19861C98S19861C8__A1__8S19861C7[] = {
  0,
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C168S19861C98S19861C8__A1__8S19861C7[] = {
  0,
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(304,172),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(368,208),
  ABISELECT(292,168),
  ABISELECT(344,192),
  ABISELECT(344,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[] = {
  ABISELECT(292,168),
  ABISELECT(344,192),
  ABISELECT(344,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[] = {
  ABISELECT(344,192),
  ABISELECT(344,192),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[] = {
  0,
  ABISELECT(-344,-192),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[] = {
  0,
  ABISELECT(-344,-192),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(276,156),
  ABISELECT(328,180),
  0,
  0,
  ABISELECT(288,160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(328,180),
  0,
  0,
  ABISELECT(288,160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn288_N9S19861C21D1Ev,_ZThn160_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn288_N9S19861C21D0Ev,_ZThn160_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  0,
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[] = {
  ABISELECT(212,124),
  ABISELECT(264,148),
  ABISELECT(264,148),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[] = {
  ABISELECT(264,148),
  ABISELECT(264,148),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[] = {
  0,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[] = {
  0,
  ABISELECT(-264,-148),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn288_N9S19861C20D1Ev,_ZThn160_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn288_N9S19861C20D0Ev,_ZThn160_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  0,
  ABISELECT(-328,-180),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C209S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(212,124),
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C98S19861C8__A4__8S19861C7[] = {
  ABISELECT(248,136),
  ABISELECT(248,136),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C188S19861C98S19861C8__A4__8S19861C7[] = {
  0,
  ABISELECT(-248,-136),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn368_N9S19861C18D1Ev,_ZThn208_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn368_N9S19861C18D0Ev,_ZThn208_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-368,-208),
  0,
  ABISELECT(-432,-248),
  ABISELECT(-368,-208),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__A1__9S19861C188S19861C98S19861C8__8S19861C7[] = {
  0,
  ABISELECT(-344,-192),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(276,156),
  ABISELECT(328,180),
  0,
  ABISELECT(-16,-12),
  ABISELECT(288,160),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn304_N9S19861C18D1Ev,_ZThn172_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn304_N9S19861C18D0Ev,_ZThn172_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-304,-172),
  ABISELECT(-304,-172),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(212,124),
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C188S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(248,136),
  ABISELECT(248,136),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-408,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn368_N8S19861C9D1Ev,_ZThn212_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn368_N8S19861C9D0Ev,_ZThn212_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C9D1Ev,_ZThn228_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C9D0Ev,_ZThn228_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-400,-228),
  0,
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__A1__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(316,180),
  ABISELECT(368,204),
  ABISELECT(368,204),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C18__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(304,172),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(368,208),
  ABISELECT(292,168),
  ABISELECT(344,192),
  ABISELECT(344,192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn432_N8S19861C9D1Ev,_ZThn248_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn432_N8S19861C9D0Ev,_ZThn248_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-432,-248),
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C18__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(276,156),
  ABISELECT(328,180),
  0,
  ABISELECT(-80,-52),
  ABISELECT(288,160),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(212,124),
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C18__A4__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(248,136),
  ABISELECT(248,136),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn448_N8S19861C9D1Ev,_ZThn256_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn448_N8S19861C9D0Ev,_ZThn256_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-92,-48),
  ABISELECT(-40,-24),
  ABISELECT(-368,-204),
  ABISELECT(-448,-256),
  ABISELECT(-80,-44),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C98S19861C8__8S19861C7[] = {
  ABISELECT(-156,-80),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C8D1Ev,_ZTvn4_n28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C8D0Ev,_ZTvn4_n28_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C8__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-408,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C8D1Ev,_ZTvn4_n28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C8D0Ev,_ZTvn4_n28_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn368_N8S19861C8D1Ev,_ZThn212_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn368_N8S19861C8D0Ev,_ZThn212_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C8__8S19861C7[] = {
  ABISELECT(-368,-212),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C8D1Ev,_ZThn228_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C8D0Ev,_ZThn228_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C8__8S19861C7[] = {
  ABISELECT(-400,-228),
  0,
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C8D1Ev,_ZThn28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C8D0Ev,_ZThn28_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C9__A1__8S19861C8__8S19861C7[] = {
  ABISELECT(316,180),
  ABISELECT(368,204),
  ABISELECT(368,204),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C8D1Ev,_ZThn28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C8D0Ev,_ZThn28_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C8D1Ev,_ZThn40_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C8D0Ev,_ZThn40_N8S19861C8D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C9__8S19861C8__8S19861C7[] = {
  ABISELECT(304,172),
  ABISELECT(16,12),
  ABISELECT(-64,-40),
  ABISELECT(368,208),
  ABISELECT(292,168),
  ABISELECT(344,192),
  ABISELECT(344,192),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C8D1Ev,_ZThn40_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C8D0Ev,_ZThn40_N8S19861C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn432_N8S19861C8D1Ev,_ZThn248_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn432_N8S19861C8D0Ev,_ZThn248_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C8__8S19861C7[] = {
  ABISELECT(-432,-248),
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C8D1Ev,_ZThn52_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C8D0Ev,_ZThn52_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C9__8S19861C8__8S19861C7[] = {
  ABISELECT(276,156),
  ABISELECT(328,180),
  0,
  ABISELECT(-80,-52),
  ABISELECT(288,160),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C8D1Ev,_ZThn84_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C8D0Ev,_ZThn84_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8__8S19861C7[] = {
  ABISELECT(212,124),
  ABISELECT(264,148),
  ABISELECT(264,148),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C8D1Ev,_ZThn84_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C8D0Ev,_ZThn84_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C8D1Ev,_ZThn96_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C8D0Ev,_ZThn96_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C9__A4__8S19861C8__8S19861C7[] = {
  ABISELECT(248,136),
  ABISELECT(248,136),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C8D1Ev,_ZThn96_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C8D0Ev,_ZThn96_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn448_N8S19861C8D1Ev,_ZThn256_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn448_N8S19861C8D0Ev,_ZThn256_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C8__8S19861C7[] = {
  ABISELECT(-92,-48),
  ABISELECT(-40,-24),
  ABISELECT(-368,-204),
  ABISELECT(-448,-256),
  ABISELECT(-80,-44),
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C8D1Ev,_ZTvn16_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C8D0Ev,_ZTvn16_n16_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C8__8S19861C7[] = {
  ABISELECT(-480,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C8D1Ev,_ZTvn16_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C8D0Ev,_ZTvn16_n16_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C8D1Ev,_ZTvn32_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C8D0Ev,_ZTvn32_n16_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C8__8S19861C7[] = {
  ABISELECT(-156,-80),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-512,-288),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C8D1Ev,_ZTvn32_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C8D0Ev,_ZTvn32_n16_N8S19861C8D0Ev),
};
extern void _ZN8S19861C9D1Ev();
extern void _ZN8S19861C9D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C9__A1__8S19861C7[] = {
  ABISELECT(272,156),
  ABISELECT(-96,-48),
  ABISELECT(-176,-100),
  ABISELECT(256,148),
  ABISELECT(181,109),
  ABISELECT(224,128),
  ABISELECT(232,132),
  ABISELECT(180,108),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN8S19861C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C128S19861C9__A1__8S19861C7[] = {
  ABISELECT(224,128),
  ABISELECT(232,132),
  ABISELECT(180,108),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
};
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C149S19861C128S19861C9__A1__8S19861C7[] = {
  ABISELECT(180,108),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C149S19861C128S19861C9__A2__8S19861C7[] = {
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn192_N8S19861C5D1Ev,_ZThn112_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn192_N8S19861C5D0Ev,_ZThn112_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C9__A2__8S19861C7[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn192_N9S19861C14D1Ev,_ZThn112_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn192_N9S19861C14D0Ev,_ZThn112_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C9__A1__8S19861C7[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C128S19861C9__A1__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn192_N9S19861C12D1Ev,_ZThn112_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn192_N9S19861C12D0Ev,_ZThn112_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C128S19861C9__A1__8S19861C7[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S19861C12D1Ev,_ZThn128_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S19861C12D0Ev,_ZThn128_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C128S19861C9__A1__8S19861C7[] = {
  ABISELECT(-224,-128),
  0,
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C9__A5__8S19861C7[] = {
  ABISELECT(140,80),
  ABISELECT(192,104),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C168S19861C9__A6__8S19861C7[] = {
  ABISELECT(192,104),
  ABISELECT(192,104),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C168S19861C9__A6__8S19861C7[] = {
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C168S19861C9__A5__8S19861C7[] = {
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(128,72),
  ABISELECT(-160,-88),
  ABISELECT(-240,-140),
  ABISELECT(192,108),
  ABISELECT(116,68),
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C188S19861C9__A6__8S19861C7[] = {
  ABISELECT(116,68),
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C188S19861C9__A7__8S19861C7[] = {
  ABISELECT(168,92),
  ABISELECT(168,92),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C9__A7__8S19861C7[] = {
  0,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C188S19861C9__A6__8S19861C7[] = {
  0,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(100,56),
  ABISELECT(152,80),
  ABISELECT(-176,-100),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(152,80),
  ABISELECT(-176,-100),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(176,100),
  ABISELECT(288,160),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn112_N9S19861C21D1Ev,_ZThn60_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn112_N9S19861C21D0Ev,_ZThn60_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  0,
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A7__8S19861C7[] = {
  ABISELECT(36,24),
  ABISELECT(88,48),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C9__A8__8S19861C7[] = {
  ABISELECT(88,48),
  ABISELECT(88,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C9__A8__8S19861C7[] = {
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C9__A7__8S19861C7[] = {
  0,
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(176,100),
  ABISELECT(288,160),
  ABISELECT(176,100),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn112_N9S19861C20D1Ev,_ZThn60_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn112_N9S19861C20D0Ev,_ZThn60_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  0,
  ABISELECT(-152,-80),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C209S19861C188S19861C9__A2__8S19861C7[] = {
  ABISELECT(36,24),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C9__A9__8S19861C7[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C188S19861C9__A9__8S19861C7[] = {
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn192_N9S19861C18D1Ev,_ZThn108_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn192_N9S19861C18D0Ev,_ZThn108_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(-192,-108),
  0,
  ABISELECT(-432,-248),
  ABISELECT(-192,-108),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__A1__9S19861C188S19861C9__A1__8S19861C7[] = {
  0,
  ABISELECT(-168,-92),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(100,56),
  ABISELECT(152,80),
  ABISELECT(-176,-100),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(160,88),
  ABISELECT(288,160),
  ABISELECT(160,88),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn128_N9S19861C18D1Ev,_ZThn72_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn128_N9S19861C18D0Ev,_ZThn72_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(36,24),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C188S19861C9__A1__8S19861C7[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn192_N8S19861C9D1Ev,_ZThn112_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn192_N8S19861C9D0Ev,_ZThn112_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S19861C9D1Ev,_ZThn128_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S19861C9D0Ev,_ZThn128_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-224,-128),
  0,
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__A1__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(140,80),
  ABISELECT(192,104),
  ABISELECT(192,104),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C18__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(128,72),
  ABISELECT(-160,-88),
  ABISELECT(-240,-140),
  ABISELECT(192,108),
  ABISELECT(116,68),
  ABISELECT(168,92),
  ABISELECT(168,92),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn256_N8S19861C9D1Ev,_ZThn148_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn256_N8S19861C9D0Ev,_ZThn148_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-256,-148),
  0,
  ABISELECT(-432,-248),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C18__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(100,56),
  ABISELECT(152,80),
  ABISELECT(-176,-100),
  ABISELECT(-80,-52),
  ABISELECT(112,60),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(96,48),
  ABISELECT(288,160),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(36,24),
  ABISELECT(88,48),
  ABISELECT(88,48),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C18__A4__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(72,36),
  ABISELECT(72,36),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn272_N8S19861C9D1Ev,_ZThn156_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn272_N8S19861C9D0Ev,_ZThn156_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-92,-48),
  ABISELECT(-40,-24),
  ABISELECT(-368,-204),
  ABISELECT(-272,-156),
  ABISELECT(-80,-44),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-304,-172),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C9__A1__8S19861C7[] = {
  ABISELECT(-156,-80),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-336,-188),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C15D1Ev();
extern void _ZN9S19861C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C7[] = {
  ABISELECT(-44,-20),
  ABISELECT(8,4),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C15__8S19861C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C15__8S19861C7[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C15__8S19861C7[] = {
  ABISELECT(-52,-24),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C19D1Ev();
extern void _ZN9S19861C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C7[] = {
  ABISELECT(-432,-248),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C19[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C7[] = {
  ABISELECT(288,160),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn288_N8S19861C5D1Ev,_ZThn160_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn288_N8S19861C5D0Ev,_ZThn160_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__A1__8S19861C7[] = {
  ABISELECT(-288,-160),
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C7[] = {
  ABISELECT(-92,-48),
  ABISELECT(-40,-24),
  ABISELECT(-368,-204),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C20__A1__8S19861C7[] = {
  ABISELECT(-40,-24),
  ABISELECT(-368,-204),
  0,
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C7[] = {
  ABISELECT(368,204),
  ABISELECT(288,160),
  ABISELECT(368,204),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C7[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C7[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C7[] = {
  ABISELECT(-156,-80),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C7[] = {
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C7[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C7[] = {
  0,
  ABISELECT(104,56),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C20__A1__8S19861C7[] = {
  ABISELECT(368,204),
  ABISELECT(288,160),
  ABISELECT(368,204),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C7[] = {
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C20__A1__8S19861C7[] = {
  0,
  ABISELECT(40,24),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C20__A1__8S19861C7[] = {
  ABISELECT(-156,-80),
  ABISELECT(-104,-56),
  ABISELECT(-104,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
static  VTT_ENTRY vtt_S19861C7[] = {
  {&(_ZTV8S19861C7[11]),  11,188},
  {&(_tg__ZTV8S19861C8__8S19861C7[11]),  11,14},
  {&(_tg__ZTV8S19861C98S19861C8__8S19861C7[11]),  11,14},
  {&(_tg__ZTV9S19861C128S19861C98S19861C8__8S19861C7[6]),  6,8},
  {&(_tg__ZTV9S19861C149S19861C128S19861C98S19861C8__8S19861C7[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C149S19861C128S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C128S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C15__9S19861C128S19861C98S19861C8__8S19861C7[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C98S19861C8__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C168S19861C98S19861C8__A1__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C168S19861C98S19861C8__A1__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C168S19861C98S19861C8__A1__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C188S19861C98S19861C8__8S19861C7[9]),  9,13},
  {&(_tg__ZTV9S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C188S19861C98S19861C8__A2__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[6]),  6,8},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C98S19861C8__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C209S19861C188S19861C98S19861C8__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C209S19861C188S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C98S19861C8__A4__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C188S19861C98S19861C8__A4__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C19__9S19861C188S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C13__A1__9S19861C188S19861C98S19861C8__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__9S19861C188S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C188S19861C98S19861C8__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C98S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C98S19861C8__8S19861C7[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C16__A1__8S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C18__8S19861C98S19861C8__8S19861C7[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C18__A4__8S19861C98S19861C8__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C98S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C98S19861C8__8S19861C7[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C98S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C8__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C8__8S19861C7[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C9__A1__8S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C188S19861C9__8S19861C8__8S19861C7[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__8S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__8S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C9__A4__8S19861C8__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C8__8S19861C7[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C8__8S19861C7[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C8__8S19861C7[5]),  5,8},
  {&(_tg__ZTV8S19861C9__A1__8S19861C7[11]),  11,14},
  {&(_tg__ZTV9S19861C128S19861C9__A1__8S19861C7[6]),  6,8},
  {&(_tg__ZTV9S19861C149S19861C128S19861C9__A1__8S19861C7[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C149S19861C128S19861C9__A2__8S19861C7[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C9__A2__8S19861C7[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C9__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C128S19861C9__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C15__9S19861C128S19861C9__A1__8S19861C7[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C9__A5__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C168S19861C9__A6__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C168S19861C9__A6__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C168S19861C9__A5__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C188S19861C9__A1__8S19861C7[9]),  9,13},
  {&(_tg__ZTV9S19861C169S19861C188S19861C9__A6__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C188S19861C9__A7__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C9__A7__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C188S19861C9__A6__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__A2__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C9__A2__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A7__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C9__A8__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C9__A8__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C9__A7__8S19861C7[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C209S19861C188S19861C9__A2__8S19861C7[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C9__A2__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C209S19861C188S19861C9__A2__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C209S19861C188S19861C9__A2__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C9__A9__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C188S19861C9__A9__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C19__9S19861C188S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C13__A1__9S19861C188S19861C9__A1__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C9__A1__8S19861C7[7]),  7,9},
  {&(_tg__ZTV8S19861C5__9S19861C188S19861C9__A1__8S19861C7[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C188S19861C9__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C188S19861C9__A1__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C9__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C9__A1__8S19861C7[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C16__A1__8S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C18__8S19861C9__A1__8S19861C7[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C9__A1__8S19861C7[7]),  7,9},
  {&(_tg__ZTV8S19861C5__A1__8S19861C9__A1__8S19861C7[4]),  4,6},
  {&(_tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C18__A4__8S19861C9__A1__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C9__A1__8S19861C7[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C9__A1__8S19861C7[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C9__A1__8S19861C7[5]),  5,8},
  {&(_ZTV8S19861C7[156]),  156,188},
  {&(_ZTV8S19861C7[139]),  139,188},
  {&(_ZTV8S19861C7[148]),  148,188},
  {&(_ZTV8S19861C7[156]),  156,188},
  {&(_ZTV8S19861C7[22]),  22,188},
  {&(_ZTV8S19861C7[34]),  34,188},
  {&(_ZTV8S19861C7[164]),  164,188},
  {&(_ZTV8S19861C7[45]),  45,188},
  {&(_ZTV8S19861C7[45]),  45,188},
  {&(_ZTV8S19861C7[56]),  56,188},
  {&(_ZTV8S19861C7[63]),  63,188},
  {&(_ZTV8S19861C7[174]),  174,188},
  {&(_ZTV8S19861C7[178]),  178,188},
  {&(_ZTV8S19861C7[185]),  185,188},
  {&(_ZTV8S19861C7[77]),  77,188},
  {&(_ZTV8S19861C7[88]),  88,188},
  {&(_ZTV8S19861C7[100]),  100,188},
  {&(_ZTV8S19861C7[111]),  111,188},
  {&(_ZTV8S19861C7[122]),  122,188},
  {&(_ZTV8S19861C7[129]),  129,188},
  {&(_tg__ZTV9S19861C15__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C7[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C15__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C19__8S19861C7[3]),  3,6},
  {&(_tg__ZTV8S19861C5__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C20__A1__8S19861C7[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C20__A1__8S19861C7[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C7[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C7[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C7[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C7[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C20__A1__8S19861C7[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C7[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C20__A1__8S19861C7[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C20__A1__8S19861C7[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19861C7[];
extern  VTBL_ENTRY _ZTV8S19861C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C7[];
static VTBL_ENTRY alt_thunk_names67[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19861C8D0Ev,_ZThn256_N8S19861C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C8D0Ev,_ZThn52_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19861C8D1Ev,_ZThn256_N8S19861C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C8D1Ev,_ZThn52_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S19861C8D0Ev,_ZThn248_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S19861C8D1Ev,_ZThn248_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C8D0Ev,_ZThn228_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C8D1Ev,_ZThn228_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C8D0Ev,_ZThn212_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C8D1Ev,_ZThn212_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C9D0Ev,_ZThn156_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19861C9D0Ev,_ZThn256_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N8S19861C9D1Ev,_ZThn156_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19861C9D1Ev,_ZThn256_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C9D0Ev,_ZThn148_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S19861C9D0Ev,_ZThn248_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C9D1Ev,_ZThn148_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S19861C9D1Ev,_ZThn248_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19861C9D0Ev,_ZThn128_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C9D0Ev,_ZThn228_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19861C9D1Ev,_ZThn128_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C9D1Ev,_ZThn228_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19861C9D0Ev,_ZThn112_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C9D0Ev,_ZThn212_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19861C9D1Ev,_ZThn112_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C9D1Ev,_ZThn212_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19861C18D0Ev,_ZThn72_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19861C18D0Ev,_ZThn172_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N9S19861C18D1Ev,_ZThn72_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn304_N9S19861C18D1Ev,_ZThn172_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19861C18D0Ev,_ZThn108_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19861C18D0Ev,_ZThn208_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19861C18D1Ev,_ZThn108_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19861C18D1Ev,_ZThn208_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C20D0Ev,_ZThn60_N9S19861C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19861C20D0Ev,_ZThn160_N9S19861C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C20D1Ev,_ZThn60_N9S19861C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19861C20D1Ev,_ZThn160_N9S19861C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C21D0Ev,_ZThn60_N9S19861C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19861C21D0Ev,_ZThn160_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N9S19861C21D1Ev,_ZThn60_N9S19861C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N9S19861C21D1Ev,_ZThn160_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19861C12D0Ev,_ZThn128_N9S19861C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19861C12D0Ev,_ZThn228_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19861C12D1Ev,_ZThn128_N9S19861C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19861C12D1Ev,_ZThn228_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19861C12D0Ev,_ZThn112_N9S19861C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19861C12D0Ev,_ZThn212_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19861C12D1Ev,_ZThn112_N9S19861C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19861C12D1Ev,_ZThn212_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19861C14D0Ev,_ZThn112_N9S19861C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19861C14D0Ev,_ZThn212_N9S19861C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N9S19861C14D1Ev,_ZThn112_N9S19861C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N9S19861C14D1Ev,_ZThn212_N9S19861C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19861C5D0Ev,_ZThn160_N8S19861C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19861C5D0Ev,_ZThn112_N8S19861C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C5D0Ev,_ZThn212_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N8S19861C5D1Ev,_ZThn160_N8S19861C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19861C5D1Ev,_ZThn112_N8S19861C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C5D1Ev,_ZThn212_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C7D0Ev,_ZTv0_n20_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S19861C7D0Ev,_ZThn248_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C7D1Ev,_ZTv0_n20_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N8S19861C7D1Ev,_ZThn248_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C7D0Ev,_ZTv0_n28_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C7D0Ev,_ZThn228_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C7D1Ev,_ZTv0_n28_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C7D1Ev,_ZThn228_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C7D0Ev,_ZTv0_n12_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C7D0Ev,_ZThn212_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C7D1Ev,_ZTv0_n12_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N8S19861C7D1Ev,_ZThn212_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19861C7D0Ev,_ZThn256_N8S19861C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C7D0Ev,_ZThn152_N8S19861C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C7D0Ev,_ZThn52_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn448_N8S19861C7D1Ev,_ZThn256_N8S19861C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C7D1Ev,_ZThn152_N8S19861C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C7D1Ev,_ZThn52_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C7 = {  "S19861C7", // class name
  bases_S19861C7, 77,
  &(vtc_S19861C7[0]), // expected_vtbl_contents
  &(vtt_S19861C7[0]), // expected_vtt_contents
  ABISELECT(528,300), // object size
  NSPAIRA(_ZTI8S19861C7),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19861C7),188, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19861C7),170, //virtual table table var
  48, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names67,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19861C1  : virtual S9624C48 , virtual S19861C3 , S19861C7 , S10296C47_nt {
  ~S19861C1(); // tgen
  S19861C1(); // tgen
};
//SIG(1 S19861C1) C1{ VBC2{ m} VBC3{ BC4{ m Fc[7]} VBC5{ BC2 VBC6{ vd m FD} vd} VBC2 vd} BC7{ VBC2 BC8{ BC9{ VBC10{ BC11{ m} FC2 FC11} BC12{ VBC13{ v1} BC14{ BC5 BC4 BC13 VBC2} VBC15{ BC2 VBC6 BC13 BC16{ BC17{ VBC13 vd} VBC2 vd FC4} vd Fi} BC4 vd Fi} BC16 BC18{ VBC19{ BC13 VBC11 vd Fi:23} BC16 BC20{ BC21{ BC2 BC10 VBC5 VBC13 Fp} BC10 BC6 BC16} BC17 vd v2} VBC20 vd v3}} BC9 BC22{ BC2} BC23{ vd m Fi} vd} BC24{ m FL}}


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

static void Test_S19861C1()
{
  extern Class_Descriptor cd_S19861C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(37,82)];
    init_test(&cd_S19861C1, buf);
    S19861C1 *dp, &lv = *(dp=new (buf) S19861C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(576,324), "sizeof(S19861C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19861C1)");
    /*is_ambiguous_... S19861C1::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C3*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C7::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C14::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C15*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C9*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(368,216), "S19861C1");
    check_base_class_offset(lv, (S20948C8*)(S19861C3*), ABISELECT(384,224), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C5*), ABISELECT(376,220), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C5 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*), ABISELECT(400,232), "S19861C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(400,232), "S19861C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S19861C15*), ABISELECT(400,232), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(400,232), "S19861C1");
    check_base_class_offset(lv, (S19861C5*)(S19861C3*), ABISELECT(376,220), "S19861C1");
    check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(376,220), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*), ABISELECT(376,220), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(376,220), "S19861C1");
    check_base_class_offset(lv, (S19861C3*), ABISELECT(376,220), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*), ABISELECT(432,248), "S19861C1");
    /*is_ambiguous_... S19861C9::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(432,248), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C9*)(S19861C7*), ABISELECT(432,248), "S19861C1");
    /*is_ambiguous_... S19861C12::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C9*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C17*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(448,256), "S19861C1");
    check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), 0, "S19861C1");
    check_base_class_offset(lv, (S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), 0, "S19861C1");
    check_base_class_offset(lv, (S20948C8*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(8,4), "S19861C1");
    check_base_class_offset(lv, (S19861C13*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(16,12), "S19861C1");
    check_base_class_offset(lv, (S19861C14*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), 0, "S19861C1");
    /*is_ambiguous_... S19861C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C15*), ABISELECT(440,252), "S19861C1");
    /*is_ambiguous_... S19861C15::S19861C13 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C15*), ABISELECT(440,252), "S19861C1");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C15*), ABISELECT(448,256), "S19861C1");
    check_base_class_offset(lv, (S19861C16*)(S19861C15*), ABISELECT(448,256), "S19861C1");
    check_base_class_offset(lv, (S19861C15*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(440,252), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C15*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(440,252), "S19861C1");
    /*is_ambiguous_... S19861C12::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(24,16), "S19861C1");
    check_base_class_offset(lv, (S19861C12*)(S19861C9*)(S19861C8*)(S19861C7*), 0, "S19861C1");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(40,28), "S19861C1");
    /*is_ambiguous_... S19861C9::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(40,28), "S19861C1");
    check_base_class_offset(lv, (S19861C13*)(S19861C19*), ABISELECT(472,272), "S19861C1");
    check_base_class_offset(lv, (S9624C39*)(S19861C19*), 0, "S19861C1");
    check_base_class_offset(lv, (S19861C19*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(472,272), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C19*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(472,272), "S19861C1");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(64,40), "S19861C1");
    /*is_ambiguous_... S19861C18::S19861C16 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(64,40), "S19861C1");
    /*is_ambiguous_... S19861C21::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(88,56), "S19861C1");
    check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(89,57), "S19861C1");
    check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(89,57), "S19861C1");
    check_base_class_offset(lv, (S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(80,52), "S19861C1");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(104,64), "S19861C1");
    /*is_ambiguous_... S19861C20::S19861C10 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(104,64), "S19861C1");
    /*is_ambiguous_... S19861C20::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(112,68), "S19861C1");
    check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(144,84), "S19861C1");
    check_base_class_offset(lv, (S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(144,84), "S19861C1");
    check_base_class_offset(lv, (S19861C20*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(80,52), "S19861C1");
    /*is_ambiguous_... S19861C18::S19861C17 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(160,96), "S19861C1");
    check_base_class_offset(lv, (S19861C18*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(64,40), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*), ABISELECT(504,284), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(505,285), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*), ABISELECT(505,285), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C21*)(S19861C20*), ABISELECT(496,280), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*), ABISELECT(520,292), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*), ABISELECT(520,292), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*), ABISELECT(528,296), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*), ABISELECT(560,312), "S19861C1");
    /*is_ambiguous_... S19861C1::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C20*), ABISELECT(560,312), "S19861C1");
    /*is_ambiguous_... S19861C9::S19861C20 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C9*)(S19861C8*)(S19861C7*), ABISELECT(496,280), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C9*)(S19861C7*), ABISELECT(496,280), "S19861C1");
    check_base_class_offset(lv, (S19861C9*)(S19861C8*)(S19861C7*), 0, "S19861C1");
    check_base_class_offset(lv, (S19861C8*)(S19861C7*), 0, "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(176,100), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C5*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(176,100), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(184,104), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C13*)(S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(192,112), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C14*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(176,100), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(200,116), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C12*)(S19861C9*)(S19861C7*), ABISELECT(176,100), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C9*)(S19861C7*), ABISELECT(216,128), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C9*)(S19861C7*), ABISELECT(216,128), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(240,140), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(240,140), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(264,156), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(265,157), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(265,157), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C21*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(256,152), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(280,164), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C10*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(280,164), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(288,168), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(320,184), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C16*)(S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(320,184), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C20*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(256,152), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C17*)(S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(336,196), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C18*)(S19861C9*)(S19861C7*), ABISELECT(240,140), "S19861C1");
    /*is_ambiguous_... S19861C7::S19861C9 */ AMB_check_base_class_offset(lv, (S19861C9*)(S19861C7*), ABISELECT(176,100), "S19861C1");
    check_base_class_offset(lv, (S9624C48*)(S19861C22*)(S19861C7*), ABISELECT(344,200), "S19861C1");
    check_base_class_offset(lv, (S19861C22*)(S19861C7*), ABISELECT(344,200), "S19861C1");
    check_base_class_offset(lv, (S19861C23_nt*)(S19861C7*), ABISELECT(344,200), "S19861C1");
    check_base_class_offset(lv, (S19861C7*), 0, "S19861C1");
    check_base_class_offset(lv, (S10296C47_nt*), ABISELECT(360,208), "S19861C1");
    test_class_info(&lv, &cd_S19861C1);
    dp->~S19861C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19861C1(Test_S19861C1, "S19861C1", ABISELECT(576,324));

#else // __cplusplus

extern void _ZN8S19861C1C1Ev();
extern void _ZN8S19861C1D1Ev();
Name_Map name_map_S19861C1[] = {
  NSPAIR(_ZN8S19861C1C1Ev),
  NSPAIR(_ZN8S19861C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S19861C3;
extern VTBL_ENTRY _ZTI8S19861C3[];
extern  VTBL_ENTRY _ZTV8S19861C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C3[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C15;
extern VTBL_ENTRY _ZTI9S19861C15[];
extern  VTBL_ENTRY _ZTV9S19861C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C15[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C12;
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C19;
extern VTBL_ENTRY _ZTI9S19861C19[];
extern  VTBL_ENTRY _ZTV9S19861C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C19[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C18;
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C9;
extern VTBL_ENTRY _ZTI8S19861C9[];
extern  VTBL_ENTRY _ZTV8S19861C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C9[];
extern Class_Descriptor cd_S19861C8;
extern VTBL_ENTRY _ZTI8S19861C8[];
extern  VTBL_ENTRY _ZTV8S19861C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C5;
extern VTBL_ENTRY _ZTI8S19861C5[];
extern  VTBL_ENTRY _ZTV8S19861C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C5[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C13;
extern VTBL_ENTRY _ZTI9S19861C13[];
extern  VTBL_ENTRY _ZTV9S19861C13[];
extern Class_Descriptor cd_S19861C14;
extern VTBL_ENTRY _ZTI9S19861C14[];
extern  VTBL_ENTRY _ZTV9S19861C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C14[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19861C12;
extern VTBL_ENTRY _ZTI9S19861C12[];
extern  VTBL_ENTRY _ZTV9S19861C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C12[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S19861C21;
extern VTBL_ENTRY _ZTI9S19861C21[];
extern  VTBL_ENTRY _ZTV9S19861C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C21[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19861C10;
extern VTBL_ENTRY _ZTI9S19861C10[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C16;
extern VTBL_ENTRY _ZTI9S19861C16[];
extern  VTBL_ENTRY _ZTV9S19861C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C16[];
extern Class_Descriptor cd_S19861C20;
extern VTBL_ENTRY _ZTI9S19861C20[];
extern  VTBL_ENTRY _ZTV9S19861C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C20[];
extern Class_Descriptor cd_S19861C17;
extern VTBL_ENTRY _ZTI9S19861C17[];
extern  VTBL_ENTRY _ZTV9S19861C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C17[];
extern Class_Descriptor cd_S19861C18;
extern VTBL_ENTRY _ZTI9S19861C18[];
extern  VTBL_ENTRY _ZTV9S19861C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19861C18[];
extern Class_Descriptor cd_S19861C9;
extern VTBL_ENTRY _ZTI8S19861C9[];
extern  VTBL_ENTRY _ZTV8S19861C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19861C22;
extern VTBL_ENTRY _ZTI9S19861C22[];
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S19861C7;
extern VTBL_ENTRY _ZTI8S19861C7[];
extern  VTBL_ENTRY _ZTV8S19861C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C7[];
extern Class_Descriptor cd_S10296C47_nt;
extern VTBL_ENTRY _ZTI12S10296C47_nt[];
static Base_Class bases_S19861C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(368,216), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(384,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(376,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(400,232), //bcp->offset
    145, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    150, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19861C5,    ABISELECT(376,220), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    149, //bcp->index_in_construction_vtbl_array
    172, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19861C3,    ABISELECT(376,220), //bcp->offset
    137, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    148, //bcp->index_in_construction_vtbl_array
    169, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    ABISELECT(432,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(432,248), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19861C13,    ABISELECT(448,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    151, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19861C5,    0, //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
    16, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C13,    ABISELECT(16,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
    17, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19861C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(440,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
    18, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(440,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
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(448,256), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    176, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(448,256), //bcp->offset
    160, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    153, //bcp->index_in_construction_vtbl_array
    175, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19861C15,    ABISELECT(440,252), //bcp->offset
    150, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    152, //bcp->index_in_construction_vtbl_array
    174, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19861C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(40,28), //bcp->offset
    18, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    154, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(472,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
    9, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S19861C19,    ABISELECT(472,272), //bcp->offset
    168, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    156, //bcp->index_in_construction_vtbl_array
    182, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S19861C17,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19861C16,    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
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(89,57), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C21,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,68), //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
    25, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(144,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(144,84), //bcp->offset
    52, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    158, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(80,52), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    157, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    28, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(160,96), //bcp->offset
    60, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    159, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S19861C18,    ABISELECT(64,40), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    155, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    30, //init_seq
    50, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(504,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
    43, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(505,285), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C10,    ABISELECT(505,285), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19861C21,    ABISELECT(496,280), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    184, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(520,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
    45, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(520,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
    49, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(528,296), //bcp->offset
    185, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    161, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(560,312), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    189, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    48, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(560,312), //bcp->offset
    189, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    162, //bcp->index_in_construction_vtbl_array
    188, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    49, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(496,280), //bcp->offset
    176, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    160, //bcp->index_in_construction_vtbl_array
    183, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    50, //immediately_derived
  0, 1},
  {&cd_S19861C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    51, //immediately_derived
  0, 0},
  {&cd_S19861C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    32, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    53, //immediately_derived
  0, 0},
  {&cd_S19861C5,    ABISELECT(176,100), //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
    33, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(184,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19861C13,    ABISELECT(192,112), //bcp->offset
    81, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    34, //init_seq
    56, //immediately_derived
  0, 0},
  {&cd_S19861C14,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    58, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(200,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
    58, //immediately_derived
  0, 0},
  {&cd_S19861C12,    ABISELECT(176,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(216,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    84, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    60, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(216,128), //bcp->offset
    84, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    164, //bcp->index_in_construction_vtbl_array
    83, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    89, //bcp->base_subarray_index_in_construction_vtbl_array
    39, //init_seq
    62, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(240,140), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    88, //bcp->base_subarray_index_in_construction_vtbl_array
    40, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(264,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
    66, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(265,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    65, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(265,157), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    66, //immediately_derived
  0, 0},
  {&cd_S19861C21,    ABISELECT(256,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    93, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(280,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
    68, //immediately_derived
  0, 0},
  {&cd_S19861C10,    ABISELECT(280,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
    72, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(288,168), //bcp->offset
    114, //bcp->virtual_function_table_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
    72, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(320,184), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    98, //bcp->base_subarray_index_in_construction_vtbl_array
    43, //init_seq
    71, //immediately_derived
  0, 0},
  {&cd_S19861C16,    ABISELECT(320,184), //bcp->offset
    118, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    167, //bcp->index_in_construction_vtbl_array
    97, //bcp->base_subarray_index_in_construction_vtbl_array
    44, //init_seq
    72, //immediately_derived
  0, 0},
  {&cd_S19861C20,    ABISELECT(256,152), //bcp->offset
    105, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    166, //bcp->index_in_construction_vtbl_array
    92, //bcp->base_subarray_index_in_construction_vtbl_array
    45, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S19861C17,    ABISELECT(336,196), //bcp->offset
    126, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    168, //bcp->index_in_construction_vtbl_array
    105, //bcp->base_subarray_index_in_construction_vtbl_array
    46, //init_seq
    74, //immediately_derived
  0, 0},
  {&cd_S19861C18,    ABISELECT(240,140), //bcp->offset
    92, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    165, //bcp->index_in_construction_vtbl_array
    87, //bcp->base_subarray_index_in_construction_vtbl_array
    47, //init_seq
    75, //immediately_derived
  0, 0},
  {&cd_S19861C9,    ABISELECT(176,100), //bcp->offset
    67, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    163, //bcp->index_in_construction_vtbl_array
    73, //bcp->base_subarray_index_in_construction_vtbl_array
    48, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(344,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
    77, //immediately_derived
  0, 0},
  {&cd_S19861C22,    ABISELECT(344,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
    79, //immediately_derived
  0, 0},
  {&cd_S19861C23_nt,    ABISELECT(344,200), //bcp->offset
    133, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    49, //init_seq
    79, //immediately_derived
  0, 0},
  {&cd_S19861C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    50, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C47_nt,    ABISELECT(360,208), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19861C1[];
extern void _ZN8S19861C1D1Ev();
extern void _ZN8S19861C1D0Ev();
extern void _ZN8S19861C92v3Ev();
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C1D1Ev,_ZThn28_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C1D0Ev,_ZThn28_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C1D1Ev,_ZThn40_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C1D0Ev,_ZThn40_N8S19861C1D0Ev)();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C1D1Ev,_ZThn52_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C1D0Ev,_ZThn52_N8S19861C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn112_N8S19861C1D1Ev,_ZThn68_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn112_N8S19861C1D0Ev,_ZThn68_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C1D1Ev,_ZThn84_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C1D0Ev,_ZThn84_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C1D1Ev,_ZThn96_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C1D0Ev,_ZThn96_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn176_N8S19861C1D1Ev,_ZThn100_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C1D0Ev,_ZThn100_N8S19861C1D0Ev)();
extern void _ZN8S19861C92v3Ev();
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn216_N8S19861C1D1Ev,_ZThn128_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn216_N8S19861C1D0Ev,_ZThn128_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn240_N8S19861C1D1Ev,_ZThn140_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn240_N8S19861C1D0Ev,_ZThn140_N8S19861C1D0Ev)();
extern void _ZN9S19861C182v2Ev();
extern void ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn256_N8S19861C1D1Ev,_ZThn152_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn256_N8S19861C1D0Ev,_ZThn152_N8S19861C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn288_N8S19861C1D1Ev,_ZThn168_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn288_N8S19861C1D0Ev,_ZThn168_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn320_N8S19861C1D1Ev,_ZThn184_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn320_N8S19861C1D0Ev,_ZThn184_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn336_N8S19861C1D1Ev,_ZThn196_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn336_N8S19861C1D0Ev,_ZThn196_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn344_N8S19861C1D1Ev,_ZThn200_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn344_N8S19861C1D0Ev,_ZThn200_N8S19861C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn376_N8S19861C1D1Ev,_ZThn220_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn376_N8S19861C1D0Ev,_ZThn220_N8S19861C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C1D1Ev,_ZTv0_n12_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C1D1Ev,_ZThn232_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C1D0Ev,_ZTv0_n12_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C1D0Ev,_ZThn232_N8S19861C1D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C1D1Ev,_ZTv0_n28_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn440_N8S19861C1D1Ev,_ZThn252_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C1D0Ev,_ZTv0_n28_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn440_N8S19861C1D0Ev,_ZThn252_N8S19861C1D0Ev)() __attribute__((weak));
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C1D1Ev,_ZTvn4_n28_N8S19861C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C1D0Ev,_ZTvn4_n28_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C1D1Ev,_ZTv0_n20_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn472_N8S19861C1D1Ev,_ZThn272_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C1D0Ev,_ZTv0_n20_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn472_N8S19861C1D0Ev,_ZThn272_N8S19861C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev)();
extern void ABISELECT(_ZThn496_N8S19861C1D1Ev,_ZThn280_N8S19861C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev)();
extern void ABISELECT(_ZThn496_N8S19861C1D0Ev,_ZThn280_N8S19861C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N8S19861C1D1Ev,_ZTvn16_n16_N8S19861C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C1D0Ev,_ZTvn16_n16_N8S19861C1D0Ev)();
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C1D1Ev,_ZTvn32_n16_N8S19861C1D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C1D0Ev,_ZTvn32_n16_N8S19861C1D0Ev)();
static  VTBL_ENTRY vtc_S19861C1[] = {
  ABISELECT(376,220),
  ABISELECT(496,280),
  ABISELECT(376,220),
  0,
  ABISELECT(472,272),
  ABISELECT(432,248),
  ABISELECT(440,252),
  ABISELECT(448,256),
  ABISELECT(368,216),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN8S19861C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(328,188),
  ABISELECT(408,228),
  ABISELECT(408,228),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C1D1Ev,_ZThn28_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C1D0Ev,_ZThn28_N8S19861C1D0Ev),
  ABISELECT(336,192),
  ABISELECT(312,180),
  ABISELECT(-64,-40),
  ABISELECT(408,232),
  ABISELECT(304,176),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C1D1Ev,_ZThn40_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C1D0Ev,_ZThn40_N8S19861C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(288,164),
  ABISELECT(368,204),
  ABISELECT(296,168),
  ABISELECT(-80,-52),
  ABISELECT(320,180),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C1D1Ev,_ZThn68_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N8S19861C1D0Ev,_ZThn68_N8S19861C1D0Ev),
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C1D1Ev,_ZThn84_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C1D0Ev,_ZThn84_N8S19861C1D0Ev),
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C1D1Ev,_ZThn96_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C1D0Ev,_ZThn96_N8S19861C1D0Ev),
  ABISELECT(320,180),
  ABISELECT(200,120),
  ABISELECT(-176,-100),
  ABISELECT(296,172),
  ABISELECT(256,148),
  ABISELECT(264,152),
  ABISELECT(272,156),
  ABISELECT(192,116),
  ABISELECT(224,132),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19861C1D1Ev,_ZThn100_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19861C1D0Ev,_ZThn100_N8S19861C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  ABISELECT(152,88),
  ABISELECT(232,128),
  ABISELECT(232,128),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S19861C1D1Ev,_ZThn128_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S19861C1D0Ev,_ZThn128_N8S19861C1D0Ev),
  ABISELECT(160,92),
  ABISELECT(136,80),
  ABISELECT(-240,-140),
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S19861C1D1Ev,_ZThn140_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S19861C1D0Ev,_ZThn140_N8S19861C1D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
  ABISELECT(112,64),
  ABISELECT(192,104),
  ABISELECT(120,68),
  ABISELECT(-256,-152),
  ABISELECT(144,80),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev),
  ABISELECT(-288,-168),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S19861C1D1Ev,_ZThn168_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn288_N8S19861C1D0Ev,_ZThn168_N8S19861C1D0Ev),
  ABISELECT(48,32),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19861C1D1Ev,_ZThn184_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19861C1D0Ev,_ZThn184_N8S19861C1D0Ev),
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19861C1D1Ev,_ZThn196_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19861C1D0Ev,_ZThn196_N8S19861C1D0Ev),
  ABISELECT(-344,-200),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn344_N8S19861C1D1Ev,_ZThn200_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn344_N8S19861C1D0Ev,_ZThn200_N8S19861C1D0Ev),
  ABISELECT(-8,-4),
  0,
  ABISELECT(-376,-220),
  ABISELECT(24,12),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev),
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C1D1Ev,_ZTv0_n12_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C1D0Ev,_ZTv0_n12_N8S19861C1D0Ev),
  ABISELECT(-440,-252),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C1D1Ev,_ZTv0_n28_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C1D0Ev,_ZTv0_n28_N8S19861C1D0Ev),
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C1D1Ev,_ZTvn4_n28_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C1D0Ev,_ZTvn4_n28_N8S19861C1D0Ev),
  ABISELECT(-472,-272),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C1D1Ev,_ZTv0_n20_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C1D0Ev,_ZTv0_n20_N8S19861C1D0Ev),
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  ABISELECT(-496,-280),
  ABISELECT(-96,-48),
  ABISELECT(-496,-280),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev),
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C1D1Ev,_ZTvn16_n16_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C1D0Ev,_ZTvn16_n16_N8S19861C1D0Ev),
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI8S19861C1[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C1D1Ev,_ZTvn32_n16_N8S19861C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C1D0Ev,_ZTvn32_n16_N8S19861C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19861C1[];
extern void _ZN8S19861C7D1Ev();
extern void _ZN8S19861C7D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C7__8S19861C1[] = {
  ABISELECT(496,280),
  ABISELECT(376,220),
  0,
  ABISELECT(472,272),
  ABISELECT(432,248),
  ABISELECT(440,252),
  ABISELECT(448,256),
  ABISELECT(368,216),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN8S19861C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN8S19861C8D1Ev();
extern void _ZN8S19861C8D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(496,280),
  ABISELECT(376,220),
  0,
  ABISELECT(472,272),
  ABISELECT(432,248),
  ABISELECT(440,252),
  ABISELECT(448,256),
  ABISELECT(368,216),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN8S19861C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C8D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN8S19861C9D1Ev();
extern void _ZN8S19861C9D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(496,280),
  ABISELECT(376,220),
  0,
  ABISELECT(472,272),
  ABISELECT(432,248),
  ABISELECT(440,252),
  ABISELECT(448,256),
  ABISELECT(368,216),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN8S19861C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C128S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(440,252),
  ABISELECT(448,256),
  ABISELECT(368,216),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
};
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C149S19861C128S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(368,216),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C149S19861C128S19861C98S19861C88S19861C7__A1__8S19861C1[] = {
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C5D1Ev,_ZThn232_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C5D0Ev,_ZThn232_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C98S19861C88S19861C7__A1__8S19861C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn400_N9S19861C14D1Ev,_ZThn232_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn400_N9S19861C14D0Ev,_ZThn232_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn400_N9S19861C12D1Ev,_ZThn232_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn400_N9S19861C12D0Ev,_ZThn232_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn440_N9S19861C12D1Ev,_ZThn252_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn440_N9S19861C12D0Ev,_ZThn252_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-440,-252),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[] = {
  ABISELECT(328,188),
  ABISELECT(408,228),
  ABISELECT(408,228),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[] = {
  ABISELECT(408,228),
  ABISELECT(408,228),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[] = {
  0,
  ABISELECT(-408,-228),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[] = {
  0,
  ABISELECT(-408,-228),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(336,192),
  ABISELECT(312,180),
  ABISELECT(-64,-40),
  ABISELECT(408,232),
  ABISELECT(304,176),
  ABISELECT(384,216),
  ABISELECT(384,216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[] = {
  ABISELECT(304,176),
  ABISELECT(384,216),
  ABISELECT(384,216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[] = {
  ABISELECT(384,216),
  ABISELECT(384,216),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[] = {
  0,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[] = {
  0,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,164),
  ABISELECT(368,204),
  ABISELECT(296,168),
  0,
  ABISELECT(320,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(368,204),
  ABISELECT(296,168),
  0,
  ABISELECT(320,180),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn296_N9S19861C21D1Ev,_ZThn168_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn296_N9S19861C21D0Ev,_ZThn168_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-296,-168),
  ABISELECT(24,12),
  ABISELECT(-296,-168),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn320_N9S19861C21D1Ev,_ZThn180_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn320_N9S19861C21D0Ev,_ZThn180_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  0,
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[] = {
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[] = {
  ABISELECT(304,172),
  ABISELECT(304,172),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[] = {
  0,
  ABISELECT(-304,-172),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[] = {
  0,
  ABISELECT(-304,-172),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn296_N9S19861C20D1Ev,_ZThn168_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn296_N9S19861C20D0Ev,_ZThn168_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-296,-168),
  ABISELECT(24,12),
  ABISELECT(-296,-168),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn320_N9S19861C20D1Ev,_ZThn180_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn320_N9S19861C20D0Ev,_ZThn180_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-320,-180),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  0,
  ABISELECT(-368,-204),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C98S19861C88S19861C7__A4__8S19861C1[] = {
  ABISELECT(288,160),
  ABISELECT(288,160),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C188S19861C98S19861C88S19861C7__A4__8S19861C1[] = {
  0,
  ABISELECT(-288,-160),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn408_N9S19861C18D1Ev,_ZThn232_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn408_N9S19861C18D0Ev,_ZThn232_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-408,-232),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-408,-232),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__A1__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  0,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,164),
  ABISELECT(368,204),
  ABISELECT(296,168),
  ABISELECT(-16,-12),
  ABISELECT(320,180),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn312_N9S19861C18D1Ev,_ZThn180_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn312_N9S19861C18D0Ev,_ZThn180_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-312,-180),
  ABISELECT(24,12),
  ABISELECT(-312,-180),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn336_N9S19861C18D1Ev,_ZThn192_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn336_N9S19861C18D0Ev,_ZThn192_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-336,-192),
  ABISELECT(-336,-192),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C9D1Ev,_ZThn232_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C9D0Ev,_ZThn232_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn440_N8S19861C9D1Ev,_ZThn252_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn440_N8S19861C9D0Ev,_ZThn252_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-440,-252),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__A1__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(328,188),
  ABISELECT(408,228),
  ABISELECT(408,228),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C18__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(336,192),
  ABISELECT(312,180),
  ABISELECT(-64,-40),
  ABISELECT(408,232),
  ABISELECT(304,176),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn472_N8S19861C9D1Ev,_ZThn272_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn472_N8S19861C9D0Ev,_ZThn272_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-472,-272),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C18__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,164),
  ABISELECT(368,204),
  ABISELECT(296,168),
  ABISELECT(-80,-52),
  ABISELECT(320,180),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn376_N8S19861C9D1Ev,_ZThn220_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn376_N8S19861C9D0Ev,_ZThn220_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-376,-220),
  ABISELECT(24,12),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C18__A4__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn496_N8S19861C9D1Ev,_ZThn280_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn496_N8S19861C9D0Ev,_ZThn280_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  ABISELECT(-496,-280),
  ABISELECT(-96,-48),
  ABISELECT(-496,-280),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C98S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C8D1Ev,_ZTvn4_n28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C8D0Ev,_ZTvn4_n28_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C8D1Ev,_ZTvn4_n28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C8D0Ev,_ZTvn4_n28_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C8D1Ev,_ZThn232_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C8D0Ev,_ZThn232_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn440_N8S19861C8D1Ev,_ZThn252_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn440_N8S19861C8D0Ev,_ZThn252_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-440,-252),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C8D1Ev,_ZThn28_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C8D0Ev,_ZThn28_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C9__A1__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(328,188),
  ABISELECT(408,228),
  ABISELECT(408,228),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C8D1Ev,_ZThn28_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C8D0Ev,_ZThn28_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C8D1Ev,_ZThn40_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C8D0Ev,_ZThn40_N8S19861C8D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C9__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(336,192),
  ABISELECT(312,180),
  ABISELECT(-64,-40),
  ABISELECT(408,232),
  ABISELECT(304,176),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C8D1Ev,_ZThn40_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C8D0Ev,_ZThn40_N8S19861C8D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn472_N8S19861C8D1Ev,_ZThn272_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn472_N8S19861C8D0Ev,_ZThn272_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-472,-272),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C8D1Ev,_ZThn52_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C8D0Ev,_ZThn52_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C9__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,164),
  ABISELECT(368,204),
  ABISELECT(296,168),
  ABISELECT(-80,-52),
  ABISELECT(320,180),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn376_N8S19861C8D1Ev,_ZThn220_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn376_N8S19861C8D0Ev,_ZThn220_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-376,-220),
  ABISELECT(24,12),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C8D1Ev,_ZThn84_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C8D0Ev,_ZThn84_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C8D1Ev,_ZThn84_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C8D0Ev,_ZThn84_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C8D1Ev,_ZThn96_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C8D0Ev,_ZThn96_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C9__A4__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C8D1Ev,_ZThn96_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C8D0Ev,_ZThn96_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZThn496_N8S19861C8D1Ev,_ZThn280_N8S19861C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev)();
extern void ABISELECT(_ZThn496_N8S19861C8D0Ev,_ZThn280_N8S19861C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  ABISELECT(-496,-280),
  ABISELECT(-96,-48),
  ABISELECT(-496,-280),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C8D1Ev,_ZTvn16_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C8D0Ev,_ZTvn16_n16_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C8D1Ev,_ZTvn16_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C8D0Ev,_ZTvn16_n16_N8S19861C8D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C8D1Ev,_ZTvn32_n16_N8S19861C8D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C8D0Ev,_ZTvn32_n16_N8S19861C8D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C88S19861C7__8S19861C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI8S19861C8[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C8D1Ev,_ZTvn32_n16_N8S19861C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C8D0Ev,_ZTvn32_n16_N8S19861C8D0Ev),
};
extern void _ZN8S19861C9D1Ev();
extern void _ZN8S19861C9D0Ev();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(320,180),
  ABISELECT(200,120),
  ABISELECT(-176,-100),
  ABISELECT(296,172),
  ABISELECT(256,148),
  ABISELECT(264,152),
  ABISELECT(272,156),
  ABISELECT(192,116),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN8S19861C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN9S19861C12D1Ev();
extern void _ZN9S19861C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C128S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(264,152),
  ABISELECT(272,156),
  ABISELECT(192,116),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C12D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C12D0Ev,
};
extern void _ZN9S19861C14D1Ev();
extern void _ZN9S19861C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C149S19861C128S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(192,116),
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&_ZN9S19861C14D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C14D0Ev,
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C59S19861C149S19861C128S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(224,132),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn224_N8S19861C5D1Ev,_ZThn132_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn224_N8S19861C5D0Ev,_ZThn132_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev)();
extern void ABISELECT(_ZThn224_N9S19861C14D1Ev,_ZThn132_N9S19861C14D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev)();
extern void ABISELECT(_ZThn224_N9S19861C14D0Ev,_ZThn132_N9S19861C14D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19861C14[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D1Ev,_ZTvn4_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N9S19861C12D0Ev,_ZTvn4_n28_N9S19861C12D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn224_N9S19861C12D1Ev,_ZThn132_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn224_N9S19861C12D0Ev,_ZThn132_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C128S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev)();
extern void ABISELECT(_ZThn264_N9S19861C12D1Ev,_ZThn152_N9S19861C12D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev)();
extern void ABISELECT(_ZThn264_N9S19861C12D0Ev,_ZThn152_N9S19861C12D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__9S19861C128S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-264,-152),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI9S19861C12[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C98S19861C7__A5__8S19861C1[] = {
  ABISELECT(152,88),
  ABISELECT(232,128),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C168S19861C98S19861C7__A6__8S19861C1[] = {
  ABISELECT(232,128),
  ABISELECT(232,128),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C168S19861C98S19861C7__A6__8S19861C1[] = {
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C168S19861C98S19861C7__A5__8S19861C1[] = {
  0,
  ABISELECT(-232,-128),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C18D1Ev();
extern void _ZN9S19861C18D0Ev();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(160,92),
  ABISELECT(136,80),
  ABISELECT(-240,-140),
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(208,116),
  ABISELECT(208,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C18D0Ev,
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C188S19861C98S19861C7__A6__8S19861C1[] = {
  ABISELECT(128,76),
  ABISELECT(208,116),
  ABISELECT(208,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C188S19861C98S19861C7__A7__8S19861C1[] = {
  ABISELECT(208,116),
  ABISELECT(208,116),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C98S19861C7__A7__8S19861C1[] = {
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C188S19861C98S19861C7__A6__8S19861C1[] = {
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(112,64),
  ABISELECT(192,104),
  ABISELECT(120,68),
  0,
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(192,104),
  ABISELECT(120,68),
  0,
  ABISELECT(144,80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn120_N9S19861C21D1Ev,_ZThn68_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn120_N9S19861C21D0Ev,_ZThn68_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(24,12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZThn144_N9S19861C21D1Ev,_ZThn80_N9S19861C21D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
extern void ABISELECT(_ZThn144_N9S19861C21D0Ev,_ZThn80_N9S19861C21D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C7__A7__8S19861C1[] = {
  ABISELECT(48,32),
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C7__A8__8S19861C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C7__A8__8S19861C1[] = {
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C98S19861C7__A7__8S19861C1[] = {
  0,
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn120_N9S19861C20D1Ev,_ZThn68_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn120_N9S19861C20D0Ev,_ZThn68_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(-120,-68),
  ABISELECT(24,12),
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn144_N9S19861C20D1Ev,_ZThn80_N9S19861C20D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
extern void ABISELECT(_ZThn144_N9S19861C20D0Ev,_ZThn80_N9S19861C20D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(-144,-80),
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  0,
  ABISELECT(-192,-104),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[] = {
  ABISELECT(48,32),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C98S19861C7__A9__8S19861C1[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C188S19861C98S19861C7__A9__8S19861C1[] = {
  0,
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn232_N9S19861C18D1Ev,_ZThn132_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn232_N9S19861C18D0Ev,_ZThn132_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-232,-132),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-232,-132),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__A1__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  0,
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(112,64),
  ABISELECT(192,104),
  ABISELECT(120,68),
  ABISELECT(-16,-12),
  ABISELECT(144,80),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn136_N9S19861C18D1Ev,_ZThn80_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn136_N9S19861C18D0Ev,_ZThn80_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-136,-80),
  ABISELECT(24,12),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn160_N9S19861C18D1Ev,_ZThn92_N9S19861C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev)();
extern void ABISELECT(_ZThn160_N9S19861C18D0Ev,_ZThn92_N9S19861C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(48,32),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D1Ev,_ZThn44_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N9S19861C18D0Ev,_ZThn44_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev)();
extern void ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C17__A2__9S19861C188S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI9S19861C18[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D1Ev,_ZThn56_N9S19861C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn96_N9S19861C18D0Ev,_ZThn56_N9S19861C18D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D1Ev,_ZTvn4_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C9D0Ev,_ZTvn4_n28_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn224_N8S19861C9D1Ev,_ZThn132_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn224_N8S19861C9D0Ev,_ZThn132_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-224,-132),
  ABISELECT(-224,-132),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn264_N8S19861C9D1Ev,_ZThn152_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn264_N8S19861C9D0Ev,_ZThn152_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-264,-152),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-264,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__A1__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(152,88),
  ABISELECT(232,128),
  ABISELECT(232,128),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D1Ev,_ZThn28_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C9D0Ev,_ZThn28_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C18__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(160,92),
  ABISELECT(136,80),
  ABISELECT(-240,-140),
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D1Ev,_ZThn40_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C9D0Ev,_ZThn40_N8S19861C9D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn296_N8S19861C9D1Ev,_ZThn172_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn296_N8S19861C9D0Ev,_ZThn172_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-296,-172),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-296,-172),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C18__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(112,64),
  ABISELECT(192,104),
  ABISELECT(120,68),
  ABISELECT(-80,-52),
  ABISELECT(144,80),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn200_N8S19861C9D1Ev,_ZThn120_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn200_N8S19861C9D0Ev,_ZThn120_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-200,-120),
  ABISELECT(24,12),
  ABISELECT(-200,-120),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(48,32),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D1Ev,_ZThn84_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C9D0Ev,_ZThn84_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C18__A4__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D1Ev,_ZThn96_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C9D0Ev,_ZThn96_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZThn320_N8S19861C9D1Ev,_ZThn180_N8S19861C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev)();
extern void ABISELECT(_ZThn320_N8S19861C9D0Ev,_ZThn180_N8S19861C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  ABISELECT(-320,-180),
  ABISELECT(-96,-48),
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-352,-196),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D1Ev,_ZTvn16_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C9D0Ev,_ZTvn16_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C98S19861C7__A1__8S19861C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-384,-212),
  (VTBL_ENTRY)&(_ZTI8S19861C9[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D1Ev,_ZTvn32_n16_N8S19861C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C9D0Ev,_ZTvn32_n16_N8S19861C9D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19861C7D1Ev,_ZTvn4_n28_N8S19861C7D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19861C7D0Ev,_ZTvn4_n28_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C7__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-448,-256),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C7D1Ev,_ZTvn4_n28_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19861C7D0Ev,_ZTvn4_n28_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C7D1Ev,_ZTv0_n12_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn400_N8S19861C7D1Ev,_ZThn232_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C7D0Ev,_ZTv0_n12_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn400_N8S19861C7D0Ev,_ZThn232_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C7__8S19861C1[] = {
  ABISELECT(-400,-232),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C7D1Ev,_ZTv0_n12_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C7D0Ev,_ZTv0_n12_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19861C7D1Ev,_ZTv0_n28_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn440_N8S19861C7D1Ev,_ZThn252_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19861C7D0Ev,_ZTv0_n28_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn440_N8S19861C7D0Ev,_ZThn252_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C7__8S19861C1[] = {
  ABISELECT(-440,-252),
  0,
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  ABISELECT(-440,-252),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C7D1Ev,_ZTv0_n28_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19861C7D0Ev,_ZTv0_n28_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn40_N8S19861C7D1Ev,_ZThn28_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn40_N8S19861C7D0Ev,_ZThn28_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C98S19861C8__A1__8S19861C7__8S19861C1[] = {
  ABISELECT(328,188),
  ABISELECT(408,228),
  ABISELECT(408,228),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C7D1Ev,_ZThn28_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn40_N8S19861C7D0Ev,_ZThn28_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N8S19861C7D1Ev,_ZThn40_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn64_N8S19861C7D0Ev,_ZThn40_N8S19861C7D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C98S19861C8__8S19861C7__8S19861C1[] = {
  ABISELECT(336,192),
  ABISELECT(312,180),
  ABISELECT(-64,-40),
  ABISELECT(408,232),
  ABISELECT(304,176),
  ABISELECT(384,216),
  ABISELECT(384,216),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C7D1Ev,_ZThn40_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N8S19861C7D0Ev,_ZThn40_N8S19861C7D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S19861C7D1Ev,_ZTv0_n20_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn472_N8S19861C7D1Ev,_ZThn272_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19861C7D0Ev,_ZTv0_n20_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn472_N8S19861C7D0Ev,_ZThn272_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C7__8S19861C1[] = {
  ABISELECT(-472,-272),
  0,
  ABISELECT(-472,-272),
  ABISELECT(-472,-272),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C7D1Ev,_ZTv0_n20_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19861C7D0Ev,_ZTv0_n20_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn80_N8S19861C7D1Ev,_ZThn52_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn80_N8S19861C7D0Ev,_ZThn52_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C98S19861C8__8S19861C7__8S19861C1[] = {
  ABISELECT(288,164),
  ABISELECT(368,204),
  ABISELECT(296,168),
  ABISELECT(-80,-52),
  ABISELECT(320,180),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn376_N8S19861C7D1Ev,_ZThn220_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn376_N8S19861C7D0Ev,_ZThn220_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C5__A1__8S19861C7__8S19861C1[] = {
  ABISELECT(-376,-220),
  ABISELECT(24,12),
  ABISELECT(-376,-220),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn144_N8S19861C7D1Ev,_ZThn84_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn144_N8S19861C7D0Ev,_ZThn84_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7__8S19861C1[] = {
  ABISELECT(224,132),
  ABISELECT(304,172),
  ABISELECT(304,172),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C7D1Ev,_ZThn84_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N8S19861C7D0Ev,_ZThn84_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn160_N8S19861C7D1Ev,_ZThn96_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn160_N8S19861C7D0Ev,_ZThn96_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C98S19861C8__A4__8S19861C7__8S19861C1[] = {
  ABISELECT(288,160),
  ABISELECT(288,160),
  ABISELECT(-160,-96),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C7D1Ev,_ZThn96_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N8S19861C7D0Ev,_ZThn96_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn496_N8S19861C7D1Ev,_ZThn280_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn496_N8S19861C7D0Ev,_ZThn280_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C7__8S19861C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  ABISELECT(-496,-280),
  ABISELECT(-96,-48),
  ABISELECT(-496,-280),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N8S19861C7D1Ev,_ZTvn16_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N8S19861C7D0Ev,_ZTvn16_n16_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C7__8S19861C1[] = {
  ABISELECT(-528,-296),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C7D1Ev,_ZTvn16_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N8S19861C7D0Ev,_ZTvn16_n16_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZTvn64_n32_N8S19861C7D1Ev,_ZTvn32_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N8S19861C7D0Ev,_ZTvn32_n16_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C7__8S19861C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-560,-312),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C7D1Ev,_ZTvn32_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N8S19861C7D0Ev,_ZTvn32_n16_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZThn176_N8S19861C7D1Ev,_ZThn100_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn176_N8S19861C7D0Ev,_ZThn100_N8S19861C7D0Ev)();
extern void _ZN8S19861C92v3Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C9__A1__8S19861C7__8S19861C1[] = {
  ABISELECT(320,180),
  ABISELECT(200,120),
  ABISELECT(-176,-100),
  ABISELECT(296,172),
  ABISELECT(256,148),
  ABISELECT(264,152),
  ABISELECT(272,156),
  ABISELECT(192,116),
  ABISELECT(224,132),
  ABISELECT(-176,-100),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19861C7D1Ev,_ZThn100_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn176_N8S19861C7D0Ev,_ZThn100_N8S19861C7D0Ev),
  (VTBL_ENTRY)&_ZN8S19861C92v3Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn216_N8S19861C7D1Ev,_ZThn128_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn216_N8S19861C7D0Ev,_ZThn128_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C168S19861C9__A5__8S19861C7__8S19861C1[] = {
  ABISELECT(152,88),
  ABISELECT(232,128),
  ABISELECT(232,128),
  ABISELECT(-216,-128),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S19861C7D1Ev,_ZThn128_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn216_N8S19861C7D0Ev,_ZThn128_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn240_N8S19861C7D1Ev,_ZThn140_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn240_N8S19861C7D0Ev,_ZThn140_N8S19861C7D0Ev)();
extern void _ZN9S19861C182v2Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C188S19861C9__A1__8S19861C7__8S19861C1[] = {
  ABISELECT(160,92),
  ABISELECT(136,80),
  ABISELECT(-240,-140),
  ABISELECT(232,132),
  ABISELECT(128,76),
  ABISELECT(208,116),
  ABISELECT(208,116),
  ABISELECT(-240,-140),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S19861C7D1Ev,_ZThn140_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N8S19861C7D0Ev,_ZThn140_N8S19861C7D0Ev),
  (VTBL_ENTRY)&_ZN9S19861C182v2Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn256_N8S19861C7D1Ev,_ZThn152_N8S19861C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev)();
extern void ABISELECT(_ZThn256_N8S19861C7D0Ev,_ZThn152_N8S19861C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C209S19861C188S19861C9__A2__8S19861C7__8S19861C1[] = {
  ABISELECT(112,64),
  ABISELECT(192,104),
  ABISELECT(120,68),
  ABISELECT(-256,-152),
  ABISELECT(144,80),
  ABISELECT(-256,-152),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn320_N8S19861C7D1Ev,_ZThn184_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn320_N8S19861C7D0Ev,_ZThn184_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A7__8S19861C7__8S19861C1[] = {
  ABISELECT(48,32),
  ABISELECT(128,72),
  ABISELECT(128,72),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19861C7D1Ev,_ZThn184_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn320_N8S19861C7D0Ev,_ZThn184_N8S19861C7D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn336_N8S19861C7D1Ev,_ZThn196_N8S19861C7D1Ev)();
extern void ABISELECT(_ZThn336_N8S19861C7D0Ev,_ZThn196_N8S19861C7D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C188S19861C9__A9__8S19861C7__8S19861C1[] = {
  ABISELECT(112,60),
  ABISELECT(112,60),
  ABISELECT(-336,-196),
  (VTBL_ENTRY)&(_ZTI8S19861C7[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19861C7D1Ev,_ZThn196_N8S19861C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn336_N8S19861C7D0Ev,_ZThn196_N8S19861C7D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S19861C3D1Ev,_ZTv0_n16_N8S19861C3D1Ev)();
extern void _ZN8S19861C3D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19861C3D0Ev,_ZTv0_n16_N8S19861C3D0Ev)();
extern void _ZN8S19861C3D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19861C3__8S19861C1[] = {
  ABISELECT(-8,-4),
  0,
  0,
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C3D1Ev,_ZTv0_n16_N8S19861C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19861C3D0Ev,_ZTv0_n16_N8S19861C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S19861C3D1Ev,_ZTv0_n12_N8S19861C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S19861C3D1Ev,_ZThn12_N8S19861C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C3D0Ev,_ZTv0_n12_N8S19861C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S19861C3D0Ev,_ZThn12_N8S19861C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C3__8S19861C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C3D1Ev,_ZTv0_n12_N8S19861C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C3D0Ev,_ZTv0_n12_N8S19861C3D0Ev),
};
extern void _ZN8S19861C5D1Ev();
extern void _ZN8S19861C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19861C5__8S19861C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&_ZN8S19861C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19861C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S19861C5D1Ev,_ZThn12_N8S19861C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S19861C5D0Ev,_ZThn12_N8S19861C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19861C5__8S19861C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19861C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C15D1Ev();
extern void _ZN9S19861C15D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C15__8S19861C1[] = {
  ABISELECT(-72,-36),
  ABISELECT(8,4),
  ABISELECT(-40,-20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C15D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C15__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C15__8S19861C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C15__8S19861C1[] = {
  ABISELECT(40,20),
  ABISELECT(40,20),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D1Ev,_ZTv0_n12_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C15D0Ev,_ZTv0_n12_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev)();
extern void ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C15__8S19861C1[] = {
  ABISELECT(-80,-40),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19861C15[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D1Ev,_ZThn4_N9S19861C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N9S19861C15D0Ev,_ZThn4_N9S19861C15D0Ev),
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C19D1Ev();
extern void _ZN9S19861C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C19__8S19861C1[] = {
  ABISELECT(-472,-272),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C19[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C19D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void _ZN9S19861C20D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
extern void _ZN9S19861C20D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C20__A1__8S19861C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void _ZN9S19861C21D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
extern void _ZN9S19861C21D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19861C219S19861C20__A1__8S19861C1[] = {
  ABISELECT(-48,-24),
  ABISELECT(-120,-60),
  0,
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C1[] = {
  ABISELECT(120,60),
  ABISELECT(24,12),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C1[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19861C21[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C16D1Ev();
extern void _ZN9S19861C16D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C169S19861C20__A4__8S19861C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C16D0Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void _ZN9S19861C17D1Ev();
extern void _ZN9S19861C17D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C1[] = {
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D1Ev,
  (VTBL_ENTRY)&_ZN9S19861C17D0Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C1[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19861C17[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C1[] = {
  0,
  ABISELECT(112,56),
  (VTBL_ENTRY)&(_ZTI9S19861C16[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19861C5__9S19861C20__A1__8S19861C1[] = {
  ABISELECT(120,60),
  ABISELECT(24,12),
  ABISELECT(120,60),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev)();
extern void ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C1[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev),
};
extern void _ZN9S19861C132v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19861C13__9S19861C20__A1__8S19861C1[] = {
  0,
  ABISELECT(48,24),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
};
extern void _ZN9S19861C132v1Ev();
extern void ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev)();
extern void ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev)();
static  VTBL_ENTRY _tg__ZTV9S19861C16__9S19861C20__A1__8S19861C1[] = {
  ABISELECT(-192,-96),
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19861C20[0]),
  (VTBL_ENTRY)&_ZN9S19861C132v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D1Ev,_ZThn32_N9S19861C20D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N9S19861C20D0Ev,_ZThn32_N9S19861C20D0Ev),
};
static  VTT_ENTRY vtt_S19861C1[] = {
  {&(_ZTV8S19861C1[12]),  12,197},
  {&(_tg__ZTV8S19861C7__8S19861C1[11]),  11,14},
  {&(_tg__ZTV8S19861C88S19861C7__8S19861C1[11]),  11,14},
  {&(_tg__ZTV8S19861C98S19861C88S19861C7__8S19861C1[11]),  11,14},
  {&(_tg__ZTV9S19861C128S19861C98S19861C88S19861C7__8S19861C1[6]),  6,8},
  {&(_tg__ZTV9S19861C149S19861C128S19861C98S19861C88S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C149S19861C128S19861C98S19861C88S19861C7__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C98S19861C88S19861C7__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C98S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C168S19861C98S19861C88S19861C7__A1__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C188S19861C98S19861C88S19861C7__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C188S19861C98S19861C88S19861C7__A2__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C98S19861C88S19861C7__A3__8S19861C1[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C209S19861C188S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C98S19861C88S19861C7__A4__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C188S19861C98S19861C88S19861C7__A4__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C19__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C13__A1__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV8S19861C5__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C188S19861C98S19861C88S19861C7__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C98S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C98S19861C88S19861C7__8S19861C1[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C16__A1__8S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C18__8S19861C98S19861C88S19861C7__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C98S19861C88S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV8S19861C5__A1__8S19861C98S19861C88S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C18__A4__8S19861C98S19861C88S19861C7__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C98S19861C88S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C98S19861C88S19861C7__8S19861C1[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C98S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C88S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C88S19861C7__8S19861C1[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C9__A1__8S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C188S19861C9__8S19861C88S19861C7__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__8S19861C88S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV8S19861C5__A1__8S19861C88S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A3__8S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C9__A4__8S19861C88S19861C7__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C88S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C88S19861C7__8S19861C1[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C88S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV8S19861C98S19861C7__A1__8S19861C1[11]),  11,14},
  {&(_tg__ZTV9S19861C128S19861C98S19861C7__A1__8S19861C1[6]),  6,8},
  {&(_tg__ZTV9S19861C149S19861C128S19861C98S19861C7__A1__8S19861C1[4]),  4,6},
  {&(_tg__ZTV8S19861C59S19861C149S19861C128S19861C98S19861C7__A2__8S19861C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C59S19861C149S19861C128S19861C98S19861C7__A2__8S19861C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__9S19861C149S19861C128S19861C98S19861C7__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C128S19861C98S19861C7__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__9S19861C128S19861C98S19861C7__A1__8S19861C1[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__9S19861C128S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C98S19861C7__A5__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C168S19861C98S19861C7__A6__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C168S19861C98S19861C7__A6__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C168S19861C98S19861C7__A5__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C188S19861C98S19861C7__A1__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C169S19861C188S19861C98S19861C7__A6__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C188S19861C98S19861C7__A7__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C188S19861C98S19861C7__A7__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C188S19861C98S19861C7__A6__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C7__A7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C7__A8__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C209S19861C188S19861C98S19861C7__A8__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C209S19861C188S19861C98S19861C7__A7__8S19861C1[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C209S19861C188S19861C98S19861C7__A2__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C98S19861C7__A9__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C188S19861C98S19861C7__A9__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C19__9S19861C188S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C13__A1__9S19861C188S19861C98S19861C7__A1__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C20__9S19861C188S19861C98S19861C7__A1__8S19861C1[7]),  7,9},
  {&(_tg__ZTV8S19861C5__9S19861C188S19861C98S19861C7__A1__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C188S19861C98S19861C7__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C169S19861C20__A1__9S19861C188S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C17__A2__9S19861C188S19861C98S19861C7__A1__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C98S19861C7__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C98S19861C7__A1__8S19861C1[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C16__A1__8S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C18__8S19861C98S19861C7__A1__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C18__8S19861C98S19861C7__A1__8S19861C1[7]),  7,9},
  {&(_tg__ZTV8S19861C5__A1__8S19861C98S19861C7__A1__8S19861C1[4]),  4,6},
  {&(_tg__ZTV9S19861C169S19861C209S19861C18__A3__8S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C18__A4__8S19861C98S19861C7__A1__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C98S19861C7__A1__8S19861C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C98S19861C7__A1__8S19861C1[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C98S19861C7__A1__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C7__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C7__8S19861C1[7]),  7,10},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C168S19861C98S19861C8__A1__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C188S19861C98S19861C8__8S19861C7__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C19__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C209S19861C188S19861C98S19861C8__8S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV8S19861C5__A1__8S19861C7__8S19861C1[4]),  4,6},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C98S19861C8__A3__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C98S19861C8__A4__8S19861C7__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C20__A1__8S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt9S19861C20__A2__8S19861C7__8S19861C1[2]),  2,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV8S19861C9__A1__8S19861C7__8S19861C1[11]),  11,14},
  {&(_tg__ZTV9S19861C168S19861C9__A5__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C188S19861C9__A1__8S19861C7__8S19861C1[9]),  9,13},
  {&(_tg__ZTV9S19861C209S19861C188S19861C9__A2__8S19861C7__8S19861C1[7]),  7,9},
  {&(_tg__ZTV9S19861C169S19861C209S19861C188S19861C9__A7__8S19861C7__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C188S19861C9__A9__8S19861C7__8S19861C1[4]),  4,7},
  {&(_ZTV8S19861C1[143]),  143,197},
  {&(_ZTV8S19861C1[143]),  143,197},
  {&(_ZTV8S19861C1[148]),  148,197},
  {&(_ZTV8S19861C1[165]),  165,197},
  {&(_ZTV8S19861C1[157]),  157,197},
  {&(_ZTV8S19861C1[165]),  165,197},
  {&(_ZTV8S19861C1[23]),  23,197},
  {&(_ZTV8S19861C1[35]),  35,197},
  {&(_ZTV8S19861C1[173]),  173,197},
  {&(_ZTV8S19861C1[46]),  46,197},
  {&(_ZTV8S19861C1[57]),  57,197},
  {&(_ZTV8S19861C1[64]),  64,197},
  {&(_ZTV8S19861C1[183]),  183,197},
  {&(_ZTV8S19861C1[187]),  187,197},
  {&(_ZTV8S19861C1[194]),  194,197},
  {&(_ZTV8S19861C1[78]),  78,197},
  {&(_ZTV8S19861C1[89]),  89,197},
  {&(_ZTV8S19861C1[101]),  101,197},
  {&(_ZTV8S19861C1[112]),  112,197},
  {&(_ZTV8S19861C1[123]),  123,197},
  {&(_ZTV8S19861C1[130]),  130,197},
  {&(_tg__ZTV8S19861C3__8S19861C1[6]),  6,8},
  {&(_tg__ZTV8S19861C3__8S19861C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S19861C3__8S19861C1[3]),  3,5},
  {&(_tg__ZTV8S19861C5__8S19861C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S19861C5__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C15__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C179S19861C169S19861C15__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C169S19861C15__8S19861C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt__9S19861C15__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C16__9S19861C15__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C19__8S19861C1[3]),  3,6},
  {&(_tg__ZTV9S19861C20__A1__8S19861C1[7]),  7,9},
  {&(_tg__ZTV9S19861C219S19861C20__A1__8S19861C1[6]),  6,8},
  {&(_tg__ZTV8S19861C5__9S19861C219S19861C20__A1__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C219S19861C20__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C219S19861C20__A1__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C169S19861C20__A4__8S19861C1[5]),  5,8},
  {&(_tg__ZTV9S19861C179S19861C169S19861C20__A5__8S19861C1[4]),  4,7},
  {&(_tg__ZTV9S19861C13__9S19861C179S19861C169S19861C20__A5__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C13__9S19861C169S19861C20__A4__8S19861C1[3]),  3,4},
  {&(_tg__ZTV8S19861C5__9S19861C20__A1__8S19861C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__9S19861C20__A1__8S19861C1[3]),  3,5},
  {&(_tg__ZTV9S19861C13__9S19861C20__A1__8S19861C1[3]),  3,4},
  {&(_tg__ZTV9S19861C16__9S19861C20__A1__8S19861C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19861C1[];
extern  VTBL_ENTRY _ZTV8S19861C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19861C1[];
static VTBL_ENTRY alt_thunk_names68[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C3D0Ev,_ZTv0_n12_N8S19861C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19861C3D0Ev,_ZThn12_N8S19861C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C3D1Ev,_ZTv0_n12_N8S19861C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19861C3D1Ev,_ZThn12_N8S19861C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C3D0Ev,_ZTv0_n16_N8S19861C3D0Ev), // 
  (VTBL_ENTRY)_ZN8S19861C3D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C3D1Ev,_ZTv0_n16_N8S19861C3D1Ev), // 
  (VTBL_ENTRY)_ZN8S19861C3D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C7D0Ev,_ZTv0_n16_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C7D0Ev,_ZThn152_N8S19861C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C7D0Ev,_ZThn280_N8S19861C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C7D0Ev,_ZThn220_N8S19861C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C7D0Ev,_ZThn52_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C7D1Ev,_ZTv0_n16_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C7D1Ev,_ZThn152_N8S19861C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C7D1Ev,_ZThn280_N8S19861C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C7D1Ev,_ZThn220_N8S19861C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C7D1Ev,_ZThn52_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C7D0Ev,_ZTv0_n20_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C7D0Ev,_ZThn272_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C7D1Ev,_ZTv0_n20_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C7D1Ev,_ZThn272_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C7D0Ev,_ZTv0_n28_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C7D0Ev,_ZThn252_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C7D1Ev,_ZTv0_n28_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C7D1Ev,_ZThn252_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C7D0Ev,_ZTv0_n12_N8S19861C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C7D0Ev,_ZThn232_N8S19861C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C7D1Ev,_ZTv0_n12_N8S19861C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C7D1Ev,_ZThn232_N8S19861C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C8D0Ev,_ZTv0_n16_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C8D0Ev,_ZThn280_N8S19861C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C8D0Ev,_ZThn220_N8S19861C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C8D0Ev,_ZThn52_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C8D1Ev,_ZTv0_n16_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C8D1Ev,_ZThn280_N8S19861C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C8D1Ev,_ZThn220_N8S19861C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C8D1Ev,_ZThn52_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C8D0Ev,_ZTv0_n20_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C8D0Ev,_ZThn272_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C8D1Ev,_ZTv0_n20_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C8D1Ev,_ZThn272_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C8D0Ev,_ZTv0_n28_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C8D0Ev,_ZThn252_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C8D1Ev,_ZTv0_n28_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C8D1Ev,_ZThn252_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C8D0Ev,_ZTv0_n12_N8S19861C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C8D0Ev,_ZThn232_N8S19861C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C8D1Ev,_ZTv0_n12_N8S19861C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C8D1Ev,_ZThn232_N8S19861C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D0Ev,_ZTv0_n16_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19861C9D0Ev,_ZThn180_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19861C9D0Ev,_ZThn120_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C9D0Ev,_ZThn280_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C9D0Ev,_ZThn220_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D0Ev,_ZThn52_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C9D1Ev,_ZTv0_n16_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N8S19861C9D1Ev,_ZThn180_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S19861C9D1Ev,_ZThn120_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C9D1Ev,_ZThn280_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C9D1Ev,_ZThn220_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C9D1Ev,_ZThn52_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D0Ev,_ZTv0_n20_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S19861C9D0Ev,_ZThn172_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C9D0Ev,_ZThn272_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C9D1Ev,_ZTv0_n20_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn296_N8S19861C9D1Ev,_ZThn172_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C9D1Ev,_ZThn272_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D0Ev,_ZTv0_n28_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19861C9D0Ev,_ZThn152_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C9D0Ev,_ZThn252_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C9D1Ev,_ZTv0_n28_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N8S19861C9D1Ev,_ZThn152_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C9D1Ev,_ZThn252_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D0Ev,_ZTv0_n12_N8S19861C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19861C9D0Ev,_ZThn132_N8S19861C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C9D0Ev,_ZThn232_N8S19861C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C9D1Ev,_ZTv0_n12_N8S19861C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19861C9D1Ev,_ZThn132_N8S19861C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C9D1Ev,_ZThn232_N8S19861C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D0Ev,_ZTv0_n12_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19861C18D0Ev,_ZThn92_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19861C18D0Ev,_ZThn192_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C18D1Ev,_ZTv0_n12_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N9S19861C18D1Ev,_ZThn92_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn336_N9S19861C18D1Ev,_ZThn192_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D0Ev,_ZTv0_n16_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19861C18D0Ev,_ZThn80_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19861C18D0Ev,_ZThn180_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D0Ev,_ZThn12_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C18D1Ev,_ZTv0_n16_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N9S19861C18D1Ev,_ZThn80_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn312_N9S19861C18D1Ev,_ZThn180_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn16_N9S19861C18D1Ev,_ZThn12_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D0Ev,_ZTv0_n20_N9S19861C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19861C18D0Ev,_ZThn132_N9S19861C18D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19861C18D0Ev,_ZThn232_N9S19861C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N9S19861C18D1Ev,_ZTv0_n20_N9S19861C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn232_N9S19861C18D1Ev,_ZThn132_N9S19861C18D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn408_N9S19861C18D1Ev,_ZThn232_N9S19861C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D0Ev,_ZTv0_n12_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19861C20D0Ev,_ZThn80_N9S19861C20D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19861C20D0Ev,_ZThn180_N9S19861C20D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C20D1Ev,_ZTv0_n12_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19861C20D1Ev,_ZThn80_N9S19861C20D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19861C20D1Ev,_ZThn180_N9S19861C20D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D0Ev,_ZTv0_n12_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19861C21D0Ev,_ZThn80_N9S19861C21D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19861C21D0Ev,_ZThn180_N9S19861C21D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C21D1Ev,_ZTv0_n12_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N9S19861C21D1Ev,_ZThn80_N9S19861C21D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N9S19861C21D1Ev,_ZThn180_N9S19861C21D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D0Ev,_ZTv0_n16_N9S19861C21D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19861C21D0Ev,_ZThn68_N9S19861C21D0Ev),
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S19861C21D0Ev,_ZThn168_N9S19861C21D0Ev),
  (VTBL_ENTRY)_ZN9S19861C21D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C21D1Ev,_ZTv0_n16_N9S19861C21D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19861C21D1Ev,_ZThn68_N9S19861C21D1Ev),
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S19861C21D1Ev,_ZThn168_N9S19861C21D1Ev),
  (VTBL_ENTRY)_ZN9S19861C21D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D0Ev,_ZTv0_n16_N9S19861C20D0Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19861C20D0Ev,_ZThn68_N9S19861C20D0Ev),
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S19861C20D0Ev,_ZThn168_N9S19861C20D0Ev),
  (VTBL_ENTRY)_ZN9S19861C20D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N9S19861C20D1Ev,_ZTv0_n16_N9S19861C20D1Ev), // 
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn120_N9S19861C20D1Ev,_ZThn68_N9S19861C20D1Ev),
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  (VTBL_ENTRY)ABISELECT(_ZThn296_N9S19861C20D1Ev,_ZThn168_N9S19861C20D1Ev),
  (VTBL_ENTRY)_ZN9S19861C20D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D0Ev,_ZTv0_n28_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19861C12D0Ev,_ZThn152_N9S19861C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19861C12D0Ev,_ZThn252_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N9S19861C12D1Ev,_ZTv0_n28_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn264_N9S19861C12D1Ev,_ZThn152_N9S19861C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn440_N9S19861C12D1Ev,_ZThn252_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D0Ev,_ZTv0_n12_N9S19861C12D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19861C12D0Ev,_ZThn132_N9S19861C12D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19861C12D0Ev,_ZThn232_N9S19861C12D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C12D1Ev,_ZTv0_n12_N9S19861C12D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19861C12D1Ev,_ZThn132_N9S19861C12D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19861C12D1Ev,_ZThn232_N9S19861C12D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D0Ev,_ZTv0_n12_N9S19861C14D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19861C14D0Ev,_ZThn132_N9S19861C14D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19861C14D0Ev,_ZThn232_N9S19861C14D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N9S19861C14D1Ev,_ZTv0_n12_N9S19861C14D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn224_N9S19861C14D1Ev,_ZThn132_N9S19861C14D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N9S19861C14D1Ev,_ZThn232_N9S19861C14D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D0Ev,_ZTv0_n12_N8S19861C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19861C5D0Ev,_ZThn12_N8S19861C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19861C5D0Ev,_ZThn132_N8S19861C5D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C5D0Ev,_ZThn232_N8S19861C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C5D1Ev,_ZTv0_n12_N8S19861C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19861C5D1Ev,_ZThn12_N8S19861C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn224_N8S19861C5D1Ev,_ZThn132_N8S19861C5D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C5D1Ev,_ZThn232_N8S19861C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C1D0Ev,_ZTv0_n20_N8S19861C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C1D0Ev,_ZThn272_N8S19861C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19861C1D1Ev,_ZTv0_n20_N8S19861C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn472_N8S19861C1D1Ev,_ZThn272_N8S19861C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C1D0Ev,_ZTv0_n28_N8S19861C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C1D0Ev,_ZThn252_N8S19861C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19861C1D1Ev,_ZTv0_n28_N8S19861C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn440_N8S19861C1D1Ev,_ZThn252_N8S19861C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C1D0Ev,_ZTv0_n12_N8S19861C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C1D0Ev,_ZThn232_N8S19861C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19861C1D1Ev,_ZTv0_n12_N8S19861C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N8S19861C1D1Ev,_ZThn232_N8S19861C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C1D0Ev,_ZTv0_n16_N8S19861C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C1D0Ev,_ZThn280_N8S19861C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C1D0Ev,_ZThn220_N8S19861C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C1D0Ev,_ZThn152_N8S19861C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C1D0Ev,_ZThn52_N8S19861C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19861C1D1Ev,_ZTv0_n16_N8S19861C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn496_N8S19861C1D1Ev,_ZThn280_N8S19861C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn376_N8S19861C1D1Ev,_ZThn220_N8S19861C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N8S19861C1D1Ev,_ZThn152_N8S19861C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19861C1D1Ev,_ZThn52_N8S19861C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19861C1 = {  "S19861C1", // class name
  bases_S19861C1, 81,
  &(vtc_S19861C1[0]), // expected_vtbl_contents
  &(vtt_S19861C1[0]), // expected_vtt_contents
  ABISELECT(576,324), // object size
  NSPAIRA(_ZTI8S19861C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19861C1),197, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19861C1),195, //virtual table table var
  50, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names68,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6960C2  {
  int s6960c2f0;
  __tsi64 s6960c2f1;
  void *s6960c2f2[4];
  int s6960c2f3[2];
  void *s6960c2f4;
  ::S1540C5_nt s6960c2f5;
  void *s6960c2f6[2];
  virtual  ~S6960C2(); // _ZN7S6960C2D1Ev
  virtual void  v5(); // _ZN7S6960C22v5Ev
  virtual void  v6(); // _ZN7S6960C22v6Ev
  virtual void  v7(); // _ZN7S6960C22v7Ev
  virtual void  v8(); // _ZN7S6960C22v8Ev
  virtual void  v9(); // _ZN7S6960C22v9Ev
  virtual void  v10(); // _ZN7S6960C23v10Ev
  virtual void  v11(); // _ZN7S6960C23v11Ev
  virtual void  v12(); // _ZN7S6960C23v12Ev
  virtual void  v13(); // _ZN7S6960C23v13Ev
  virtual void  v14(); // _ZN7S6960C23v14Ev
  virtual void  v15(); // _ZN7S6960C23v15Ev
  virtual void  v16(); // _ZN7S6960C23v16Ev
  virtual void  v17(); // _ZN7S6960C23v17Ev
  virtual void  v18(); // _ZN7S6960C23v18Ev
  virtual void  v19(); // _ZN7S6960C23v19Ev
  virtual void  v20(); // _ZN7S6960C23v20Ev
  virtual void  v21(); // _ZN7S6960C23v21Ev
  virtual void  v22(); // _ZN7S6960C23v22Ev
  virtual void  v23(); // _ZN7S6960C23v23Ev
  virtual void  v24(); // _ZN7S6960C23v24Ev
  virtual void  v25(); // _ZN7S6960C23v25Ev
  virtual void  v26(); // _ZN7S6960C23v26Ev
  virtual void  v27(); // _ZN7S6960C23v27Ev
  virtual void  v28(); // _ZN7S6960C23v28Ev
  virtual void  v29(); // _ZN7S6960C23v29Ev
  virtual void  v30(); // _ZN7S6960C23v30Ev
  virtual void  v31(); // _ZN7S6960C23v31Ev
  virtual void  v32(); // _ZN7S6960C23v32Ev
  virtual void  v33(); // _ZN7S6960C23v33Ev
  virtual void  v34(); // _ZN7S6960C23v34Ev
  virtual void  v35(); // _ZN7S6960C23v35Ev
  virtual void  v36(); // _ZN7S6960C23v36Ev
  virtual void  v37(); // _ZN7S6960C23v37Ev
  virtual void  v38(); // _ZN7S6960C23v38Ev
  virtual void  v39(); // _ZN7S6960C23v39Ev
  virtual void  v40(); // _ZN7S6960C23v40Ev
  virtual void  v41(); // _ZN7S6960C23v41Ev
  virtual void  v42(); // _ZN7S6960C23v42Ev
  virtual void  v43(); // _ZN7S6960C23v43Ev
  virtual void  v44(); // _ZN7S6960C23v44Ev
  virtual void  v45(); // _ZN7S6960C23v45Ev
  virtual void  v46(); // _ZN7S6960C23v46Ev
  virtual void  v47(); // _ZN7S6960C23v47Ev
  virtual void  v48(); // _ZN7S6960C23v48Ev
  virtual void  v49(); // _ZN7S6960C23v49Ev
  virtual void  v50(); // _ZN7S6960C23v50Ev
  virtual void  v51(); // _ZN7S6960C23v51Ev
  virtual void  v52(); // _ZN7S6960C23v52Ev
  virtual void  v53(); // _ZN7S6960C23v53Ev
  virtual void  v54(); // _ZN7S6960C23v54Ev
  virtual void  v55(); // _ZN7S6960C23v55Ev
  virtual void  v56(); // _ZN7S6960C23v56Ev
  virtual void  v57(); // _ZN7S6960C23v57Ev
  virtual void  v58(); // _ZN7S6960C23v58Ev
  virtual void  v59(); // _ZN7S6960C23v59Ev
  virtual void  v60(); // _ZN7S6960C23v60Ev
  virtual void  v61(); // _ZN7S6960C23v61Ev
  virtual void  v62(); // _ZN7S6960C23v62Ev
  virtual void  v63(); // _ZN7S6960C23v63Ev
  virtual void  v64(); // _ZN7S6960C23v64Ev
  virtual void  v65(); // _ZN7S6960C23v65Ev
  virtual void  v66(); // _ZN7S6960C23v66Ev
  virtual void  v67(); // _ZN7S6960C23v67Ev
  virtual void  v68(); // _ZN7S6960C23v68Ev
  S6960C2(); // tgen
};
//SIG(-1 S6960C2) 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]}


 S6960C2 ::~S6960C2(){ note_dtor("S6960C2", this);}
void  S6960C2 ::v5(){vfunc_called(this, "_ZN7S6960C22v5Ev");}
void  S6960C2 ::v6(){vfunc_called(this, "_ZN7S6960C22v6Ev");}
void  S6960C2 ::v7(){vfunc_called(this, "_ZN7S6960C22v7Ev");}
void  S6960C2 ::v8(){vfunc_called(this, "_ZN7S6960C22v8Ev");}
void  S6960C2 ::v9(){vfunc_called(this, "_ZN7S6960C22v9Ev");}
void  S6960C2 ::v10(){vfunc_called(this, "_ZN7S6960C23v10Ev");}
void  S6960C2 ::v11(){vfunc_called(this, "_ZN7S6960C23v11Ev");}
void  S6960C2 ::v12(){vfunc_called(this, "_ZN7S6960C23v12Ev");}
void  S6960C2 ::v13(){vfunc_called(this, "_ZN7S6960C23v13Ev");}
void  S6960C2 ::v14(){vfunc_called(this, "_ZN7S6960C23v14Ev");}
void  S6960C2 ::v15(){vfunc_called(this, "_ZN7S6960C23v15Ev");}
void  S6960C2 ::v16(){vfunc_called(this, "_ZN7S6960C23v16Ev");}
void  S6960C2 ::v17(){vfunc_called(this, "_ZN7S6960C23v17Ev");}
void  S6960C2 ::v18(){vfunc_called(this, "_ZN7S6960C23v18Ev");}
void  S6960C2 ::v19(){vfunc_called(this, "_ZN7S6960C23v19Ev");}
void  S6960C2 ::v20(){vfunc_called(this, "_ZN7S6960C23v20Ev");}
void  S6960C2 ::v21(){vfunc_called(this, "_ZN7S6960C23v21Ev");}
void  S6960C2 ::v22(){vfunc_called(this, "_ZN7S6960C23v22Ev");}
void  S6960C2 ::v23(){vfunc_called(this, "_ZN7S6960C23v23Ev");}
void  S6960C2 ::v24(){vfunc_called(this, "_ZN7S6960C23v24Ev");}
void  S6960C2 ::v25(){vfunc_called(this, "_ZN7S6960C23v25Ev");}
void  S6960C2 ::v26(){vfunc_called(this, "_ZN7S6960C23v26Ev");}
void  S6960C2 ::v27(){vfunc_called(this, "_ZN7S6960C23v27Ev");}
void  S6960C2 ::v28(){vfunc_called(this, "_ZN7S6960C23v28Ev");}
void  S6960C2 ::v29(){vfunc_called(this, "_ZN7S6960C23v29Ev");}
void  S6960C2 ::v30(){vfunc_called(this, "_ZN7S6960C23v30Ev");}
void  S6960C2 ::v31(){vfunc_called(this, "_ZN7S6960C23v31Ev");}
void  S6960C2 ::v32(){vfunc_called(this, "_ZN7S6960C23v32Ev");}
void  S6960C2 ::v33(){vfunc_called(this, "_ZN7S6960C23v33Ev");}
void  S6960C2 ::v34(){vfunc_called(this, "_ZN7S6960C23v34Ev");}
void  S6960C2 ::v35(){vfunc_called(this, "_ZN7S6960C23v35Ev");}
void  S6960C2 ::v36(){vfunc_called(this, "_ZN7S6960C23v36Ev");}
void  S6960C2 ::v37(){vfunc_called(this, "_ZN7S6960C23v37Ev");}
void  S6960C2 ::v38(){vfunc_called(this, "_ZN7S6960C23v38Ev");}
void  S6960C2 ::v39(){vfunc_called(this, "_ZN7S6960C23v39Ev");}
void  S6960C2 ::v40(){vfunc_called(this, "_ZN7S6960C23v40Ev");}
void  S6960C2 ::v41(){vfunc_called(this, "_ZN7S6960C23v41Ev");}
void  S6960C2 ::v42(){vfunc_called(this, "_ZN7S6960C23v42Ev");}
void  S6960C2 ::v43(){vfunc_called(this, "_ZN7S6960C23v43Ev");}
void  S6960C2 ::v44(){vfunc_called(this, "_ZN7S6960C23v44Ev");}
void  S6960C2 ::v45(){vfunc_called(this, "_ZN7S6960C23v45Ev");}
void  S6960C2 ::v46(){vfunc_called(this, "_ZN7S6960C23v46Ev");}
void  S6960C2 ::v47(){vfunc_called(this, "_ZN7S6960C23v47Ev");}
void  S6960C2 ::v48(){vfunc_called(this, "_ZN7S6960C23v48Ev");}
void  S6960C2 ::v49(){vfunc_called(this, "_ZN7S6960C23v49Ev");}
void  S6960C2 ::v50(){vfunc_called(this, "_ZN7S6960C23v50Ev");}
void  S6960C2 ::v51(){vfunc_called(this, "_ZN7S6960C23v51Ev");}
void  S6960C2 ::v52(){vfunc_called(this, "_ZN7S6960C23v52Ev");}
void  S6960C2 ::v53(){vfunc_called(this, "_ZN7S6960C23v53Ev");}
void  S6960C2 ::v54(){vfunc_called(this, "_ZN7S6960C23v54Ev");}
void  S6960C2 ::v55(){vfunc_called(this, "_ZN7S6960C23v55Ev");}
void  S6960C2 ::v56(){vfunc_called(this, "_ZN7S6960C23v56Ev");}
void  S6960C2 ::v57(){vfunc_called(this, "_ZN7S6960C23v57Ev");}
void  S6960C2 ::v58(){vfunc_called(this, "_ZN7S6960C23v58Ev");}
void  S6960C2 ::v59(){vfunc_called(this, "_ZN7S6960C23v59Ev");}
void  S6960C2 ::v60(){vfunc_called(this, "_ZN7S6960C23v60Ev");}
void  S6960C2 ::v61(){vfunc_called(this, "_ZN7S6960C23v61Ev");}
void  S6960C2 ::v62(){vfunc_called(this, "_ZN7S6960C23v62Ev");}
void  S6960C2 ::v63(){vfunc_called(this, "_ZN7S6960C23v63Ev");}
void  S6960C2 ::v64(){vfunc_called(this, "_ZN7S6960C23v64Ev");}
void  S6960C2 ::v65(){vfunc_called(this, "_ZN7S6960C23v65Ev");}
void  S6960C2 ::v66(){vfunc_called(this, "_ZN7S6960C23v66Ev");}
void  S6960C2 ::v67(){vfunc_called(this, "_ZN7S6960C23v67Ev");}
void  S6960C2 ::v68(){vfunc_called(this, "_ZN7S6960C23v68Ev");}
S6960C2 ::S6960C2(){ note_ctor("S6960C2", this);} // tgen

static void Test_S6960C2()
{
  extern Class_Descriptor cd_S6960C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S6960C2, buf);
    S6960C2 *dp, &lv = *(dp=new (buf) S6960C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S6960C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6960C2)");
    check_field_offset(lv, s6960c2f0, ABISELECT(8,4), "S6960C2.s6960c2f0");
    check_field_offset(lv, s6960c2f1, ABISELECT(16,8), "S6960C2.s6960c2f1");
    check_field_offset(lv, s6960c2f2, ABISELECT(24,16), "S6960C2.s6960c2f2");
    check_field_offset(lv, s6960c2f3, ABISELECT(56,32), "S6960C2.s6960c2f3");
    check_field_offset(lv, s6960c2f4, ABISELECT(64,40), "S6960C2.s6960c2f4");
    check_field_offset(lv, s6960c2f5, ABISELECT(72,44), "S6960C2.s6960c2f5");
    check_field_offset(lv, s6960c2f6, ABISELECT(80,52), "S6960C2.s6960c2f6");
    test_class_info(&lv, &cd_S6960C2);
    dp->~S6960C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6960C2(Test_S6960C2, "S6960C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S6960C2C1Ev();
extern void _ZN7S6960C2D1Ev();
Name_Map name_map_S6960C2[] = {
  NSPAIR(_ZN7S6960C2C1Ev),
  NSPAIR(_ZN7S6960C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6960C2[];
extern void _ZN7S6960C2D1Ev();
extern void _ZN7S6960C2D0Ev();
extern void _ZN7S6960C22v5Ev();
extern void _ZN7S6960C22v6Ev();
extern void _ZN7S6960C22v7Ev();
extern void _ZN7S6960C22v8Ev();
extern void _ZN7S6960C22v9Ev();
extern void _ZN7S6960C23v10Ev();
extern void _ZN7S6960C23v11Ev();
extern void _ZN7S6960C23v12Ev();
extern void _ZN7S6960C23v13Ev();
extern void _ZN7S6960C23v14Ev();
extern void _ZN7S6960C23v15Ev();
extern void _ZN7S6960C23v16Ev();
extern void _ZN7S6960C23v17Ev();
extern void _ZN7S6960C23v18Ev();
extern void _ZN7S6960C23v19Ev();
extern void _ZN7S6960C23v20Ev();
extern void _ZN7S6960C23v21Ev();
extern void _ZN7S6960C23v22Ev();
extern void _ZN7S6960C23v23Ev();
extern void _ZN7S6960C23v24Ev();
extern void _ZN7S6960C23v25Ev();
extern void _ZN7S6960C23v26Ev();
extern void _ZN7S6960C23v27Ev();
extern void _ZN7S6960C23v28Ev();
extern void _ZN7S6960C23v29Ev();
extern void _ZN7S6960C23v30Ev();
extern void _ZN7S6960C23v31Ev();
extern void _ZN7S6960C23v32Ev();
extern void _ZN7S6960C23v33Ev();
extern void _ZN7S6960C23v34Ev();
extern void _ZN7S6960C23v35Ev();
extern void _ZN7S6960C23v36Ev();
extern void _ZN7S6960C23v37Ev();
extern void _ZN7S6960C23v38Ev();
extern void _ZN7S6960C23v39Ev();
extern void _ZN7S6960C23v40Ev();
extern void _ZN7S6960C23v41Ev();
extern void _ZN7S6960C23v42Ev();
extern void _ZN7S6960C23v43Ev();
extern void _ZN7S6960C23v44Ev();
extern void _ZN7S6960C23v45Ev();
extern void _ZN7S6960C23v46Ev();
extern void _ZN7S6960C23v47Ev();
extern void _ZN7S6960C23v48Ev();
extern void _ZN7S6960C23v49Ev();
extern void _ZN7S6960C23v50Ev();
extern void _ZN7S6960C23v51Ev();
extern void _ZN7S6960C23v52Ev();
extern void _ZN7S6960C23v53Ev();
extern void _ZN7S6960C23v54Ev();
extern void _ZN7S6960C23v55Ev();
extern void _ZN7S6960C23v56Ev();
extern void _ZN7S6960C23v57Ev();
extern void _ZN7S6960C23v58Ev();
extern void _ZN7S6960C23v59Ev();
extern void _ZN7S6960C23v60Ev();
extern void _ZN7S6960C23v61Ev();
extern void _ZN7S6960C23v62Ev();
extern void _ZN7S6960C23v63Ev();
extern void _ZN7S6960C23v64Ev();
extern void _ZN7S6960C23v65Ev();
extern void _ZN7S6960C23v66Ev();
extern void _ZN7S6960C23v67Ev();
extern void _ZN7S6960C23v68Ev();
static  VTBL_ENTRY vtc_S6960C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6960C2[0]),
  (VTBL_ENTRY)&_ZN7S6960C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6960C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v68Ev,
};
extern VTBL_ENTRY _ZTI7S6960C2[];
extern  VTBL_ENTRY _ZTV7S6960C2[];
Class_Descriptor cd_S6960C2 = {  "S6960C2", // class name
  0,0,//no base classes
  &(vtc_S6960C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S6960C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6960C2),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  S6960C1  : S6960C2 {
  ::S1540C28 s6960c1f0;
  void *s6960c1f1;
  virtual  ~S6960C1(); // _ZN7S6960C1D1Ev
  virtual void  v1(); // _ZN7S6960C12v1Ev
  virtual void  v2(); // _ZN7S6960C12v2Ev
  virtual void  v3(); // _ZN7S6960C12v3Ev
  virtual void  v4(); // _ZN7S6960C12v4Ev
  S6960C1(); // tgen
};
//SIG(1 S6960C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 v56 v57 v58 v59 v60 v61 v62 v63 v64 v65 v66 v67 v68 Fi FL Fp[4] Fi[2] Fp FC3{ m Fi[2]} Fp[2]} vd v1 v2 v3 v4 FC4{ BC5{ BC6{ m Fp Fi[2]}}} Fp}


 S6960C1 ::~S6960C1(){ note_dtor("S6960C1", this);}
void  S6960C1 ::v1(){vfunc_called(this, "_ZN7S6960C12v1Ev");}
void  S6960C1 ::v2(){vfunc_called(this, "_ZN7S6960C12v2Ev");}
void  S6960C1 ::v3(){vfunc_called(this, "_ZN7S6960C12v3Ev");}
void  S6960C1 ::v4(){vfunc_called(this, "_ZN7S6960C12v4Ev");}
S6960C1 ::S6960C1(){ note_ctor("S6960C1", this);} // tgen

static void Test_S6960C1()
{
  extern Class_Descriptor cd_S6960C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,20)];
    init_test(&cd_S6960C1, buf);
    S6960C1 *dp, &lv = *(dp=new (buf) S6960C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,76), "sizeof(S6960C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6960C1)");
    check_base_class_offset(lv, (S6960C2*), 0, "S6960C1");
    check_field_offset(lv, s6960c1f0, ABISELECT(96,60), "S6960C1.s6960c1f0");
    check_field_offset(lv, s6960c1f1, ABISELECT(112,72), "S6960C1.s6960c1f1");
    test_class_info(&lv, &cd_S6960C1);
    dp->~S6960C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6960C1(Test_S6960C1, "S6960C1", ABISELECT(120,76));

#else // __cplusplus

extern void _ZN7S6960C1C1Ev();
extern void _ZN7S6960C1D1Ev();
Name_Map name_map_S6960C1[] = {
  NSPAIR(_ZN7S6960C1C1Ev),
  NSPAIR(_ZN7S6960C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6960C2;
extern VTBL_ENTRY _ZTI7S6960C2[];
extern  VTBL_ENTRY _ZTV7S6960C2[];
static Base_Class bases_S6960C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6960C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6960C1[];
extern void _ZN7S6960C1D1Ev();
extern void _ZN7S6960C1D0Ev();
extern void _ZN7S6960C22v5Ev();
extern void _ZN7S6960C22v6Ev();
extern void _ZN7S6960C22v7Ev();
extern void _ZN7S6960C22v8Ev();
extern void _ZN7S6960C22v9Ev();
extern void _ZN7S6960C23v10Ev();
extern void _ZN7S6960C23v11Ev();
extern void _ZN7S6960C23v12Ev();
extern void _ZN7S6960C23v13Ev();
extern void _ZN7S6960C23v14Ev();
extern void _ZN7S6960C23v15Ev();
extern void _ZN7S6960C23v16Ev();
extern void _ZN7S6960C23v17Ev();
extern void _ZN7S6960C23v18Ev();
extern void _ZN7S6960C23v19Ev();
extern void _ZN7S6960C23v20Ev();
extern void _ZN7S6960C23v21Ev();
extern void _ZN7S6960C23v22Ev();
extern void _ZN7S6960C23v23Ev();
extern void _ZN7S6960C23v24Ev();
extern void _ZN7S6960C23v25Ev();
extern void _ZN7S6960C23v26Ev();
extern void _ZN7S6960C23v27Ev();
extern void _ZN7S6960C23v28Ev();
extern void _ZN7S6960C23v29Ev();
extern void _ZN7S6960C23v30Ev();
extern void _ZN7S6960C23v31Ev();
extern void _ZN7S6960C23v32Ev();
extern void _ZN7S6960C23v33Ev();
extern void _ZN7S6960C23v34Ev();
extern void _ZN7S6960C23v35Ev();
extern void _ZN7S6960C23v36Ev();
extern void _ZN7S6960C23v37Ev();
extern void _ZN7S6960C23v38Ev();
extern void _ZN7S6960C23v39Ev();
extern void _ZN7S6960C23v40Ev();
extern void _ZN7S6960C23v41Ev();
extern void _ZN7S6960C23v42Ev();
extern void _ZN7S6960C23v43Ev();
extern void _ZN7S6960C23v44Ev();
extern void _ZN7S6960C23v45Ev();
extern void _ZN7S6960C23v46Ev();
extern void _ZN7S6960C23v47Ev();
extern void _ZN7S6960C23v48Ev();
extern void _ZN7S6960C23v49Ev();
extern void _ZN7S6960C23v50Ev();
extern void _ZN7S6960C23v51Ev();
extern void _ZN7S6960C23v52Ev();
extern void _ZN7S6960C23v53Ev();
extern void _ZN7S6960C23v54Ev();
extern void _ZN7S6960C23v55Ev();
extern void _ZN7S6960C23v56Ev();
extern void _ZN7S6960C23v57Ev();
extern void _ZN7S6960C23v58Ev();
extern void _ZN7S6960C23v59Ev();
extern void _ZN7S6960C23v60Ev();
extern void _ZN7S6960C23v61Ev();
extern void _ZN7S6960C23v62Ev();
extern void _ZN7S6960C23v63Ev();
extern void _ZN7S6960C23v64Ev();
extern void _ZN7S6960C23v65Ev();
extern void _ZN7S6960C23v66Ev();
extern void _ZN7S6960C23v67Ev();
extern void _ZN7S6960C23v68Ev();
extern void _ZN7S6960C12v1Ev();
extern void _ZN7S6960C12v2Ev();
extern void _ZN7S6960C12v3Ev();
extern void _ZN7S6960C12v4Ev();
static  VTBL_ENTRY vtc_S6960C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6960C1[0]),
  (VTBL_ENTRY)&_ZN7S6960C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6960C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6960C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v12Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v13Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v14Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v15Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v16Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v17Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v18Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v19Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v20Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v21Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v22Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v23Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v24Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v25Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v26Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v27Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v28Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v29Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v30Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v31Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v32Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v33Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v34Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v35Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v36Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v37Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v38Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v39Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v40Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v41Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v42Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v43Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v44Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v45Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v46Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v47Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v48Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v49Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v50Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v51Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v52Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v53Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v54Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v55Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v56Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v57Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v58Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v59Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v60Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v61Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v62Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v63Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v64Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v65Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v66Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v67Ev,
  (VTBL_ENTRY)&_ZN7S6960C23v68Ev,
  (VTBL_ENTRY)&_ZN7S6960C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6960C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6960C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6960C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6960C1[];
extern  VTBL_ENTRY _ZTV7S6960C1[];
Class_Descriptor cd_S6960C1 = {  "S6960C1", // class name
  bases_S6960C1, 1,
  &(vtc_S6960C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,76), // object size
  NSPAIRA(_ZTI7S6960C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6960C1),72, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15496C3  {
  ::S10296C14_nt s15496c3f0;
  virtual  ~S15496C3(); // _ZN8S15496C3D1Ev
  virtual void  v7(); // _ZN8S15496C32v7Ev
  virtual void  v8(); // _ZN8S15496C32v8Ev
  virtual void  v9(); // _ZN8S15496C32v9Ev
  virtual void  v10(); // _ZN8S15496C33v10Ev
  virtual void  v11(); // _ZN8S15496C33v11Ev
  virtual void  v12(); // _ZN8S15496C33v12Ev
  S15496C3(); // tgen
};
//SIG(-1 S15496C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15496C3 ::~S15496C3(){ note_dtor("S15496C3", this);}
void  S15496C3 ::v7(){vfunc_called(this, "_ZN8S15496C32v7Ev");}
void  S15496C3 ::v8(){vfunc_called(this, "_ZN8S15496C32v8Ev");}
void  S15496C3 ::v9(){vfunc_called(this, "_ZN8S15496C32v9Ev");}
void  S15496C3 ::v10(){vfunc_called(this, "_ZN8S15496C33v10Ev");}
void  S15496C3 ::v11(){vfunc_called(this, "_ZN8S15496C33v11Ev");}
void  S15496C3 ::v12(){vfunc_called(this, "_ZN8S15496C33v12Ev");}
S15496C3 ::S15496C3(){ note_ctor("S15496C3", this);} // tgen

static void Test_S15496C3()
{
  extern Class_Descriptor cd_S15496C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15496C3, buf);
    S15496C3 *dp, &lv = *(dp=new (buf) S15496C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15496C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15496C3)");
    check_field_offset(lv, s15496c3f0, ABISELECT(8,4), "S15496C3.s15496c3f0");
    test_class_info(&lv, &cd_S15496C3);
    dp->~S15496C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15496C3(Test_S15496C3, "S15496C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15496C3C1Ev();
extern void _ZN8S15496C3D1Ev();
Name_Map name_map_S15496C3[] = {
  NSPAIR(_ZN8S15496C3C1Ev),
  NSPAIR(_ZN8S15496C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15496C3[];
extern void _ZN8S15496C3D1Ev();
extern void _ZN8S15496C3D0Ev();
extern void _ZN8S15496C32v7Ev();
extern void _ZN8S15496C32v8Ev();
extern void _ZN8S15496C32v9Ev();
extern void _ZN8S15496C33v10Ev();
extern void _ZN8S15496C33v11Ev();
extern void _ZN8S15496C33v12Ev();
static  VTBL_ENTRY vtc_S15496C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15496C3[0]),
  (VTBL_ENTRY)&_ZN8S15496C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15496C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15496C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15496C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15496C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15496C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15496C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15496C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S15496C3[];
extern  VTBL_ENTRY _ZTV8S15496C3[];
Class_Descriptor cd_S15496C3 = {  "S15496C3", // class name
  0,0,//no base classes
  &(vtc_S15496C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15496C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15496C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15496C2  : S15496C3 , S10296C15_nt {
  ::S10296C21_nt s15496c2f0;
  ::S10296C35_nt s15496c2f1;
  ::S15657C13_nt s15496c2f2;
  virtual void  v1(); // _ZN8S15496C22v1Ev
  virtual void  v2(); // _ZN8S15496C22v2Ev
  virtual void  v3(); // _ZN8S15496C22v3Ev
  virtual void  v4(); // _ZN8S15496C22v4Ev
  virtual void  v5(); // _ZN8S15496C22v5Ev
  virtual void  v6(); // _ZN8S15496C22v6Ev
  ~S15496C2(); // tgen
  S15496C2(); // tgen
};
//SIG(-1 S15496C2) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC9{ BC6 FC10{ m FC11{ m Fp[2]} FC12{ m Fp}}} FC13{ BC6 FC14{ m FC15{ m FL}}}}


void  S15496C2 ::v1(){vfunc_called(this, "_ZN8S15496C22v1Ev");}
void  S15496C2 ::v2(){vfunc_called(this, "_ZN8S15496C22v2Ev");}
void  S15496C2 ::v3(){vfunc_called(this, "_ZN8S15496C22v3Ev");}
void  S15496C2 ::v4(){vfunc_called(this, "_ZN8S15496C22v4Ev");}
void  S15496C2 ::v5(){vfunc_called(this, "_ZN8S15496C22v5Ev");}
void  S15496C2 ::v6(){vfunc_called(this, "_ZN8S15496C22v6Ev");}
S15496C2 ::~S15496C2(){ note_dtor("S15496C2", this);} // tgen
S15496C2 ::S15496C2(){ note_ctor("S15496C2", this);} // tgen

static void Test_S15496C2()
{
  extern Class_Descriptor cd_S15496C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,30)];
    init_test(&cd_S15496C2, buf);
    S15496C2 *dp, &lv = *(dp=new (buf) S15496C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,116), "sizeof(S15496C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15496C2)");
    check_base_class_offset(lv, (S15496C3*), 0, "S15496C2");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15496C2");
    check_field_offset(lv, s15496c2f0, ABISELECT(40,20), "S15496C2.s15496c2f0");
    check_field_offset(lv, s15496c2f1, ABISELECT(88,56), "S15496C2.s15496c2f1");
    check_field_offset(lv, s15496c2f2, ABISELECT(144,88), "S15496C2.s15496c2f2");
    test_class_info(&lv, &cd_S15496C2);
    dp->~S15496C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15496C2(Test_S15496C2, "S15496C2", ABISELECT(184,116));

#else // __cplusplus

extern void _ZN8S15496C2C1Ev();
extern void _ZN8S15496C2D1Ev();
Name_Map name_map_S15496C2[] = {
  NSPAIR(_ZN8S15496C2C1Ev),
  NSPAIR(_ZN8S15496C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15496C3;
extern VTBL_ENTRY _ZTI8S15496C3[];
extern  VTBL_ENTRY _ZTV8S15496C3[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15496C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15496C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15496C2[];
extern void _ZN8S15496C2D1Ev();
extern void _ZN8S15496C2D0Ev();
extern void _ZN8S15496C32v7Ev();
extern void _ZN8S15496C32v8Ev();
extern void _ZN8S15496C32v9Ev();
extern void _ZN8S15496C33v10Ev();
extern void _ZN8S15496C33v11Ev();
extern void _ZN8S15496C33v12Ev();
extern void _ZN8S15496C22v1Ev();
extern void _ZN8S15496C22v2Ev();
extern void _ZN8S15496C22v3Ev();
extern void _ZN8S15496C22v4Ev();
extern void _ZN8S15496C22v5Ev();
extern void _ZN8S15496C22v6Ev();
static  VTBL_ENTRY vtc_S15496C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15496C2[0]),
  (VTBL_ENTRY)&_ZN8S15496C2D1Ev,
  (VTBL_ENTRY)&_ZN8S15496C2D0Ev,
  (VTBL_ENTRY)&_ZN8S15496C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15496C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15496C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15496C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15496C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15496C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15496C22v1Ev,
  (VTBL_ENTRY)&_ZN8S15496C22v2Ev,
  (VTBL_ENTRY)&_ZN8S15496C22v3Ev,
  (VTBL_ENTRY)&_ZN8S15496C22v4Ev,
  (VTBL_ENTRY)&_ZN8S15496C22v5Ev,
  (VTBL_ENTRY)&_ZN8S15496C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S15496C2[];
extern  VTBL_ENTRY _ZTV8S15496C2[];
Class_Descriptor cd_S15496C2 = {  "S15496C2", // class name
  bases_S15496C2, 2,
  &(vtc_S15496C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,116), // object size
  NSPAIRA(_ZTI8S15496C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15496C2),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  S15496C1  {
  ::S15496C2 s15496c1f0;
  ::S10296C36_nt s15496c1f1;
  void  mf15496c1(); // _ZN8S15496C19mf15496c1Ev
};
//SIG(1 S15496C1) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC10{ BC7 FC11{ m FC12{ m Fp[2]} FC13{ m Fp}}} FC14{ BC7 FC15{ m FC16{ m FL}}}} FC17{ BC18{ BC19{ vd v13} vd v14 Fp[2] FC20{ m FC21{ m Fp Fi[2] FC22{ m}}} FC23{ m Fp[2]}} vd FC24{ m Fp Fi FC25{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC23}}}


void  S15496C1 ::mf15496c1(){}

static void Test_S15496C1()
{
  {
    init_simple_test("S15496C1");
    static S15496C1 lv;
    check2(sizeof(lv), ABISELECT(288,176), "sizeof(S15496C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15496C1)");
    check_field_offset(lv, s15496c1f0, 0, "S15496C1.s15496c1f0");
    check_field_offset(lv, s15496c1f1, ABISELECT(184,116), "S15496C1.s15496c1f1");
  }
}
static Arrange_To_Call_Me vS15496C1(Test_S15496C1, "S15496C1", ABISELECT(288,176));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15498C3  {
  ::S10296C14_nt s15498c3f0;
  virtual  ~S15498C3(); // _ZN8S15498C3D1Ev
  virtual void  v7(); // _ZN8S15498C32v7Ev
  virtual void  v8(); // _ZN8S15498C32v8Ev
  virtual void  v9(); // _ZN8S15498C32v9Ev
  virtual void  v10(); // _ZN8S15498C33v10Ev
  virtual void  v11(); // _ZN8S15498C33v11Ev
  virtual void  v12(); // _ZN8S15498C33v12Ev
  S15498C3(); // tgen
};
//SIG(-1 S15498C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15498C3 ::~S15498C3(){ note_dtor("S15498C3", this);}
void  S15498C3 ::v7(){vfunc_called(this, "_ZN8S15498C32v7Ev");}
void  S15498C3 ::v8(){vfunc_called(this, "_ZN8S15498C32v8Ev");}
void  S15498C3 ::v9(){vfunc_called(this, "_ZN8S15498C32v9Ev");}
void  S15498C3 ::v10(){vfunc_called(this, "_ZN8S15498C33v10Ev");}
void  S15498C3 ::v11(){vfunc_called(this, "_ZN8S15498C33v11Ev");}
void  S15498C3 ::v12(){vfunc_called(this, "_ZN8S15498C33v12Ev");}
S15498C3 ::S15498C3(){ note_ctor("S15498C3", this);} // tgen

static void Test_S15498C3()
{
  extern Class_Descriptor cd_S15498C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15498C3, buf);
    S15498C3 *dp, &lv = *(dp=new (buf) S15498C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15498C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15498C3)");
    check_field_offset(lv, s15498c3f0, ABISELECT(8,4), "S15498C3.s15498c3f0");
    test_class_info(&lv, &cd_S15498C3);
    dp->~S15498C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15498C3(Test_S15498C3, "S15498C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15498C3C1Ev();
extern void _ZN8S15498C3D1Ev();
Name_Map name_map_S15498C3[] = {
  NSPAIR(_ZN8S15498C3C1Ev),
  NSPAIR(_ZN8S15498C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15498C3[];
extern void _ZN8S15498C3D1Ev();
extern void _ZN8S15498C3D0Ev();
extern void _ZN8S15498C32v7Ev();
extern void _ZN8S15498C32v8Ev();
extern void _ZN8S15498C32v9Ev();
extern void _ZN8S15498C33v10Ev();
extern void _ZN8S15498C33v11Ev();
extern void _ZN8S15498C33v12Ev();
static  VTBL_ENTRY vtc_S15498C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15498C3[0]),
  (VTBL_ENTRY)&_ZN8S15498C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15498C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15498C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15498C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15498C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15498C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15498C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15498C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S15498C3[];
extern  VTBL_ENTRY _ZTV8S15498C3[];
Class_Descriptor cd_S15498C3 = {  "S15498C3", // class name
  0,0,//no base classes
  &(vtc_S15498C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15498C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15498C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15498C2  : S15498C3 , S10296C15_nt {
  ::S10296C21_nt s15498c2f0;
  ::S10296C21_nt s15498c2f1;
  ::S10296C21_nt s15498c2f2;
  ::S10296C35_nt s15498c2f3;
  ::S10296C35_nt s15498c2f4;
  ::S10296C35_nt s15498c2f5;
  virtual void  v1(); // _ZN8S15498C22v1Ev
  virtual void  v2(); // _ZN8S15498C22v2Ev
  virtual void  v3(); // _ZN8S15498C22v3Ev
  virtual void  v4(); // _ZN8S15498C22v4Ev
  virtual void  v5(); // _ZN8S15498C22v5Ev
  virtual void  v6(); // _ZN8S15498C22v6Ev
  ~S15498C2(); // tgen
  S15498C2(); // tgen
};
//SIG(-1 S15498C2) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC5 FC5 FC9{ BC6 FC10{ m FC11{ m Fp[2]} FC12{ m Fp}}} FC9 FC9}


void  S15498C2 ::v1(){vfunc_called(this, "_ZN8S15498C22v1Ev");}
void  S15498C2 ::v2(){vfunc_called(this, "_ZN8S15498C22v2Ev");}
void  S15498C2 ::v3(){vfunc_called(this, "_ZN8S15498C22v3Ev");}
void  S15498C2 ::v4(){vfunc_called(this, "_ZN8S15498C22v4Ev");}
void  S15498C2 ::v5(){vfunc_called(this, "_ZN8S15498C22v5Ev");}
void  S15498C2 ::v6(){vfunc_called(this, "_ZN8S15498C22v6Ev");}
S15498C2 ::~S15498C2(){ note_dtor("S15498C2", this);} // tgen
S15498C2 ::S15498C2(){ note_ctor("S15498C2", this);} // tgen

static void Test_S15498C2()
{
  extern Class_Descriptor cd_S15498C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(45,57)];
    init_test(&cd_S15498C2, buf);
    S15498C2 *dp, &lv = *(dp=new (buf) S15498C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(352,224), "sizeof(S15498C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15498C2)");
    check_base_class_offset(lv, (S15498C3*), 0, "S15498C2");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15498C2");
    check_field_offset(lv, s15498c2f0, ABISELECT(40,20), "S15498C2.s15498c2f0");
    check_field_offset(lv, s15498c2f1, ABISELECT(88,56), "S15498C2.s15498c2f1");
    check_field_offset(lv, s15498c2f2, ABISELECT(136,92), "S15498C2.s15498c2f2");
    check_field_offset(lv, s15498c2f3, ABISELECT(184,128), "S15498C2.s15498c2f3");
    check_field_offset(lv, s15498c2f4, ABISELECT(240,160), "S15498C2.s15498c2f4");
    check_field_offset(lv, s15498c2f5, ABISELECT(296,192), "S15498C2.s15498c2f5");
    test_class_info(&lv, &cd_S15498C2);
    dp->~S15498C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15498C2(Test_S15498C2, "S15498C2", ABISELECT(352,224));

#else // __cplusplus

extern void _ZN8S15498C2C1Ev();
extern void _ZN8S15498C2D1Ev();
Name_Map name_map_S15498C2[] = {
  NSPAIR(_ZN8S15498C2C1Ev),
  NSPAIR(_ZN8S15498C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15498C3;
extern VTBL_ENTRY _ZTI8S15498C3[];
extern  VTBL_ENTRY _ZTV8S15498C3[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15498C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15498C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15498C2[];
extern void _ZN8S15498C2D1Ev();
extern void _ZN8S15498C2D0Ev();
extern void _ZN8S15498C32v7Ev();
extern void _ZN8S15498C32v8Ev();
extern void _ZN8S15498C32v9Ev();
extern void _ZN8S15498C33v10Ev();
extern void _ZN8S15498C33v11Ev();
extern void _ZN8S15498C33v12Ev();
extern void _ZN8S15498C22v1Ev();
extern void _ZN8S15498C22v2Ev();
extern void _ZN8S15498C22v3Ev();
extern void _ZN8S15498C22v4Ev();
extern void _ZN8S15498C22v5Ev();
extern void _ZN8S15498C22v6Ev();
static  VTBL_ENTRY vtc_S15498C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15498C2[0]),
  (VTBL_ENTRY)&_ZN8S15498C2D1Ev,
  (VTBL_ENTRY)&_ZN8S15498C2D0Ev,
  (VTBL_ENTRY)&_ZN8S15498C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15498C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15498C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15498C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15498C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15498C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15498C22v1Ev,
  (VTBL_ENTRY)&_ZN8S15498C22v2Ev,
  (VTBL_ENTRY)&_ZN8S15498C22v3Ev,
  (VTBL_ENTRY)&_ZN8S15498C22v4Ev,
  (VTBL_ENTRY)&_ZN8S15498C22v5Ev,
  (VTBL_ENTRY)&_ZN8S15498C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S15498C2[];
extern  VTBL_ENTRY _ZTV8S15498C2[];
Class_Descriptor cd_S15498C2 = {  "S15498C2", // class name
  bases_S15498C2, 2,
  &(vtc_S15498C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(352,224), // object size
  NSPAIRA(_ZTI8S15498C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15498C2),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  S15498C1  {
  ::S15498C2 s15498c1f0;
  ::S10296C36_nt s15498c1f1;
  void  mf15498c1(); // _ZN8S15498C19mf15498c1Ev
};
//SIG(1 S15498C1) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC6 FC6 FC10{ BC7 FC11{ m FC12{ m Fp[2]} FC13{ m Fp}}} FC10 FC10} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m Fp Fi FC22{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC20}}}


void  S15498C1 ::mf15498c1(){}

static void Test_S15498C1()
{
  {
    init_simple_test("S15498C1");
    static S15498C1 lv;
    check2(sizeof(lv), ABISELECT(456,284), "sizeof(S15498C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15498C1)");
    check_field_offset(lv, s15498c1f0, 0, "S15498C1.s15498c1f0");
    check_field_offset(lv, s15498c1f1, ABISELECT(352,224), "S15498C1.s15498c1f1");
  }
}
static Arrange_To_Call_Me vS15498C1(Test_S15498C1, "S15498C1", ABISELECT(456,284));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15494C3  {
  ::S10296C14_nt s15494c3f0;
  virtual  ~S15494C3(); // _ZN8S15494C3D1Ev
  virtual void  v7(); // _ZN8S15494C32v7Ev
  virtual void  v8(); // _ZN8S15494C32v8Ev
  virtual void  v9(); // _ZN8S15494C32v9Ev
  virtual void  v10(); // _ZN8S15494C33v10Ev
  virtual void  v11(); // _ZN8S15494C33v11Ev
  virtual void  v12(); // _ZN8S15494C33v12Ev
  S15494C3(); // tgen
};
//SIG(-1 S15494C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15494C3 ::~S15494C3(){ note_dtor("S15494C3", this);}
void  S15494C3 ::v7(){vfunc_called(this, "_ZN8S15494C32v7Ev");}
void  S15494C3 ::v8(){vfunc_called(this, "_ZN8S15494C32v8Ev");}
void  S15494C3 ::v9(){vfunc_called(this, "_ZN8S15494C32v9Ev");}
void  S15494C3 ::v10(){vfunc_called(this, "_ZN8S15494C33v10Ev");}
void  S15494C3 ::v11(){vfunc_called(this, "_ZN8S15494C33v11Ev");}
void  S15494C3 ::v12(){vfunc_called(this, "_ZN8S15494C33v12Ev");}
S15494C3 ::S15494C3(){ note_ctor("S15494C3", this);} // tgen

static void Test_S15494C3()
{
  extern Class_Descriptor cd_S15494C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15494C3, buf);
    S15494C3 *dp, &lv = *(dp=new (buf) S15494C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15494C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15494C3)");
    check_field_offset(lv, s15494c3f0, ABISELECT(8,4), "S15494C3.s15494c3f0");
    test_class_info(&lv, &cd_S15494C3);
    dp->~S15494C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15494C3(Test_S15494C3, "S15494C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15494C3C1Ev();
extern void _ZN8S15494C3D1Ev();
Name_Map name_map_S15494C3[] = {
  NSPAIR(_ZN8S15494C3C1Ev),
  NSPAIR(_ZN8S15494C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15494C3[];
extern void _ZN8S15494C3D1Ev();
extern void _ZN8S15494C3D0Ev();
extern void _ZN8S15494C32v7Ev();
extern void _ZN8S15494C32v8Ev();
extern void _ZN8S15494C32v9Ev();
extern void _ZN8S15494C33v10Ev();
extern void _ZN8S15494C33v11Ev();
extern void _ZN8S15494C33v12Ev();
static  VTBL_ENTRY vtc_S15494C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15494C3[0]),
  (VTBL_ENTRY)&_ZN8S15494C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15494C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15494C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15494C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15494C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15494C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15494C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15494C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S15494C3[];
extern  VTBL_ENTRY _ZTV8S15494C3[];
Class_Descriptor cd_S15494C3 = {  "S15494C3", // class name
  0,0,//no base classes
  &(vtc_S15494C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15494C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15494C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15494C2  : S15494C3 , S10296C15_nt {
  ::S10296C21_nt s15494c2f0;
  ::S10296C35_nt s15494c2f1;
  ::S10296C35_nt s15494c2f2;
  ::S10296C35_nt s15494c2f3;
  virtual void  v1(); // _ZN8S15494C22v1Ev
  virtual void  v2(); // _ZN8S15494C22v2Ev
  virtual void  v3(); // _ZN8S15494C22v3Ev
  virtual void  v4(); // _ZN8S15494C22v4Ev
  virtual void  v5(); // _ZN8S15494C22v5Ev
  virtual void  v6(); // _ZN8S15494C22v6Ev
  ~S15494C2(); // tgen
  S15494C2(); // tgen
};
//SIG(-1 S15494C2) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC9{ BC6 FC10{ m FC11{ m Fp[2]} FC12{ m Fp}}} FC9 FC9}


void  S15494C2 ::v1(){vfunc_called(this, "_ZN8S15494C22v1Ev");}
void  S15494C2 ::v2(){vfunc_called(this, "_ZN8S15494C22v2Ev");}
void  S15494C2 ::v3(){vfunc_called(this, "_ZN8S15494C22v3Ev");}
void  S15494C2 ::v4(){vfunc_called(this, "_ZN8S15494C22v4Ev");}
void  S15494C2 ::v5(){vfunc_called(this, "_ZN8S15494C22v5Ev");}
void  S15494C2 ::v6(){vfunc_called(this, "_ZN8S15494C22v6Ev");}
S15494C2 ::~S15494C2(){ note_dtor("S15494C2", this);} // tgen
S15494C2 ::S15494C2(){ note_ctor("S15494C2", this);} // tgen

static void Test_S15494C2()
{
  extern Class_Descriptor cd_S15494C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(33,39)];
    init_test(&cd_S15494C2, buf);
    S15494C2 *dp, &lv = *(dp=new (buf) S15494C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(256,152), "sizeof(S15494C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15494C2)");
    check_base_class_offset(lv, (S15494C3*), 0, "S15494C2");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15494C2");
    check_field_offset(lv, s15494c2f0, ABISELECT(40,20), "S15494C2.s15494c2f0");
    check_field_offset(lv, s15494c2f1, ABISELECT(88,56), "S15494C2.s15494c2f1");
    check_field_offset(lv, s15494c2f2, ABISELECT(144,88), "S15494C2.s15494c2f2");
    check_field_offset(lv, s15494c2f3, ABISELECT(200,120), "S15494C2.s15494c2f3");
    test_class_info(&lv, &cd_S15494C2);
    dp->~S15494C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15494C2(Test_S15494C2, "S15494C2", ABISELECT(256,152));

#else // __cplusplus

extern void _ZN8S15494C2C1Ev();
extern void _ZN8S15494C2D1Ev();
Name_Map name_map_S15494C2[] = {
  NSPAIR(_ZN8S15494C2C1Ev),
  NSPAIR(_ZN8S15494C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15494C3;
extern VTBL_ENTRY _ZTI8S15494C3[];
extern  VTBL_ENTRY _ZTV8S15494C3[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15494C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15494C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15494C2[];
extern void _ZN8S15494C2D1Ev();
extern void _ZN8S15494C2D0Ev();
extern void _ZN8S15494C32v7Ev();
extern void _ZN8S15494C32v8Ev();
extern void _ZN8S15494C32v9Ev();
extern void _ZN8S15494C33v10Ev();
extern void _ZN8S15494C33v11Ev();
extern void _ZN8S15494C33v12Ev();
extern void _ZN8S15494C22v1Ev();
extern void _ZN8S15494C22v2Ev();
extern void _ZN8S15494C22v3Ev();
extern void _ZN8S15494C22v4Ev();
extern void _ZN8S15494C22v5Ev();
extern void _ZN8S15494C22v6Ev();
static  VTBL_ENTRY vtc_S15494C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15494C2[0]),
  (VTBL_ENTRY)&_ZN8S15494C2D1Ev,
  (VTBL_ENTRY)&_ZN8S15494C2D0Ev,
  (VTBL_ENTRY)&_ZN8S15494C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15494C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15494C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15494C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15494C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15494C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15494C22v1Ev,
  (VTBL_ENTRY)&_ZN8S15494C22v2Ev,
  (VTBL_ENTRY)&_ZN8S15494C22v3Ev,
  (VTBL_ENTRY)&_ZN8S15494C22v4Ev,
  (VTBL_ENTRY)&_ZN8S15494C22v5Ev,
  (VTBL_ENTRY)&_ZN8S15494C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S15494C2[];
extern  VTBL_ENTRY _ZTV8S15494C2[];
Class_Descriptor cd_S15494C2 = {  "S15494C2", // class name
  bases_S15494C2, 2,
  &(vtc_S15494C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(256,152), // object size
  NSPAIRA(_ZTI8S15494C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15494C2),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  S15494C1  {
  ::S15494C2 s15494c1f0;
  ::S10296C36_nt s15494c1f1;
  void  mf15494c1(); // _ZN8S15494C19mf15494c1Ev
};
//SIG(1 S15494C1) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC10{ BC7 FC11{ m FC12{ m Fp[2]} FC13{ m Fp}}} FC10 FC10} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m Fp Fi FC22{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC20}}}


void  S15494C1 ::mf15494c1(){}

static void Test_S15494C1()
{
  {
    init_simple_test("S15494C1");
    static S15494C1 lv;
    check2(sizeof(lv), ABISELECT(360,212), "sizeof(S15494C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15494C1)");
    check_field_offset(lv, s15494c1f0, 0, "S15494C1.s15494c1f0");
    check_field_offset(lv, s15494c1f1, ABISELECT(256,152), "S15494C1.s15494c1f1");
  }
}
static Arrange_To_Call_Me vS15494C1(Test_S15494C1, "S15494C1", ABISELECT(360,212));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15499C3  {
  ::S10296C14_nt s15499c3f0;
  virtual  ~S15499C3(); // _ZN8S15499C3D1Ev
  virtual void  v7(); // _ZN8S15499C32v7Ev
  virtual void  v8(); // _ZN8S15499C32v8Ev
  virtual void  v9(); // _ZN8S15499C32v9Ev
  virtual void  v10(); // _ZN8S15499C33v10Ev
  virtual void  v11(); // _ZN8S15499C33v11Ev
  virtual void  v12(); // _ZN8S15499C33v12Ev
  S15499C3(); // tgen
};
//SIG(-1 S15499C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15499C3 ::~S15499C3(){ note_dtor("S15499C3", this);}
void  S15499C3 ::v7(){vfunc_called(this, "_ZN8S15499C32v7Ev");}
void  S15499C3 ::v8(){vfunc_called(this, "_ZN8S15499C32v8Ev");}
void  S15499C3 ::v9(){vfunc_called(this, "_ZN8S15499C32v9Ev");}
void  S15499C3 ::v10(){vfunc_called(this, "_ZN8S15499C33v10Ev");}
void  S15499C3 ::v11(){vfunc_called(this, "_ZN8S15499C33v11Ev");}
void  S15499C3 ::v12(){vfunc_called(this, "_ZN8S15499C33v12Ev");}
S15499C3 ::S15499C3(){ note_ctor("S15499C3", this);} // tgen

static void Test_S15499C3()
{
  extern Class_Descriptor cd_S15499C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15499C3, buf);
    S15499C3 *dp, &lv = *(dp=new (buf) S15499C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15499C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15499C3)");
    check_field_offset(lv, s15499c3f0, ABISELECT(8,4), "S15499C3.s15499c3f0");
    test_class_info(&lv, &cd_S15499C3);
    dp->~S15499C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15499C3(Test_S15499C3, "S15499C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15499C3C1Ev();
extern void _ZN8S15499C3D1Ev();
Name_Map name_map_S15499C3[] = {
  NSPAIR(_ZN8S15499C3C1Ev),
  NSPAIR(_ZN8S15499C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15499C3[];
extern void _ZN8S15499C3D1Ev();
extern void _ZN8S15499C3D0Ev();
extern void _ZN8S15499C32v7Ev();
extern void _ZN8S15499C32v8Ev();
extern void _ZN8S15499C32v9Ev();
extern void _ZN8S15499C33v10Ev();
extern void _ZN8S15499C33v11Ev();
extern void _ZN8S15499C33v12Ev();
static  VTBL_ENTRY vtc_S15499C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15499C3[0]),
  (VTBL_ENTRY)&_ZN8S15499C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15499C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15499C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15499C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15499C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15499C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15499C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15499C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S15499C3[];
extern  VTBL_ENTRY _ZTV8S15499C3[];
Class_Descriptor cd_S15499C3 = {  "S15499C3", // class name
  0,0,//no base classes
  &(vtc_S15499C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15499C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15499C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15499C2  : S15499C3 , S10296C15_nt {
  ::S10296C21_nt s15499c2f0;
  ::S10296C21_nt s15499c2f1;
  ::S10296C21_nt s15499c2f2;
  ::S10296C35_nt s15499c2f3;
  virtual void  v1(); // _ZN8S15499C22v1Ev
  virtual void  v2(); // _ZN8S15499C22v2Ev
  virtual void  v3(); // _ZN8S15499C22v3Ev
  virtual void  v4(); // _ZN8S15499C22v4Ev
  virtual void  v5(); // _ZN8S15499C22v5Ev
  virtual void  v6(); // _ZN8S15499C22v6Ev
  ~S15499C2(); // tgen
  S15499C2(); // tgen
};
//SIG(-1 S15499C2) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FL[2]}}} FC5 FC5 FC9{ BC6 FC10{ m FC11{ m Fp[2]} FC12{ m Fp}}}}


void  S15499C2 ::v1(){vfunc_called(this, "_ZN8S15499C22v1Ev");}
void  S15499C2 ::v2(){vfunc_called(this, "_ZN8S15499C22v2Ev");}
void  S15499C2 ::v3(){vfunc_called(this, "_ZN8S15499C22v3Ev");}
void  S15499C2 ::v4(){vfunc_called(this, "_ZN8S15499C22v4Ev");}
void  S15499C2 ::v5(){vfunc_called(this, "_ZN8S15499C22v5Ev");}
void  S15499C2 ::v6(){vfunc_called(this, "_ZN8S15499C22v6Ev");}
S15499C2 ::~S15499C2(){ note_dtor("S15499C2", this);} // tgen
S15499C2 ::S15499C2(){ note_ctor("S15499C2", this);} // tgen

static void Test_S15499C2()
{
  extern Class_Descriptor cd_S15499C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(31,41)];
    init_test(&cd_S15499C2, buf);
    S15499C2 *dp, &lv = *(dp=new (buf) S15499C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,160), "sizeof(S15499C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15499C2)");
    check_base_class_offset(lv, (S15499C3*), 0, "S15499C2");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15499C2");
    check_field_offset(lv, s15499c2f0, ABISELECT(40,20), "S15499C2.s15499c2f0");
    check_field_offset(lv, s15499c2f1, ABISELECT(88,56), "S15499C2.s15499c2f1");
    check_field_offset(lv, s15499c2f2, ABISELECT(136,92), "S15499C2.s15499c2f2");
    check_field_offset(lv, s15499c2f3, ABISELECT(184,128), "S15499C2.s15499c2f3");
    test_class_info(&lv, &cd_S15499C2);
    dp->~S15499C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15499C2(Test_S15499C2, "S15499C2", ABISELECT(240,160));

#else // __cplusplus

extern void _ZN8S15499C2C1Ev();
extern void _ZN8S15499C2D1Ev();
Name_Map name_map_S15499C2[] = {
  NSPAIR(_ZN8S15499C2C1Ev),
  NSPAIR(_ZN8S15499C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15499C3;
extern VTBL_ENTRY _ZTI8S15499C3[];
extern  VTBL_ENTRY _ZTV8S15499C3[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15499C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15499C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15499C2[];
extern void _ZN8S15499C2D1Ev();
extern void _ZN8S15499C2D0Ev();
extern void _ZN8S15499C32v7Ev();
extern void _ZN8S15499C32v8Ev();
extern void _ZN8S15499C32v9Ev();
extern void _ZN8S15499C33v10Ev();
extern void _ZN8S15499C33v11Ev();
extern void _ZN8S15499C33v12Ev();
extern void _ZN8S15499C22v1Ev();
extern void _ZN8S15499C22v2Ev();
extern void _ZN8S15499C22v3Ev();
extern void _ZN8S15499C22v4Ev();
extern void _ZN8S15499C22v5Ev();
extern void _ZN8S15499C22v6Ev();
static  VTBL_ENTRY vtc_S15499C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15499C2[0]),
  (VTBL_ENTRY)&_ZN8S15499C2D1Ev,
  (VTBL_ENTRY)&_ZN8S15499C2D0Ev,
  (VTBL_ENTRY)&_ZN8S15499C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15499C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15499C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15499C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15499C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15499C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15499C22v1Ev,
  (VTBL_ENTRY)&_ZN8S15499C22v2Ev,
  (VTBL_ENTRY)&_ZN8S15499C22v3Ev,
  (VTBL_ENTRY)&_ZN8S15499C22v4Ev,
  (VTBL_ENTRY)&_ZN8S15499C22v5Ev,
  (VTBL_ENTRY)&_ZN8S15499C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S15499C2[];
extern  VTBL_ENTRY _ZTV8S15499C2[];
Class_Descriptor cd_S15499C2 = {  "S15499C2", // class name
  bases_S15499C2, 2,
  &(vtc_S15499C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(240,160), // object size
  NSPAIRA(_ZTI8S15499C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15499C2),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  S15499C1  {
  ::S15499C2 s15499c1f0;
  ::S10296C36_nt s15499c1f1;
  void  mf15499c1(); // _ZN8S15499C19mf15499c1Ev
};
//SIG(1 S15499C1) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FL[2]}}} FC6 FC6 FC10{ BC7 FC11{ m FC12{ m Fp[2]} FC13{ m Fp}}}} FC14{ BC15{ BC16{ vd v13} vd v14 Fp[2] FC17{ m FC18{ m Fp Fi[2] FC19{ m}}} FC20{ m Fp[2]}} vd FC21{ m Fp Fi FC22{ Fc Fc:4 Fc:4 Fc:4 Fc:4 Fc:4 Fc:4} Fi FC20}}}


void  S15499C1 ::mf15499c1(){}

static void Test_S15499C1()
{
  {
    init_simple_test("S15499C1");
    static S15499C1 lv;
    check2(sizeof(lv), ABISELECT(344,220), "sizeof(S15499C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15499C1)");
    check_field_offset(lv, s15499c1f0, 0, "S15499C1.s15499c1f0");
    check_field_offset(lv, s15499c1f1, ABISELECT(240,160), "S15499C1.s15499c1f1");
  }
}
static Arrange_To_Call_Me vS15499C1(Test_S15499C1, "S15499C1", ABISELECT(344,220));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15491C3  {
  ::S10296C14_nt s15491c3f0;
  virtual  ~S15491C3(); // _ZN8S15491C3D1Ev
  virtual void  v7(); // _ZN8S15491C32v7Ev
  virtual void  v8(); // _ZN8S15491C32v8Ev
  virtual void  v9(); // _ZN8S15491C32v9Ev
  virtual void  v10(); // _ZN8S15491C33v10Ev
  virtual void  v11(); // _ZN8S15491C33v11Ev
  virtual void  v12(); // _ZN8S15491C33v12Ev
  S15491C3(); // tgen
};
//SIG(-1 S15491C3) C1{ vd v1 v2 v3 v4 v5 v6 FC2{ m Fp[4]}}


 S15491C3 ::~S15491C3(){ note_dtor("S15491C3", this);}
void  S15491C3 ::v7(){vfunc_called(this, "_ZN8S15491C32v7Ev");}
void  S15491C3 ::v8(){vfunc_called(this, "_ZN8S15491C32v8Ev");}
void  S15491C3 ::v9(){vfunc_called(this, "_ZN8S15491C32v9Ev");}
void  S15491C3 ::v10(){vfunc_called(this, "_ZN8S15491C33v10Ev");}
void  S15491C3 ::v11(){vfunc_called(this, "_ZN8S15491C33v11Ev");}
void  S15491C3 ::v12(){vfunc_called(this, "_ZN8S15491C33v12Ev");}
S15491C3 ::S15491C3(){ note_ctor("S15491C3", this);} // tgen

static void Test_S15491C3()
{
  extern Class_Descriptor cd_S15491C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S15491C3, buf);
    S15491C3 *dp, &lv = *(dp=new (buf) S15491C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S15491C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15491C3)");
    check_field_offset(lv, s15491c3f0, ABISELECT(8,4), "S15491C3.s15491c3f0");
    test_class_info(&lv, &cd_S15491C3);
    dp->~S15491C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15491C3(Test_S15491C3, "S15491C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S15491C3C1Ev();
extern void _ZN8S15491C3D1Ev();
Name_Map name_map_S15491C3[] = {
  NSPAIR(_ZN8S15491C3C1Ev),
  NSPAIR(_ZN8S15491C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S15491C3[];
extern void _ZN8S15491C3D1Ev();
extern void _ZN8S15491C3D0Ev();
extern void _ZN8S15491C32v7Ev();
extern void _ZN8S15491C32v8Ev();
extern void _ZN8S15491C32v9Ev();
extern void _ZN8S15491C33v10Ev();
extern void _ZN8S15491C33v11Ev();
extern void _ZN8S15491C33v12Ev();
static  VTBL_ENTRY vtc_S15491C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15491C3[0]),
  (VTBL_ENTRY)&_ZN8S15491C3D1Ev,
  (VTBL_ENTRY)&_ZN8S15491C3D0Ev,
  (VTBL_ENTRY)&_ZN8S15491C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15491C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15491C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15491C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15491C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15491C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S15491C3[];
extern  VTBL_ENTRY _ZTV8S15491C3[];
Class_Descriptor cd_S15491C3 = {  "S15491C3", // class name
  0,0,//no base classes
  &(vtc_S15491C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S15491C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S15491C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S15491C2  : S15491C3 , S10296C15_nt {
  ::S10296C16_nt s15491c2f0;
  ::S10296C21_nt s15491c2f1;
  ::S10296C21_nt s15491c2f2;
  virtual void  v1(); // _ZN8S15491C22v1Ev
  virtual void  v2(); // _ZN8S15491C22v2Ev
  virtual void  v3(); // _ZN8S15491C22v3Ev
  virtual void  v4(); // _ZN8S15491C22v4Ev
  virtual void  v5(); // _ZN8S15491C22v5Ev
  virtual void  v6(); // _ZN8S15491C22v6Ev
  ~S15491C2(); // tgen
  S15491C2(); // tgen
};
//SIG(-1 S15491C2) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 FC3{ m Fp[4]}} BC4{} v1 v2 v3 v4 v5 v6 FC5{ BC6{ m Fp Fi Fp Fi[2]} FC7{ m FC8{ m FC9{ m FL[2]}} FC8 FC8 FC8}} FC10{ BC6 FC8} FC10}


void  S15491C2 ::v1(){vfunc_called(this, "_ZN8S15491C22v1Ev");}
void  S15491C2 ::v2(){vfunc_called(this, "_ZN8S15491C22v2Ev");}
void  S15491C2 ::v3(){vfunc_called(this, "_ZN8S15491C22v3Ev");}
void  S15491C2 ::v4(){vfunc_called(this, "_ZN8S15491C22v4Ev");}
void  S15491C2 ::v5(){vfunc_called(this, "_ZN8S15491C22v5Ev");}
void  S15491C2 ::v6(){vfunc_called(this, "_ZN8S15491C22v6Ev");}
S15491C2 ::~S15491C2(){ note_dtor("S15491C2", this);} // tgen
S15491C2 ::S15491C2(){ note_ctor("S15491C2", this);} // tgen

static void Test_S15491C2()
{
  extern Class_Descriptor cd_S15491C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(30,45)];
    init_test(&cd_S15491C2, buf);
    S15491C2 *dp, &lv = *(dp=new (buf) S15491C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(232,176), "sizeof(S15491C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15491C2)");
    check_base_class_offset(lv, (S15491C3*), 0, "S15491C2");
    check_base_class_offset(lv, (S10296C15_nt*), 0, "S15491C2");
    check_field_offset(lv, s15491c2f0, ABISELECT(40,20), "S15491C2.s15491c2f0");
    check_field_offset(lv, s15491c2f1, ABISELECT(136,104), "S15491C2.s15491c2f1");
    check_field_offset(lv, s15491c2f2, ABISELECT(184,140), "S15491C2.s15491c2f2");
    test_class_info(&lv, &cd_S15491C2);
    dp->~S15491C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS15491C2(Test_S15491C2, "S15491C2", ABISELECT(232,176));

#else // __cplusplus

extern void _ZN8S15491C2C1Ev();
extern void _ZN8S15491C2D1Ev();
Name_Map name_map_S15491C2[] = {
  NSPAIR(_ZN8S15491C2C1Ev),
  NSPAIR(_ZN8S15491C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S15491C3;
extern VTBL_ENTRY _ZTI8S15491C3[];
extern  VTBL_ENTRY _ZTV8S15491C3[];
extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S15491C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S15491C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S15491C2[];
extern void _ZN8S15491C2D1Ev();
extern void _ZN8S15491C2D0Ev();
extern void _ZN8S15491C32v7Ev();
extern void _ZN8S15491C32v8Ev();
extern void _ZN8S15491C32v9Ev();
extern void _ZN8S15491C33v10Ev();
extern void _ZN8S15491C33v11Ev();
extern void _ZN8S15491C33v12Ev();
extern void _ZN8S15491C22v1Ev();
extern void _ZN8S15491C22v2Ev();
extern void _ZN8S15491C22v3Ev();
extern void _ZN8S15491C22v4Ev();
extern void _ZN8S15491C22v5Ev();
extern void _ZN8S15491C22v6Ev();
static  VTBL_ENTRY vtc_S15491C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S15491C2[0]),
  (VTBL_ENTRY)&_ZN8S15491C2D1Ev,
  (VTBL_ENTRY)&_ZN8S15491C2D0Ev,
  (VTBL_ENTRY)&_ZN8S15491C32v7Ev,
  (VTBL_ENTRY)&_ZN8S15491C32v8Ev,
  (VTBL_ENTRY)&_ZN8S15491C32v9Ev,
  (VTBL_ENTRY)&_ZN8S15491C33v10Ev,
  (VTBL_ENTRY)&_ZN8S15491C33v11Ev,
  (VTBL_ENTRY)&_ZN8S15491C33v12Ev,
  (VTBL_ENTRY)&_ZN8S15491C22v1Ev,
  (VTBL_ENTRY)&_ZN8S15491C22v2Ev,
  (VTBL_ENTRY)&_ZN8S15491C22v3Ev,
  (VTBL_ENTRY)&_ZN8S15491C22v4Ev,
  (VTBL_ENTRY)&_ZN8S15491C22v5Ev,
  (VTBL_ENTRY)&_ZN8S15491C22v6Ev,
};
extern VTBL_ENTRY _ZTI8S15491C2[];
extern  VTBL_ENTRY _ZTV8S15491C2[];
Class_Descriptor cd_S15491C2 = {  "S15491C2", // class name
  bases_S15491C2, 2,
  &(vtc_S15491C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(232,176), // object size
  NSPAIRA(_ZTI8S15491C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S15491C2),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  S15491C1  {
  ::S15491C2 s15491c1f0;
  ::S10296C22_nt s15491c1f1;
  void  mf15491c1(); // _ZN8S15491C19mf15491c1Ev
};
//SIG(1 S15491C1) C1{ m FC2{ BC3{ vd v7 v8 v9 v10 v11 v12 FC4{ m Fp[4]}} BC5{} v1 v2 v3 v4 v5 v6 FC6{ BC7{ m Fp Fi Fp Fi[2]} FC8{ m FC9{ m FC10{ m FL[2]}} FC9 FC9 FC9}} FC11{ BC7 FC9} FC11} FC12{ BC13{ BC14{ vd v13} vd v14 Fp[2] FC15{ m FC16{ m Fp Fi[2] FC17{ m}}} FC18{ m Fp[2]}} vd FC19{ m FC20{ Fs[2] Fc[2] Fs}[12] Fi FC21{ Fs[2]}[4] Fi FC22{ m Fp[2]}}}}


void  S15491C1 ::mf15491c1(){}

static void Test_S15491C1()
{
  {
    init_simple_test("S15491C1");
    S15491C1 lv;
    check2(sizeof(lv), ABISELECT(432,340), "sizeof(S15491C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15491C1)");
    check_field_offset(lv, s15491c1f0, 0, "S15491C1.s15491c1f0");
    check_field_offset(lv, s15491c1f1, ABISELECT(232,176), "S15491C1.s15491c1f1");
  }
}
static Arrange_To_Call_Me vS15491C1(Test_S15491C1, "S15491C1", ABISELECT(432,340));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C4  {
  long double s7797c4f0;
  virtual  ~S7797C4(); // _ZN7S7797C4D1Ev
  virtual void  v3(); // _ZN7S7797C42v3Ev
  S7797C4(); // tgen
};
//SIG(-1 S7797C4) C1{ vd v1 FD}


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

static void Test_S7797C4()
{
  extern Class_Descriptor cd_S7797C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S7797C4, buf);
    S7797C4 *dp, &lv = *(dp=new (buf) S7797C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7797C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C4)");
    check_field_offset(lv, s7797c4f0, ABISELECT(16,4), "S7797C4.s7797c4f0");
    test_class_info(&lv, &cd_S7797C4);
    dp->~S7797C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C4(Test_S7797C4, "S7797C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7797C4C1Ev();
extern void _ZN7S7797C4D1Ev();
Name_Map name_map_S7797C4[] = {
  NSPAIR(_ZN7S7797C4C1Ev),
  NSPAIR(_ZN7S7797C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7797C4[];
extern void _ZN7S7797C4D1Ev();
extern void _ZN7S7797C4D0Ev();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY vtc_S7797C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C4[0]),
  (VTBL_ENTRY)&_ZN7S7797C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
Class_Descriptor cd_S7797C4 = {  "S7797C4", // class name
  0,0,//no base classes
  &(vtc_S7797C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7797C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7797C4),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  S7797C5  : S7797C4 {
  int s7797c5f0[3];
  virtual void  v4(); // _ZN7S7797C52v4Ev
  virtual void  v5(); // _ZN7S7797C52v5Ev
  virtual void  v6(); // _ZN7S7797C52v6Ev
  ~S7797C5(); // tgen
  S7797C5(); // tgen
};
//SIG(-1 S7797C5) C1{ BC2{ vd v4 FD} v1 v2 v3 Fi[3]}


void  S7797C5 ::v4(){vfunc_called(this, "_ZN7S7797C52v4Ev");}
void  S7797C5 ::v5(){vfunc_called(this, "_ZN7S7797C52v5Ev");}
void  S7797C5 ::v6(){vfunc_called(this, "_ZN7S7797C52v6Ev");}
S7797C5 ::~S7797C5(){ note_dtor("S7797C5", this);} // tgen
S7797C5 ::S7797C5(){ note_ctor("S7797C5", this);} // tgen

static void Test_S7797C5()
{
  extern Class_Descriptor cd_S7797C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S7797C5, buf);
    S7797C5 *dp, &lv = *(dp=new (buf) S7797C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S7797C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C5)");
    check_base_class_offset(lv, (S7797C4*), 0, "S7797C5");
    check_field_offset(lv, s7797c5f0, ABISELECT(32,16), "S7797C5.s7797c5f0");
    test_class_info(&lv, &cd_S7797C5);
    dp->~S7797C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C5(Test_S7797C5, "S7797C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S7797C5C1Ev();
extern void _ZN7S7797C5D1Ev();
Name_Map name_map_S7797C5[] = {
  NSPAIR(_ZN7S7797C5C1Ev),
  NSPAIR(_ZN7S7797C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
static Base_Class bases_S7797C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C5[];
extern void _ZN7S7797C5D1Ev();
extern void _ZN7S7797C5D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY vtc_S7797C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C5[0]),
  (VTBL_ENTRY)&_ZN7S7797C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
Class_Descriptor cd_S7797C5 = {  "S7797C5", // class name
  bases_S7797C5, 1,
  &(vtc_S7797C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S7797C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7797C5),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C3  : virtual S7797C4 , S7797C5 {
  virtual  ~S7797C3(); // _ZN7S7797C3D2Ev
  virtual void  v7(); // _ZN7S7797C32v7Ev
  virtual void  v8(); // _ZN7S7797C32v8Ev
  virtual void  v9(); // _ZN7S7797C32v9Ev
  virtual void  v10(); // _ZN7S7797C33v10Ev
  S7797C3(); // tgen
};
//SIG(-1 S7797C3) C1{ VBC2{ vd v5 FD} BC3{ BC2 v6 v7 v8 Fi[3]} vd v1 v2 v3 v4}


 S7797C3 ::~S7797C3(){ note_dtor("S7797C3", this);}
void  S7797C3 ::v7(){vfunc_called(this, "_ZN7S7797C32v7Ev");}
void  S7797C3 ::v8(){vfunc_called(this, "_ZN7S7797C32v8Ev");}
void  S7797C3 ::v9(){vfunc_called(this, "_ZN7S7797C32v9Ev");}
void  S7797C3 ::v10(){vfunc_called(this, "_ZN7S7797C33v10Ev");}
S7797C3 ::S7797C3(){ note_ctor("S7797C3", this);} // tgen

static void Test_S7797C3()
{
  extern Class_Descriptor cd_S7797C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S7797C3, buf);
    S7797C3 *dp, &lv = *(dp=new (buf) S7797C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S7797C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C3)");
    /*is_ambiguous_... S7797C3::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*), ABISELECT(48,28), "S7797C3");
    check_base_class_offset(lv, (S7797C4*)(S7797C5*), 0, "S7797C3");
    check_base_class_offset(lv, (S7797C5*), 0, "S7797C3");
    test_class_info(&lv, &cd_S7797C3);
    dp->~S7797C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C3(Test_S7797C3, "S7797C3", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S7797C3C1Ev();
extern void _ZN7S7797C3D2Ev();
Name_Map name_map_S7797C3[] = {
  NSPAIR(_ZN7S7797C3C1Ev),
  NSPAIR(_ZN7S7797C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
static Base_Class bases_S7797C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    ABISELECT(48,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7797C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7797C3[];
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY vtc_S7797C3[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern VTBL_ENTRY _ZTV7S7797C3[];
static  VTT_ENTRY vtt_S7797C3[] = {
  {&(_ZTV7S7797C3[3]),  3,20},
  {&(_ZTV7S7797C3[17]),  17,20},
};
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
static VTBL_ENTRY alt_thunk_names69[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C3 = {  "S7797C3", // class name
  bases_S7797C3, 3,
  &(vtc_S7797C3[0]), // expected_vtbl_contents
  &(vtt_S7797C3[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S7797C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7797C3),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C3),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names69,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C6  : S7797C4 , S7797C5 , virtual S7797C3 {
  int s7797c6f0;
  virtual  ~S7797C6(); // _ZN7S7797C6D2Ev
  virtual void  v11(); // _ZN7S7797C63v11Ev
  virtual void  v12(); // _ZN7S7797C63v12Ev
  S7797C6(); // tgen
};
//SIG(-1 S7797C6) C1{ BC2{ vd v3 FD} BC3{ BC2 v4 v5 v6 Fi[3]} VBC4{ VBC2 BC3 vd v7 v8 v9 v10} vd v1 v2 Fi}


 S7797C6 ::~S7797C6(){ note_dtor("S7797C6", this);}
void  S7797C6 ::v11(){vfunc_called(this, "_ZN7S7797C63v11Ev");}
void  S7797C6 ::v12(){vfunc_called(this, "_ZN7S7797C63v12Ev");}
S7797C6 ::S7797C6(){ note_ctor("S7797C6", this);} // tgen

static void Test_S7797C6()
{
  extern Class_Descriptor cd_S7797C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S7797C6, buf);
    S7797C6 *dp, &lv = *(dp=new (buf) S7797C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S7797C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C6)");
    /*is_ambiguous_... S7797C6::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*), 0, "S7797C6");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(32,16), "S7797C6");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*), ABISELECT(32,16), "S7797C6");
    /*is_ambiguous_... S7797C3::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(128,76), "S7797C6");
    check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(80,48), "S7797C6");
    check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(80,48), "S7797C6");
    check_base_class_offset(lv, (S7797C3*), ABISELECT(80,48), "S7797C6");
    check_field_offset(lv, s7797c6f0, ABISELECT(76,44), "S7797C6.s7797c6f0");
    test_class_info(&lv, &cd_S7797C6);
    dp->~S7797C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C6(Test_S7797C6, "S7797C6", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN7S7797C6C1Ev();
extern void _ZN7S7797C6D2Ev();
Name_Map name_map_S7797C6[] = {
  NSPAIR(_ZN7S7797C6C1Ev),
  NSPAIR(_ZN7S7797C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
static Base_Class bases_S7797C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    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
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    ABISELECT(128,76), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7797C4,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(80,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C6[];
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZThn32_N7S7797C6D1Ev,_ZThn16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn32_N7S7797C6D0Ev,_ZThn16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn80_N7S7797C6D1Ev,_ZThn48_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn80_N7S7797C6D0Ev,_ZThn48_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn128_N7S7797C6D1Ev,_ZThn76_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn128_N7S7797C6D0Ev,_ZThn76_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY vtc_S7797C6[] = {
  ABISELECT(128,76),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C6D1Ev,_ZThn16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C6D0Ev,_ZThn16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern VTBL_ENTRY _ZTV7S7797C6[];
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C6[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__7S7797C6[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
static  VTT_ENTRY vtt_S7797C6[] = {
  {&(_ZTV7S7797C6[4]),  4,46},
  {&(_ZTV7S7797C6[29]),  29,46},
  {&(_ZTV7S7797C6[43]),  43,46},
  {&(_tg__ZTV7S7797C3__7S7797C6[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__7S7797C6[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
static VTBL_ENTRY alt_thunk_names70[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7797C6D0Ev,_ZThn76_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7797C6D1Ev,_ZThn76_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7797C6D0Ev,_ZThn48_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7797C6D1Ev,_ZThn48_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C6 = {  "S7797C6", // class name
  bases_S7797C6, 7,
  &(vtc_S7797C6[0]), // expected_vtbl_contents
  &(vtt_S7797C6[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI7S7797C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7797C6),46, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C6),5, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names70,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C7  : virtual S7797C5 , S7797C6 , S7797C4 {
  virtual  ~S7797C7(); // _ZN7S7797C7D2Ev
  virtual void  v13(); // _ZN7S7797C73v13Ev
  virtual void  v14(); // _ZN7S7797C73v14Ev
  S7797C7(); // tgen
};
//SIG(-1 S7797C7) C1{ VBC2{ BC3{ vd v3 FD} v4 v5 v6 Fi[3]} BC4{ BC3 BC2 VBC5{ VBC3 BC2 vd v7 v8 v9 v10} vd v11 v12 Fi} BC3 vd v1 v2}


 S7797C7 ::~S7797C7(){ note_dtor("S7797C7", this);}
void  S7797C7 ::v13(){vfunc_called(this, "_ZN7S7797C73v13Ev");}
void  S7797C7 ::v14(){vfunc_called(this, "_ZN7S7797C73v14Ev");}
S7797C7 ::S7797C7(){ note_ctor("S7797C7", this);} // tgen

static void Test_S7797C7()
{
  extern Class_Descriptor cd_S7797C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(16,35)];
    init_test(&cd_S7797C7, buf);
    S7797C7 *dp, &lv = *(dp=new (buf) S7797C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(240,136), "sizeof(S7797C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C7)");
    /*is_ambiguous_... S7797C7::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(112,64), "S7797C7");
    /*is_ambiguous_... S7797C7::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*), ABISELECT(112,64), "S7797C7");
    /*is_ambiguous_... S7797C6::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*), 0, "S7797C7");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*), ABISELECT(32,16), "S7797C7");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*), ABISELECT(32,16), "S7797C7");
    /*is_ambiguous_... S7797C3::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(208,120), "S7797C7");
    check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(160,92), "S7797C7");
    check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(160,92), "S7797C7");
    check_base_class_offset(lv, (S7797C3*)(S7797C6*), ABISELECT(160,92), "S7797C7");
    check_base_class_offset(lv, (S7797C6*), 0, "S7797C7");
    /*is_ambiguous_... S7797C7::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*), ABISELECT(80,48), "S7797C7");
    test_class_info(&lv, &cd_S7797C7);
    dp->~S7797C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C7(Test_S7797C7, "S7797C7", ABISELECT(240,136));

#else // __cplusplus

extern void _ZN7S7797C7C1Ev();
extern void _ZN7S7797C7D2Ev();
Name_Map name_map_S7797C7[] = {
  NSPAIR(_ZN7S7797C7C1Ev),
  NSPAIR(_ZN7S7797C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
static Base_Class bases_S7797C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    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
    1, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(112,64), //bcp->offset
    25, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    8, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(208,120), //bcp->offset
    60, //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
    8, //immediately_derived
  0, 1},
  {&cd_S7797C4,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(160,92), //bcp->offset
    38, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7797C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    ABISELECT(80,48), //bcp->offset
    20, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C7[];
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void ABISELECT(_ZThn32_N7S7797C7D1Ev,_ZThn16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7797C7D0Ev,_ZThn16_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn80_N7S7797C7D1Ev,_ZThn48_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S7797C7D0Ev,_ZThn48_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C7D1Ev,_ZThn64_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S7797C7D0Ev,_ZThn64_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY vtc_S7797C7[] = {
  ABISELECT(112,64),
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C7D1Ev,_ZThn16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C7D0Ev,_ZThn16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C7D1Ev,_ZThn48_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C7D0Ev,_ZThn48_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-64),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern VTBL_ENTRY _ZTV7S7797C7[];
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__7S7797C7[] = {
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C6D1Ev,_ZThn92_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C6D0Ev,_ZThn92_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C6__7S7797C7[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C6__7S7797C7[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C7[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__7S7797C7[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
static  VTT_ENTRY vtt_S7797C7[] = {
  {&(_ZTV7S7797C7[5]),  5,67},
  {&(_tg__ZTV7S7797C6__7S7797C7[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C6__7S7797C7[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C6__7S7797C7[4]),  4,7},
  {&(_ZTV7S7797C7[32]),  32,67},
  {&(_ZTV7S7797C7[50]),  50,67},
  {&(_ZTV7S7797C7[64]),  64,67},
  {&(_tg__ZTV7S7797C3__7S7797C7[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__7S7797C7[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
static VTBL_ENTRY alt_thunk_names71[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C6D0Ev,_ZThn92_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C6D1Ev,_ZThn92_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7797C7D0Ev,_ZThn64_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7797C7D1Ev,_ZThn64_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C7 = {  "S7797C7", // class name
  bases_S7797C7, 11,
  &(vtc_S7797C7[0]), // expected_vtbl_contents
  &(vtt_S7797C7[0]), // expected_vtt_contents
  ABISELECT(240,136), // object size
  NSPAIRA(_ZTI7S7797C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7797C7),67, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C7),9, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names71,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C9  : virtual S7797C4 , S7797C7 , S7797C3 , S7797C5 , S7797C6 {
  long double s7797c9f0;
  __tsi64 s7797c9f1;
  virtual void  v15(); // _ZN7S7797C93v15Ev
  virtual void  v16(); // _ZN7S7797C93v16Ev
  virtual void  v17(); // _ZN7S7797C93v17Ev
  virtual void  v18(); // _ZN7S7797C93v18Ev
  virtual void  v19(); // _ZN7S7797C93v19Ev
  virtual void  v20(); // _ZN7S7797C93v20Ev
  virtual void  v21(); // _ZN7S7797C93v21Ev
  virtual void  v22(); // _ZN7S7797C93v22Ev
  virtual void  v23(); // _ZN7S7797C93v23Ev
  ~S7797C9(); // tgen
  S7797C9(); // tgen
};
//SIG(-1 S7797C9) C1{ VBC2{ vd v10 FD} BC3{ VBC4{ BC2 v11 v12 v13 Fi[3]} BC5{ BC2 BC4 VBC6{ VBC2 BC4 vd v14 v15 v16 v17} vd v18 v19 Fi} BC2 vd v20 v21} BC6 BC4 BC5 v1 v2 v3 v4 v5 v6 v7 v8 v9 FD FL}


void  S7797C9 ::v15(){vfunc_called(this, "_ZN7S7797C93v15Ev");}
void  S7797C9 ::v16(){vfunc_called(this, "_ZN7S7797C93v16Ev");}
void  S7797C9 ::v17(){vfunc_called(this, "_ZN7S7797C93v17Ev");}
void  S7797C9 ::v18(){vfunc_called(this, "_ZN7S7797C93v18Ev");}
void  S7797C9 ::v19(){vfunc_called(this, "_ZN7S7797C93v19Ev");}
void  S7797C9 ::v20(){vfunc_called(this, "_ZN7S7797C93v20Ev");}
void  S7797C9 ::v21(){vfunc_called(this, "_ZN7S7797C93v21Ev");}
void  S7797C9 ::v22(){vfunc_called(this, "_ZN7S7797C93v22Ev");}
void  S7797C9 ::v23(){vfunc_called(this, "_ZN7S7797C93v23Ev");}
S7797C9 ::~S7797C9(){ note_dtor("S7797C9", this);} // tgen
S7797C9 ::S7797C9(){ note_ctor("S7797C9", this);} // tgen

static void Test_S7797C9()
{
  extern Class_Descriptor cd_S7797C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(29,66)];
    init_test(&cd_S7797C9, buf);
    S7797C9 *dp, &lv = *(dp=new (buf) S7797C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(448,260), "sizeof(S7797C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C9)");
    /*is_ambiguous_... S7797C9::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*), ABISELECT(320,188), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(320,188), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(320,188), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(352,204), "S7797C9");
    /*is_ambiguous_... S7797C7::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*), ABISELECT(352,204), "S7797C9");
    /*is_ambiguous_... S7797C6::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*), 0, "S7797C9");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*), ABISELECT(32,16), "S7797C9");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*), ABISELECT(32,16), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(400,232), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(400,232), "S7797C9");
    check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*), ABISELECT(400,232), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*), ABISELECT(400,232), "S7797C9");
    check_base_class_offset(lv, (S7797C6*)(S7797C7*), 0, "S7797C9");
    /*is_ambiguous_... S7797C7::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*), ABISELECT(80,48), "S7797C9");
    check_base_class_offset(lv, (S7797C7*), 0, "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(112,64), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(112,64), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*), ABISELECT(112,64), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(160,92), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*), ABISELECT(160,92), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*), ABISELECT(208,120), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*), ABISELECT(240,136), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*), ABISELECT(240,136), "S7797C9");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*), ABISELECT(208,120), "S7797C9");
    check_field_offset(lv, s7797c9f0, ABISELECT(288,168), "S7797C9.s7797c9f0");
    check_field_offset(lv, s7797c9f1, ABISELECT(304,180), "S7797C9.s7797c9f1");
    test_class_info(&lv, &cd_S7797C9);
    dp->~S7797C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C9(Test_S7797C9, "S7797C9", ABISELECT(448,260));

#else // __cplusplus

extern void _ZN7S7797C9C1Ev();
extern void _ZN7S7797C9D1Ev();
Name_Map name_map_S7797C9[] = {
  NSPAIR(_ZN7S7797C9C1Ev),
  NSPAIR(_ZN7S7797C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
static Base_Class bases_S7797C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    ABISELECT(320,188), //bcp->offset
    72, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    ABISELECT(352,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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(352,204), //bcp->offset
    79, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    8, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C5,    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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(400,232), //bcp->offset
    92, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7797C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(80,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7797C7,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    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
    13, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7797C5,    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
    14, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(112,64), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(160,92), //bcp->offset
    47, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    ABISELECT(208,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
    18, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(240,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
    19, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(240,136), //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
    20, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(208,120), //bcp->offset
    55, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C9[];
extern void _ZN7S7797C9D1Ev();
extern void _ZN7S7797C9D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
extern void ABISELECT(_ZThn32_N7S7797C9D1Ev,_ZThn16_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S7797C9D0Ev,_ZThn16_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn80_N7S7797C9D1Ev,_ZThn48_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S7797C9D0Ev,_ZThn48_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZThn160_N7S7797C9D1Ev,_ZThn92_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C9D0Ev,_ZThn92_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZThn240_N7S7797C9D1Ev,_ZThn136_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn240_N7S7797C9D0Ev,_ZThn136_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C9D1Ev,_ZThn188_N7S7797C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C9D0Ev,_ZThn188_N7S7797C9D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn352_N7S7797C9D1Ev,_ZThn204_N7S7797C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void ABISELECT(_ZThn352_N7S7797C9D0Ev,_ZThn204_N7S7797C9D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn400_N7S7797C9D1Ev,_ZThn232_N7S7797C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev)();
extern void ABISELECT(_ZThn400_N7S7797C9D0Ev,_ZThn232_N7S7797C9D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY vtc_S7797C9[] = {
  ABISELECT(352,204),
  ABISELECT(320,188),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&_ZN7S7797C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C9D1Ev,_ZThn16_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C9D0Ev,_ZThn16_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C9D1Ev,_ZThn48_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C9D0Ev,_ZThn48_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(208,124),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S7797C9D1Ev,_ZThn92_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn160_N7S7797C9D0Ev,_ZThn92_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(112,68),
  ABISELECT(192,112),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N7S7797C9D1Ev,_ZThn136_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn240_N7S7797C9D0Ev,_ZThn136_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-232),
  ABISELECT(-80,-44),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern VTBL_ENTRY _ZTV7S7797C9[];
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C7__7S7797C9[] = {
  ABISELECT(352,204),
  ABISELECT(320,188),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C7__7S7797C9[] = {
  ABISELECT(320,188),
  ABISELECT(400,232),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn400_N7S7797C6D1Ev,_ZThn232_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn400_N7S7797C6D0Ev,_ZThn232_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C7__7S7797C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-232),
  ABISELECT(-80,-44),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C6D1Ev,_ZThn188_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C6D0Ev,_ZThn188_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C7__7S7797C9[] = {
  0,
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn352_N7S7797C7D1Ev,_ZThn204_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn352_N7S7797C7D0Ev,_ZThn204_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C7__7S7797C9[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-352,-204),
  ABISELECT(-352,-204),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn400_N7S7797C7D1Ev,_ZThn232_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn400_N7S7797C7D0Ev,_ZThn232_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C7__7S7797C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-400,-232),
  ABISELECT(-80,-44),
  ABISELECT(-400,-232),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn188_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn188_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C7__7S7797C9[] = {
  0,
  ABISELECT(-320,-188),
  ABISELECT(-320,-188),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C9[] = {
  ABISELECT(208,124),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C3D1Ev,_ZThn124_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C3D0Ev,_ZThn124_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__A__7S7797C9[] = {
  0,
  ABISELECT(-208,-124),
  ABISELECT(-208,-124),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C9[] = {
  ABISELECT(112,68),
  ABISELECT(192,112),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn192_N7S7797C6D1Ev,_ZThn112_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn192_N7S7797C6D0Ev,_ZThn112_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C6__A1__7S7797C9[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-112),
  ABISELECT(-80,-44),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C6D1Ev,_ZThn68_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn112_N7S7797C6D0Ev,_ZThn68_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C6__A1__7S7797C9[] = {
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C9[] = {
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__7S7797C9[] = {
  0,
  ABISELECT(80,44),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
static  VTT_ENTRY vtt_S7797C9[] = {
  {&(_ZTV7S7797C9[5]),  5,114},
  {&(_tg__ZTV7S7797C7__7S7797C9[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C7__7S7797C9[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C7__7S7797C9[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C7__7S7797C9[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C7__7S7797C9[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C7__7S7797C9[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C7__7S7797C9[4]),  4,7},
  {&(_tg__ZTV7S7797C3__A__7S7797C9[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__A__7S7797C9[4]),  4,7},
  {&(_tg__ZTV7S7797C6__A1__7S7797C9[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C6__A1__7S7797C9[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C6__A1__7S7797C9[4]),  4,7},
  {&(_ZTV7S7797C9[76]),  76,114},
  {&(_ZTV7S7797C9[86]),  86,114},
  {&(_ZTV7S7797C9[104]),  104,114},
  {&(_ZTV7S7797C9[37]),  37,114},
  {&(_ZTV7S7797C9[59]),  59,114},
  {&(_tg__ZTV7S7797C3__7S7797C9[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__7S7797C9[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7797C9[];
extern  VTBL_ENTRY _ZTV7S7797C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C9[];
static VTBL_ENTRY alt_thunk_names72[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C3D0Ev,_ZThn124_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C3D1Ev,_ZThn124_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7797C7D0Ev,_ZThn232_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7797C7D1Ev,_ZThn232_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn188_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C7D0Ev,_ZThn204_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn188_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C7D1Ev,_ZThn204_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7797C6D0Ev,_ZThn68_N7S7797C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C6D0Ev,_ZThn188_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7797C6D1Ev,_ZThn68_N7S7797C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C6D1Ev,_ZThn188_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7797C6D0Ev,_ZThn112_N7S7797C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7797C6D0Ev,_ZThn232_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7797C6D1Ev,_ZThn112_N7S7797C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7797C6D1Ev,_ZThn232_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7797C9D0Ev,_ZThn232_N7S7797C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn400_N7S7797C9D1Ev,_ZThn232_N7S7797C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C9D0Ev,_ZThn204_N7S7797C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C9D0Ev,_ZThn188_N7S7797C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C9D1Ev,_ZThn204_N7S7797C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C9D1Ev,_ZThn188_N7S7797C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C9 = {  "S7797C9", // class name
  bases_S7797C9, 21,
  &(vtc_S7797C9[0]), // expected_vtbl_contents
  &(vtt_S7797C9[0]), // expected_vtt_contents
  ABISELECT(448,260), // object size
  NSPAIRA(_ZTI7S7797C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7797C9),114, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C9),20, //virtual table table var
  21, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names72,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C8  : virtual S7797C5 , S7797C7 , S7797C3 , virtual S7797C6 , virtual S7797C9 {
  virtual void  v24(); // _ZN7S7797C83v24Ev
  virtual void  v25(); // _ZN7S7797C83v25Ev
  virtual void  v26(); // _ZN7S7797C83v26Ev
  virtual void  v27(); // _ZN7S7797C83v27Ev
  virtual void  v28(); // _ZN7S7797C83v28Ev
  virtual void  v29(); // _ZN7S7797C83v29Ev
  virtual void  v30(); // _ZN7S7797C83v30Ev
  virtual void  v31(); // _ZN7S7797C83v31Ev
  virtual void  v32(); // _ZN7S7797C83v32Ev
  virtual void  v33(); // _ZN7S7797C83v33Ev
  virtual void  v34(); // _ZN7S7797C83v34Ev
  ~S7797C8(); // tgen
  S7797C8(); // tgen
};
//SIG(-1 S7797C8) C1{ VBC2{ BC3{ vd v12 FD} v13 v14 v15 Fi[3]} BC4{ VBC2 BC5{ BC3 BC2 VBC6{ VBC3 BC2 vd v16 v17 v18 v19} vd v20 v21 Fi} BC3 vd v22 v23} BC6 VBC5 VBC7{ VBC3 BC4 BC6 BC2 BC5 v24 v25 v26 v27 v28 v29 v30 v31 v32 FD FL} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11}


void  S7797C8 ::v24(){vfunc_called(this, "_ZN7S7797C83v24Ev");}
void  S7797C8 ::v25(){vfunc_called(this, "_ZN7S7797C83v25Ev");}
void  S7797C8 ::v26(){vfunc_called(this, "_ZN7S7797C83v26Ev");}
void  S7797C8 ::v27(){vfunc_called(this, "_ZN7S7797C83v27Ev");}
void  S7797C8 ::v28(){vfunc_called(this, "_ZN7S7797C83v28Ev");}
void  S7797C8 ::v29(){vfunc_called(this, "_ZN7S7797C83v29Ev");}
void  S7797C8 ::v30(){vfunc_called(this, "_ZN7S7797C83v30Ev");}
void  S7797C8 ::v31(){vfunc_called(this, "_ZN7S7797C83v31Ev");}
void  S7797C8 ::v32(){vfunc_called(this, "_ZN7S7797C83v32Ev");}
void  S7797C8 ::v33(){vfunc_called(this, "_ZN7S7797C83v33Ev");}
void  S7797C8 ::v34(){vfunc_called(this, "_ZN7S7797C83v34Ev");}
S7797C8 ::~S7797C8(){ note_dtor("S7797C8", this);} // tgen
S7797C8 ::S7797C8(){ note_ctor("S7797C8", this);} // tgen

static void Test_S7797C8()
{
  extern Class_Descriptor cd_S7797C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(44,101)];
    init_test(&cd_S7797C8, buf);
    S7797C8 *dp, &lv = *(dp=new (buf) S7797C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(688,400), "sizeof(S7797C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C8)");
    /*is_ambiguous_... S7797C8::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(160,92), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*), ABISELECT(160,92), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*), ABISELECT(160,92), "S7797C8");
    /*is_ambiguous_... S7797C7::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*)(S7797C9*), ABISELECT(160,92), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*), 0, "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*), ABISELECT(32,16), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*), ABISELECT(32,16), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(256,148), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(256,148), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C9*), ABISELECT(256,148), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*)(S7797C9*), ABISELECT(256,148), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(208,120), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(208,120), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*), ABISELECT(208,120), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*), ABISELECT(208,120), "S7797C8");
    check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(208,120), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C9*), ABISELECT(208,120), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C7*), 0, "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*), ABISELECT(80,48), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C7*), 0, "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(112,64), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(112,64), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*), ABISELECT(112,64), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*), ABISELECT(288,164), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*), ABISELECT(320,180), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*), ABISELECT(320,180), "S7797C8");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*), ABISELECT(288,164), "S7797C8");
    /*is_ambiguous_... S7797C6::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(368,212), "S7797C8");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(400,228), "S7797C8");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(400,228), "S7797C8");
    check_base_class_offset(lv, (S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(368,212), "S7797C8");
    /*is_ambiguous_... S7797C7::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*)(S7797C9*), ABISELECT(448,260), "S7797C8");
    check_base_class_offset(lv, (S7797C7*)(S7797C9*), ABISELECT(368,212), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*)(S7797C9*), ABISELECT(480,276), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*)(S7797C9*), ABISELECT(480,276), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C9*), ABISELECT(480,276), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C9*), ABISELECT(528,304), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C9*), ABISELECT(528,304), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C9*), ABISELECT(576,332), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C9*), ABISELECT(608,348), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C9*), ABISELECT(608,348), "S7797C8");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C9*), ABISELECT(576,332), "S7797C8");
    check_base_class_offset(lv, (S7797C9*), ABISELECT(368,212), "S7797C8");
    test_class_info(&lv, &cd_S7797C8);
    dp->~S7797C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C8(Test_S7797C8, "S7797C8", ABISELECT(688,400));

#else // __cplusplus

extern void _ZN7S7797C8C1Ev();
extern void _ZN7S7797C8D1Ev();
Name_Map name_map_S7797C8[] = {
  NSPAIR(_ZN7S7797C8C1Ev),
  NSPAIR(_ZN7S7797C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C9;
extern VTBL_ENTRY _ZTI7S7797C9[];
extern  VTBL_ENTRY _ZTV7S7797C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C9[];
static Base_Class bases_S7797C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    ABISELECT(160,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(160,92), //bcp->offset
    51, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    27, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    28, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(256,148), //bcp->offset
    86, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S7797C4,    ABISELECT(208,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
    4, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(208,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
    5, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(208,120), //bcp->offset
    64, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7797C6,    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
    30, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(80,48), //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
    31, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S7797C7,    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
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    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
    33, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7797C5,    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
    34, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(112,64), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    ABISELECT(288,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
    7, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(320,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
    17, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(320,180), //bcp->offset
    109, //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
    9, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(288,164), //bcp->offset
    93, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    ABISELECT(368,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(400,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
    12, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(400,228), //bcp->offset
    160, //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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(368,212), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(448,260), //bcp->offset
    168, //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
    15, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7797C7,    ABISELECT(368,212), //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
    16, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(480,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(480,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
    18, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(480,276), //bcp->offset
    173, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(528,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
    20, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(528,304), //bcp->offset
    186, //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
    21, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(576,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
    22, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(608,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
    23, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(608,348), //bcp->offset
    203, //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
    24, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(576,332), //bcp->offset
    194, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S7797C9,    ABISELECT(368,212), //bcp->offset
    117, //bcp->virtual_function_table_offset
    27, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C8[];
extern void _ZN7S7797C8D1Ev();
extern void _ZN7S7797C8D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C83v24Ev();
extern void _ZN7S7797C83v25Ev();
extern void _ZN7S7797C83v26Ev();
extern void _ZN7S7797C83v27Ev();
extern void _ZN7S7797C83v28Ev();
extern void _ZN7S7797C83v29Ev();
extern void _ZN7S7797C83v30Ev();
extern void _ZN7S7797C83v31Ev();
extern void _ZN7S7797C83v32Ev();
extern void _ZN7S7797C83v33Ev();
extern void _ZN7S7797C83v34Ev();
extern void ABISELECT(_ZThn32_N7S7797C8D1Ev,_ZThn16_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S7797C8D0Ev,_ZThn16_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn80_N7S7797C8D1Ev,_ZThn48_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn80_N7S7797C8D0Ev,_ZThn48_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZThn112_N7S7797C8D1Ev,_ZThn64_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C8D0Ev,_ZThn64_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C8D1Ev,_ZThn92_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C8D0Ev,_ZThn92_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C8D1Ev,_ZThn120_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C8D0Ev,_ZThn120_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn256_N7S7797C8D1Ev,_ZThn148_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn256_N7S7797C8D0Ev,_ZThn148_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn288_N7S7797C8D1Ev,_ZThn164_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn288_N7S7797C8D0Ev,_ZThn164_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZTvn32_n40_N7S7797C8D1Ev,_ZTvn16_n20_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7797C8D0Ev,_ZTvn16_n20_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7797C8D1Ev,_ZThn212_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7797C8D0Ev,_ZThn212_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
extern void ABISELECT(_ZTvn32_n48_N7S7797C8D1Ev,_ZTvn16_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7797C8D0Ev,_ZTvn16_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTvn80_n48_N7S7797C8D1Ev,_ZTvn48_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn80_n48_N7S7797C8D0Ev,_ZTvn48_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTvn112_n48_N7S7797C8D1Ev,_ZTvn64_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn112_n48_N7S7797C8D0Ev,_ZTvn64_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTvn160_n48_N7S7797C8D1Ev,_ZTvn92_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn160_n48_N7S7797C8D0Ev,_ZTvn92_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTvn208_n48_N7S7797C8D1Ev,_ZTvn120_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn208_n48_N7S7797C8D0Ev,_ZTvn120_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZTvn240_n48_N7S7797C8D1Ev,_ZTvn136_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn240_n48_N7S7797C8D0Ev,_ZTvn136_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY vtc_S7797C8[] = {
  ABISELECT(368,212),
  ABISELECT(288,164),
  ABISELECT(160,92),
  ABISELECT(256,148),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&_ZN7S7797C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v34Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C8D1Ev,_ZThn16_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C8D0Ev,_ZThn16_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C8D1Ev,_ZThn48_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C8D0Ev,_ZThn48_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(144,84),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C8D1Ev,_ZThn64_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C8D0Ev,_ZThn64_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-120),
  ABISELECT(48,28),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-288,-164),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-288,-164),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-320,-180),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C8D1Ev,_ZTvn16_n20_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C8D0Ev,_ZTvn16_n20_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-368,-212),
  ABISELECT(-208,-120),
  ABISELECT(-112,-64),
  ABISELECT(-160,-92),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C8D1Ev,_ZTvn16_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C8D0Ev,_ZTvn16_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-448,-260),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C8D1Ev,_ZTvn48_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C8D0Ev,_ZTvn48_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(-224,-128),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C8D1Ev,_ZTvn64_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C8D0Ev,_ZTvn64_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C8D1Ev,_ZTvn92_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C8D0Ev,_ZTvn92_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-320,-184),
  ABISELECT(-368,-212),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C8D1Ev,_ZTvn120_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C8D0Ev,_ZTvn120_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-608,-348),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C8D1Ev,_ZTvn136_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C8D0Ev,_ZTvn136_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern VTBL_ENTRY _ZTV7S7797C8[];
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C7__7S7797C8[] = {
  ABISELECT(160,92),
  ABISELECT(256,148),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C7__7S7797C8[] = {
  ABISELECT(256,148),
  ABISELECT(208,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C7__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-120),
  ABISELECT(48,28),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn256_N7S7797C6D1Ev,_ZThn148_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn256_N7S7797C6D0Ev,_ZThn148_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C7__7S7797C8[] = {
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C7__7S7797C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C7__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-120),
  ABISELECT(48,28),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn256_N7S7797C7D1Ev,_ZThn148_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn256_N7S7797C7D0Ev,_ZThn148_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C7__7S7797C8[] = {
  0,
  ABISELECT(-256,-148),
  ABISELECT(-256,-148),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C8[] = {
  ABISELECT(144,84),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn144_N7S7797C3D1Ev,_ZThn84_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn144_N7S7797C3D0Ev,_ZThn84_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__A__7S7797C8[] = {
  0,
  ABISELECT(-144,-84),
  ABISELECT(-144,-84),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C8[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__7S7797C8[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C8[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C6__A1__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C6__A1__7S7797C8[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C9D1Ev();
extern void _ZN7S7797C9D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C9__7S7797C8[] = {
  ABISELECT(-208,-120),
  ABISELECT(-112,-64),
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&_ZN7S7797C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
};
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C77S7797C9__A1__7S7797C8[] = {
  ABISELECT(-208,-120),
  ABISELECT(-112,-64),
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C77S7797C9__A2__7S7797C8[] = {
  ABISELECT(-112,-64),
  ABISELECT(-160,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C77S7797C9__A2__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,92),
  ABISELECT(48,28),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C9__A2__7S7797C8[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C77S7797C9__A1__7S7797C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C77S7797C9__A1__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,92),
  ABISELECT(48,28),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C77S7797C9__A1__7S7797C8[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C9__A2__7S7797C8[] = {
  ABISELECT(-224,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C37S7797C9__A2__7S7797C8[] = {
  0,
  ABISELECT(224,128),
  ABISELECT(224,128),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C9__A3__7S7797C8[] = {
  ABISELECT(-320,-184),
  ABISELECT(-368,-212),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C9__A3__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(368,212),
  ABISELECT(48,28),
  ABISELECT(368,212),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C9__A3__7S7797C8[] = {
  0,
  ABISELECT(320,184),
  ABISELECT(320,184),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C9__7S7797C8[] = {
  0,
  ABISELECT(112,64),
  ABISELECT(112,64),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C9__7S7797C8[] = {
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C9__7S7797C8[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(160,92),
  ABISELECT(48,28),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C9__7S7797C8[] = {
  ABISELECT(-224,-128),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C9__7S7797C8[] = {
  ABISELECT(-320,-184),
  ABISELECT(-368,-212),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
static  VTT_ENTRY vtt_S7797C8[] = {
  {&(_ZTV7S7797C8[7]),  7,211},
  {&(_tg__ZTV7S7797C7__7S7797C8[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C7__7S7797C8[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C7__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C7__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C7__7S7797C8[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C7__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C7__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C3__A__7S7797C8[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__A__7S7797C8[4]),  4,7},
  {&(_ZTV7S7797C8[58]),  58,211},
  {&(_ZTV7S7797C8[76]),  76,211},
  {&(_ZTV7S7797C8[90]),  90,211},
  {&(_ZTV7S7797C8[41]),  41,211},
  {&(_ZTV7S7797C8[104]),  104,211},
  {&(_ZTV7S7797C8[111]),  111,211},
  {&(_ZTV7S7797C8[144]),  144,211},
  {&(_ZTV7S7797C8[162]),  162,211},
  {&(_ZTV7S7797C8[170]),  170,211},
  {&(_ZTV7S7797C8[176]),  176,211},
  {&(_ZTV7S7797C8[188]),  188,211},
  {&(_ZTV7S7797C8[198]),  198,211},
  {&(_ZTV7S7797C8[205]),  205,211},
  {&(_tg__ZTV7S7797C3__7S7797C8[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C6__A1__7S7797C8[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C6__A1__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C6__A1__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C9__7S7797C8[5]),  5,21},
  {&(_tg__ZTV7S7797C77S7797C9__A1__7S7797C8[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C77S7797C9__A2__7S7797C8[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C77S7797C9__A2__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C9__A2__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C77S7797C9__A1__7S7797C8[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C77S7797C9__A1__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C77S7797C9__A1__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C37S7797C9__A2__7S7797C8[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C37S7797C9__A2__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C67S7797C9__A3__7S7797C8[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C9__A3__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C9__A3__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C4__7S7797C9__7S7797C8[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C9__7S7797C8[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C9__7S7797C8[12]),  12,22},
  {&(_tg__ZTV7S7797C3__A__7S7797C9__7S7797C8[3]),  3,13},
  {&(_tg__ZTV7S7797C6__A1__7S7797C9__7S7797C8[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7797C8[];
extern  VTBL_ENTRY _ZTV7S7797C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C8[];
static VTBL_ENTRY alt_thunk_names73[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7797C3D0Ev,_ZThn84_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7797C3D1Ev,_ZThn84_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7797C7D0Ev,_ZThn148_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7797C7D1Ev,_ZThn148_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7797C6D0Ev,_ZThn148_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7797C6D1Ev,_ZThn148_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7797C8D0Ev,_ZThn212_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7797C8D1Ev,_ZThn212_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7797C8D0Ev,_ZThn164_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S7797C8D1Ev,_ZThn164_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C8D0Ev,_ZThn120_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C8D1Ev,_ZThn120_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7797C8D0Ev,_ZThn148_N7S7797C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C8D0Ev,_ZThn92_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S7797C8D1Ev,_ZThn148_N7S7797C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C8D1Ev,_ZThn92_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C8 = {  "S7797C8", // class name
  bases_S7797C8, 35,
  &(vtc_S7797C8[0]), // expected_vtbl_contents
  &(vtt_S7797C8[0]), // expected_vtt_contents
  ABISELECT(688,400), // object size
  NSPAIRA(_ZTI7S7797C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7797C8),211, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C8),46, //virtual table table var
  35, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names73,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C2  : virtual S7797C3 , virtual S7797C6 , virtual S7797C5 , S7797C7 , S7797C8 {
  virtual void  v35(); // _ZN7S7797C23v35Ev
  virtual void  v36(); // _ZN7S7797C23v36Ev
  virtual void  v37(); // _ZN7S7797C23v37Ev
  virtual void  v38(); // _ZN7S7797C23v38Ev
  virtual void  v39(); // _ZN7S7797C23v39Ev
  ~S7797C2(); // tgen
  S7797C2(); // tgen
};
//SIG(-1 S7797C2) C1{ VBC2{ VBC3{ vd v6 FD} BC4{ BC3 v7 v8 v9 Fi[3]} vd v10 v11 v12 v13} VBC5{ BC3 BC4 VBC2 vd v14 v15 Fi} VBC4 BC6{ VBC4 BC5 BC3 vd v16 v17} BC7{ VBC4 BC6 BC2 VBC5 VBC8{ VBC3 BC6 BC2 BC4 BC5 v18 v19 v20 v21 v22 v23 v24 v25 v26 FD FL} v27 v28 v29 v30 v31 v32 v33 v34 v35 v36 v37} v1 v2 v3 v4 v5}


void  S7797C2 ::v35(){vfunc_called(this, "_ZN7S7797C23v35Ev");}
void  S7797C2 ::v36(){vfunc_called(this, "_ZN7S7797C23v36Ev");}
void  S7797C2 ::v37(){vfunc_called(this, "_ZN7S7797C23v37Ev");}
void  S7797C2 ::v38(){vfunc_called(this, "_ZN7S7797C23v38Ev");}
void  S7797C2 ::v39(){vfunc_called(this, "_ZN7S7797C23v39Ev");}
S7797C2 ::~S7797C2(){ note_dtor("S7797C2", this);} // tgen
S7797C2 ::S7797C2(){ note_ctor("S7797C2", this);} // tgen

static void Test_S7797C2()
{
  extern Class_Descriptor cd_S7797C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(51,117)];
    init_test(&cd_S7797C2, buf);
    S7797C2 *dp, &lv = *(dp=new (buf) S7797C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(800,464), "sizeof(S7797C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C2)");
    /*is_ambiguous_... S7797C2::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(320,184), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*)(S7797C8*), ABISELECT(320,184), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C9*), ABISELECT(320,184), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*)(S7797C9*), ABISELECT(320,184), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*)(S7797C8*), ABISELECT(272,156), "S7797C2");
    check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C9*), ABISELECT(272,156), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*), ABISELECT(352,200), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*), ABISELECT(384,216), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*), ABISELECT(384,216), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*), ABISELECT(352,200), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C8*), ABISELECT(352,200), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(432,248), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*), ABISELECT(432,248), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*), ABISELECT(432,248), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C8*), ABISELECT(432,248), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*)(S7797C8*), ABISELECT(432,248), "S7797C2");
    /*is_ambiguous_... S7797C7::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*)(S7797C9*), ABISELECT(432,248), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*), 0, "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*), ABISELECT(32,16), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*), ABISELECT(32,16), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C7*), 0, "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*), ABISELECT(80,48), "S7797C2");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C7*), 0, "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*)(S7797C8*), ABISELECT(112,64), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*)(S7797C8*), ABISELECT(144,80), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*)(S7797C8*), ABISELECT(144,80), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C7*)(S7797C8*), ABISELECT(112,64), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*)(S7797C8*), ABISELECT(192,112), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C7*)(S7797C8*), ABISELECT(112,64), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*)(S7797C8*), ABISELECT(224,128), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*)(S7797C8*), ABISELECT(224,128), "S7797C2");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C8*), ABISELECT(224,128), "S7797C2");
    /*is_ambiguous_... S7797C6::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(480,276), "S7797C2");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(512,292), "S7797C2");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(512,292), "S7797C2");
    check_base_class_offset(lv, (S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(480,276), "S7797C2");
    /*is_ambiguous_... S7797C7::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*)(S7797C9*), ABISELECT(560,324), "S7797C2");
    check_base_class_offset(lv, (S7797C7*)(S7797C9*), ABISELECT(480,276), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*)(S7797C9*), ABISELECT(592,340), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*)(S7797C9*), ABISELECT(592,340), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C9*), ABISELECT(592,340), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C9*), ABISELECT(640,368), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C9*), ABISELECT(640,368), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C9*), ABISELECT(688,396), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C9*), ABISELECT(720,412), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C9*), ABISELECT(720,412), "S7797C2");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C9*), ABISELECT(688,396), "S7797C2");
    check_base_class_offset(lv, (S7797C9*)(S7797C8*), ABISELECT(480,276), "S7797C2");
    check_base_class_offset(lv, (S7797C8*), ABISELECT(112,64), "S7797C2");
    test_class_info(&lv, &cd_S7797C2);
    dp->~S7797C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C2(Test_S7797C2, "S7797C2", ABISELECT(800,464));

#else // __cplusplus

extern void _ZN7S7797C2C1Ev();
extern void _ZN7S7797C2D1Ev();
Name_Map name_map_S7797C2[] = {
  NSPAIR(_ZN7S7797C2C1Ev),
  NSPAIR(_ZN7S7797C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C9;
extern VTBL_ENTRY _ZTI7S7797C9[];
extern  VTBL_ENTRY _ZTV7S7797C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C9[];
extern Class_Descriptor cd_S7797C8;
extern VTBL_ENTRY _ZTI7S7797C8[];
extern  VTBL_ENTRY _ZTV7S7797C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C8[];
static Base_Class bases_S7797C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    ABISELECT(320,184), //bcp->offset
    105, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    33, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7797C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7797C5,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(272,156), //bcp->offset
    83, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(384,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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(384,216), //bcp->offset
    128, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    35, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(352,200), //bcp->offset
    112, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    ABISELECT(432,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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(432,248), //bcp->offset
    136, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    36, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    28, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(32,16), //bcp->offset
    19, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7797C6,    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
    30, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(80,48), //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
    31, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7797C7,    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
    32, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7797C4,    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
    33, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    34, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(144,80), //bcp->offset
    57, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(192,112), //bcp->offset
    65, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7797C7,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(224,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
    39, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(224,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
    40, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(224,128), //bcp->offset
    70, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    38, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(480,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
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(512,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
    27, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(512,292), //bcp->offset
    192, //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
    13, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(480,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(560,324), //bcp->offset
    200, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    41, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7797C7,    ABISELECT(480,276), //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
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(592,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
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(592,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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(592,340), //bcp->offset
    205, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    42, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(640,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
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(640,368), //bcp->offset
    218, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    43, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(688,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
    22, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(720,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
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(720,412), //bcp->offset
    235, //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
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(688,396), //bcp->offset
    226, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    44, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C9,    ABISELECT(480,276), //bcp->offset
    149, //bcp->virtual_function_table_offset
    27, //num_negative_vtable_entries(t, bcp)
    39, //bcp->index_in_construction_vtbl_array
    51, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7797C8,    ABISELECT(112,64), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    37, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C2[];
extern void _ZN7S7797C2D1Ev();
extern void _ZN7S7797C2D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C23v35Ev();
extern void _ZN7S7797C23v36Ev();
extern void _ZN7S7797C23v37Ev();
extern void _ZN7S7797C23v38Ev();
extern void _ZN7S7797C23v39Ev();
extern void ABISELECT(_ZThn32_N7S7797C2D1Ev,_ZThn16_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7797C2D0Ev,_ZThn16_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn80_N7S7797C2D1Ev,_ZThn48_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7797C2D0Ev,_ZThn48_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZThn112_N7S7797C2D1Ev,_ZThn64_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C2D0Ev,_ZThn64_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C83v24Ev();
extern void _ZN7S7797C83v25Ev();
extern void _ZN7S7797C83v26Ev();
extern void _ZN7S7797C83v27Ev();
extern void _ZN7S7797C83v28Ev();
extern void _ZN7S7797C83v29Ev();
extern void _ZN7S7797C83v30Ev();
extern void _ZN7S7797C83v31Ev();
extern void _ZN7S7797C83v32Ev();
extern void _ZN7S7797C83v33Ev();
extern void _ZN7S7797C83v34Ev();
extern void ABISELECT(_ZThn144_N7S7797C2D1Ev,_ZThn80_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7797C2D0Ev,_ZThn80_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn192_N7S7797C2D1Ev,_ZThn112_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7797C2D0Ev,_ZThn112_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZThn224_N7S7797C2D1Ev,_ZThn128_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S7797C2D0Ev,_ZThn128_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n32_N7S7797C2D1Ev,_ZTv0_n16_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C2D1Ev,_ZThn156_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C2D0Ev,_ZTv0_n16_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C2D0Ev,_ZThn156_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C2D1Ev,_ZThn184_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C2D0Ev,_ZThn184_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTv0_n40_N7S7797C2D1Ev,_ZTv0_n20_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S7797C2D1Ev,_ZThn200_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7797C2D0Ev,_ZTv0_n20_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S7797C2D0Ev,_ZThn200_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZTvn32_n40_N7S7797C2D1Ev,_ZTvn16_n20_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7797C2D0Ev,_ZTvn16_n20_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn432_N7S7797C2D1Ev,_ZThn248_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn432_N7S7797C2D0Ev,_ZThn248_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7797C2D1Ev,_ZTv0_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn480_N7S7797C2D1Ev,_ZThn276_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7797C2D0Ev,_ZTv0_n24_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn480_N7S7797C2D0Ev,_ZThn276_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
extern void ABISELECT(_ZTvn32_n48_N7S7797C2D1Ev,_ZTvn16_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7797C2D0Ev,_ZTvn16_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTvn80_n48_N7S7797C2D1Ev,_ZTvn48_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn80_n48_N7S7797C2D0Ev,_ZTvn48_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTvn112_n48_N7S7797C2D1Ev,_ZTvn64_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn112_n48_N7S7797C2D0Ev,_ZTvn64_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTvn160_n48_N7S7797C2D1Ev,_ZTvn92_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn160_n48_N7S7797C2D0Ev,_ZTvn92_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTvn208_n48_N7S7797C2D1Ev,_ZTvn120_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn208_n48_N7S7797C2D0Ev,_ZTvn120_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZTvn240_n48_N7S7797C2D1Ev,_ZTvn136_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn240_n48_N7S7797C2D0Ev,_ZTvn136_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY vtc_S7797C2[] = {
  ABISELECT(480,276),
  ABISELECT(352,200),
  ABISELECT(432,248),
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&_ZN7S7797C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v37Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v38Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v39Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C2D1Ev,_ZThn16_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C2D0Ev,_ZThn16_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C2D1Ev,_ZThn48_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C2D0Ev,_ZThn48_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(368,212),
  ABISELECT(240,136),
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C2D1Ev,_ZThn64_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C2D0Ev,_ZThn64_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v34Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S7797C2D1Ev,_ZThn80_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S7797C2D0Ev,_ZThn80_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S7797C2D1Ev,_ZThn112_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S7797C2D0Ev,_ZThn112_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(96,56),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S7797C2D1Ev,_ZThn128_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S7797C2D0Ev,_ZThn128_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C2D1Ev,_ZTv0_n16_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C2D0Ev,_ZTv0_n16_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-352,-200),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C2D1Ev,_ZTv0_n20_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C2D0Ev,_ZTv0_n20_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C2D1Ev,_ZTvn16_n20_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C2D0Ev,_ZTvn16_n20_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-480,-276),
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C2D1Ev,_ZTv0_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C2D0Ev,_ZTv0_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C2D1Ev,_ZTvn16_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C2D0Ev,_ZTvn16_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C2D1Ev,_ZTvn48_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C2D0Ev,_ZTvn48_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(-272,-156),
  ABISELECT(-592,-340),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C2D1Ev,_ZTvn64_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C2D0Ev,_ZTvn64_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  ABISELECT(-640,-368),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C2D1Ev,_ZTvn92_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C2D0Ev,_ZTvn92_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-688,-396),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C2D1Ev,_ZTvn120_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C2D0Ev,_ZTvn120_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-720,-412),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C2D1Ev,_ZTvn136_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C2D0Ev,_ZTvn136_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern VTBL_ENTRY _ZTV7S7797C2[];
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C7__7S7797C2[] = {
  ABISELECT(432,248),
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C7__A1__7S7797C2[] = {
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C6D1Ev,_ZThn156_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C6D0Ev,_ZThn156_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C7__A1__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C6D1Ev,_ZThn184_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C6D0Ev,_ZThn184_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C7__A1__7S7797C2[] = {
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7797C7D1Ev,_ZThn248_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn432_N7S7797C7D0Ev,_ZThn248_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C7__7S7797C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C7D1Ev,_ZThn156_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C7D0Ev,_ZThn156_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C7__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C7__7S7797C2[] = {
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C8D1Ev();
extern void _ZN7S7797C8D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C83v24Ev();
extern void _ZN7S7797C83v25Ev();
extern void _ZN7S7797C83v26Ev();
extern void _ZN7S7797C83v27Ev();
extern void _ZN7S7797C83v28Ev();
extern void _ZN7S7797C83v29Ev();
extern void _ZN7S7797C83v30Ev();
extern void _ZN7S7797C83v31Ev();
extern void _ZN7S7797C83v32Ev();
extern void _ZN7S7797C83v33Ev();
extern void _ZN7S7797C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C8__7S7797C2[] = {
  ABISELECT(368,212),
  ABISELECT(240,136),
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&_ZN7S7797C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v34Ev,
};
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C77S7797C8__A1__7S7797C2[] = {
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C77S7797C8__A2__7S7797C2[] = {
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C6D1Ev,_ZThn92_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C6D0Ev,_ZThn92_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C77S7797C8__A2__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C8__A2__7S7797C2[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C77S7797C8__A1__7S7797C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C77S7797C8__A1__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C77S7797C8__A1__7S7797C2[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C8__A1__7S7797C2[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S7797C3D1Ev,_ZThn56_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S7797C3D0Ev,_ZThn56_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C37S7797C8__A1__7S7797C2[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C8D1Ev,_ZThn184_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C8D0Ev,_ZThn184_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C8__7S7797C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C8D1Ev,_ZThn92_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C8D0Ev,_ZThn92_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C8__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C8D1Ev,_ZThn120_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C8D0Ev,_ZThn120_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C8__7S7797C2[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZThn112_N7S7797C8D1Ev,_ZThn64_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C8D0Ev,_ZThn64_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C8__7S7797C2[] = {
  ABISELECT(96,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C8D1Ev,_ZThn64_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C8D0Ev,_ZThn64_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn240_N7S7797C8D1Ev,_ZThn136_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn240_N7S7797C8D0Ev,_ZThn136_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C8__7S7797C2[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTvn32_n40_N7S7797C8D1Ev,_ZTvn16_n20_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7797C8D0Ev,_ZTvn16_n20_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C6__A4__7S7797C8__7S7797C2[] = {
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C8D1Ev,_ZTvn16_n20_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C8D0Ev,_ZTvn16_n20_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7797C8D1Ev,_ZThn212_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7797C8D0Ev,_ZThn212_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C9__7S7797C8__7S7797C2[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-368,-212),
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
};
extern void ABISELECT(_ZTvn32_n48_N7S7797C8D1Ev,_ZTvn16_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7797C8D0Ev,_ZTvn16_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C67S7797C77S7797C9__A5__7S7797C8__7S7797C2[] = {
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C8D1Ev,_ZTvn16_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C8D0Ev,_ZTvn16_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTvn80_n48_N7S7797C8D1Ev,_ZTvn48_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn80_n48_N7S7797C8D0Ev,_ZTvn48_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C47S7797C77S7797C9__A11__7S7797C8__7S7797C2[] = {
  ABISELECT(-448,-260),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C8D1Ev,_ZTvn48_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C8D0Ev,_ZTvn48_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTvn112_n48_N7S7797C8D1Ev,_ZTvn64_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn112_n48_N7S7797C8D0Ev,_ZTvn64_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C9__A2__7S7797C8__7S7797C2[] = {
  ABISELECT(-272,-156),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C8D1Ev,_ZTvn64_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C8D0Ev,_ZTvn64_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTvn160_n48_N7S7797C8D1Ev,_ZTvn92_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn160_n48_N7S7797C8D0Ev,_ZTvn92_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C9__A7__7S7797C8__7S7797C2[] = {
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C8D1Ev,_ZTvn92_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C8D0Ev,_ZTvn92_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTvn208_n48_N7S7797C8D1Ev,_ZTvn120_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn208_n48_N7S7797C8D0Ev,_ZTvn120_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C9__A3__7S7797C8__7S7797C2[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C8D1Ev,_ZTvn120_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C8D0Ev,_ZTvn120_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTvn240_n48_N7S7797C8D1Ev,_ZTvn136_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn240_n48_N7S7797C8D0Ev,_ZTvn136_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C67S7797C9__A8__7S7797C8__7S7797C2[] = {
  ABISELECT(-608,-348),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C8D1Ev,_ZTvn136_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C8D0Ev,_ZTvn136_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C2[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__7S7797C2[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__7S7797C2[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C6__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C6__7S7797C2[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C9D1Ev();
extern void _ZN7S7797C9D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C9__7S7797C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&_ZN7S7797C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
};
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C77S7797C9__A2__7S7797C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C77S7797C9__A3__7S7797C2[] = {
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C77S7797C9__A3__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(48,28),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C9__A3__7S7797C2[] = {
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C77S7797C9__A2__7S7797C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C77S7797C9__A2__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(48,28),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C77S7797C9__A2__7S7797C2[] = {
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C9__A2__7S7797C2[] = {
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C37S7797C9__A2__7S7797C2[] = {
  0,
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C9__A4__7S7797C2[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C9__A4__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,240),
  ABISELECT(48,28),
  ABISELECT(416,240),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C9__A4__7S7797C2[] = {
  0,
  ABISELECT(368,212),
  ABISELECT(368,212),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C9__7S7797C2[] = {
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C9__7S7797C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C9__7S7797C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(48,28),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C9__7S7797C2[] = {
  ABISELECT(-272,-156),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C9__7S7797C2[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
static  VTT_ENTRY vtt_S7797C2[] = {
  {&(_ZTV7S7797C2[7]),  7,243},
  {&(_tg__ZTV7S7797C7__7S7797C2[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C7__A1__7S7797C2[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C7__A1__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C7__A1__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C7__7S7797C2[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C7__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C7__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C8__7S7797C2[7]),  7,25},
  {&(_tg__ZTV7S7797C77S7797C8__A1__7S7797C2[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C77S7797C8__A2__7S7797C2[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C77S7797C8__A2__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C8__A2__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C77S7797C8__A1__7S7797C2[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C77S7797C8__A1__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C77S7797C8__A1__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C37S7797C8__A1__7S7797C2[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C37S7797C8__A1__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C8__7S7797C2[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C8__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C8__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C3__A__7S7797C8__7S7797C2[3]),  3,13},
  {&(_tg__ZTV7S7797C6__A1__7S7797C8__7S7797C2[11]),  11,16},
  {&(_tg__ZTV7S7797C57S7797C6__A4__7S7797C8__7S7797C2[2]),  2,8},
  {&(_tg__ZTV7S7797C9__7S7797C8__7S7797C2[27]),  27,43},
  {&(_tg__ZTV7S7797C57S7797C67S7797C77S7797C9__A5__7S7797C8__7S7797C2[2]),  2,8},
  {&(_tg__ZTV7S7797C47S7797C77S7797C9__A11__7S7797C8__7S7797C2[2]),  2,5},
  {&(_tg__ZTV7S7797C37S7797C9__A2__7S7797C8__7S7797C2[3]),  3,13},
  {&(_tg__ZTV7S7797C57S7797C9__A7__7S7797C8__7S7797C2[2]),  2,8},
  {&(_tg__ZTV7S7797C67S7797C9__A3__7S7797C8__7S7797C2[4]),  4,9},
  {&(_tg__ZTV7S7797C57S7797C67S7797C9__A8__7S7797C8__7S7797C2[2]),  2,8},
  {&(_ZTV7S7797C2[95]),  95,243},
  {&(_ZTV7S7797C2[109]),  109,243},
  {&(_ZTV7S7797C2[123]),  123,243},
  {&(_ZTV7S7797C2[130]),  130,243},
  {&(_ZTV7S7797C2[143]),  143,243},
  {&(_ZTV7S7797C2[39]),  39,243},
  {&(_ZTV7S7797C2[73]),  73,243},
  {&(_ZTV7S7797C2[176]),  176,243},
  {&(_ZTV7S7797C2[194]),  194,243},
  {&(_ZTV7S7797C2[202]),  202,243},
  {&(_ZTV7S7797C2[208]),  208,243},
  {&(_ZTV7S7797C2[220]),  220,243},
  {&(_ZTV7S7797C2[230]),  230,243},
  {&(_ZTV7S7797C2[237]),  237,243},
  {&(_tg__ZTV7S7797C3__7S7797C2[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C6__7S7797C2[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C6__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C6__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C9__7S7797C2[5]),  5,21},
  {&(_tg__ZTV7S7797C77S7797C9__A2__7S7797C2[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C77S7797C9__A3__7S7797C2[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C77S7797C9__A3__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C9__A3__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C77S7797C9__A2__7S7797C2[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C77S7797C9__A2__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C77S7797C9__A2__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C37S7797C9__A2__7S7797C2[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C37S7797C9__A2__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C67S7797C9__A4__7S7797C2[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C9__A4__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C9__A4__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C4__7S7797C9__7S7797C2[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C9__7S7797C2[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C9__7S7797C2[12]),  12,22},
  {&(_tg__ZTV7S7797C3__A__7S7797C9__7S7797C2[3]),  3,13},
  {&(_tg__ZTV7S7797C6__A1__7S7797C9__7S7797C2[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7797C2[];
extern  VTBL_ENTRY _ZTV7S7797C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C2[];
static VTBL_ENTRY alt_thunk_names74[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7797C8D0Ev,_ZThn212_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7797C8D1Ev,_ZThn212_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7797C8D0Ev,_ZThn136_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7797C8D1Ev,_ZThn136_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C8D0Ev,_ZThn92_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C8D1Ev,_ZThn92_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C8D0Ev,_ZThn120_N7S7797C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C8D0Ev,_ZThn184_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C8D1Ev,_ZThn120_N7S7797C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C8D1Ev,_ZThn184_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7797C3D0Ev,_ZThn56_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7797C3D1Ev,_ZThn56_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C7D0Ev,_ZThn156_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C7D1Ev,_ZThn156_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C7D0Ev,_ZThn248_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C7D1Ev,_ZThn248_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C6D0Ev,_ZThn184_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C6D1Ev,_ZThn184_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C6D0Ev,_ZThn92_N7S7797C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C6D0Ev,_ZThn156_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C6D1Ev,_ZThn92_N7S7797C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C6D1Ev,_ZThn156_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C2D0Ev,_ZTv0_n24_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7797C2D0Ev,_ZThn276_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C2D1Ev,_ZTv0_n24_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7797C2D1Ev,_ZThn276_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C2D0Ev,_ZTv0_n20_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C2D0Ev,_ZThn200_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C2D1Ev,_ZTv0_n20_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C2D1Ev,_ZThn200_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C2D0Ev,_ZThn248_N7S7797C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C2D0Ev,_ZThn184_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C2D1Ev,_ZThn248_N7S7797C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C2D1Ev,_ZThn184_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C2D0Ev,_ZTv0_n16_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C2D0Ev,_ZThn156_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C2D1Ev,_ZTv0_n16_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C2D1Ev,_ZThn156_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C2 = {  "S7797C2", // class name
  bases_S7797C2, 42,
  &(vtc_S7797C2[0]), // expected_vtbl_contents
  &(vtt_S7797C2[0]), // expected_vtt_contents
  ABISELECT(800,464), // object size
  NSPAIRA(_ZTI7S7797C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S7797C2),243, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C2),68, //virtual table table var
  42, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names74,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7797C1  : S7797C2 {
  virtual void  v1(); // _ZN7S7797C12v1Ev
  virtual void  v2(); // _ZN7S7797C12v2Ev
  ~S7797C1(); // tgen
  S7797C1(); // tgen
};
//SIG(1 S7797C1) C1{ BC2{ VBC3{ VBC4{ vd v3 FD} BC5{ BC4 v4 v5 v6 Fi[3]} vd v7 v8 v9 v10} VBC6{ BC4 BC5 VBC3 vd v11 v12 Fi} VBC5 BC7{ VBC5 BC6 BC4 vd v13 v14} BC8{ VBC5 BC7 BC3 VBC6 VBC9{ VBC4 BC7 BC3 BC5 BC6 v15 v16 v17 v18 v19 v20 v21 v22 v23 FD FL} v24 v25 v26 v27 v28 v29 v30 v31 v32 v33 v34} v35 v36 v37 v38 v39} v1 v2}


void  S7797C1 ::v1(){vfunc_called(this, "_ZN7S7797C12v1Ev");}
void  S7797C1 ::v2(){vfunc_called(this, "_ZN7S7797C12v2Ev");}
S7797C1 ::~S7797C1(){ note_dtor("S7797C1", this);} // tgen
S7797C1 ::S7797C1(){ note_ctor("S7797C1", this);} // tgen

static void Test_S7797C1()
{
  extern Class_Descriptor cd_S7797C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(51,117)];
    init_test(&cd_S7797C1, buf);
    S7797C1 *dp, &lv = *(dp=new (buf) S7797C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(800,464), "sizeof(S7797C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7797C1)");
    /*is_ambiguous_... S7797C1::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*), ABISELECT(320,184), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*)(S7797C8*)(S7797C2*), ABISELECT(320,184), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C9*), ABISELECT(320,184), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C3*)(S7797C9*), ABISELECT(320,184), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C2*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*)(S7797C2*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(272,156), "S7797C1");
    check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C6*)(S7797C9*), ABISELECT(272,156), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*), ABISELECT(352,200), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*), ABISELECT(384,216), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*), ABISELECT(384,216), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C2*), ABISELECT(352,200), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C8*)(S7797C2*), ABISELECT(352,200), "S7797C1");
    /*is_ambiguous_... S7797C1::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*), ABISELECT(432,248), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C2*), ABISELECT(432,248), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*)(S7797C2*), ABISELECT(432,248), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C8*)(S7797C2*), ABISELECT(432,248), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(432,248), "S7797C1");
    /*is_ambiguous_... S7797C7::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C7*)(S7797C9*), ABISELECT(432,248), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*)(S7797C2*), 0, "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*)(S7797C2*), ABISELECT(32,16), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*)(S7797C2*), ABISELECT(32,16), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C7*)(S7797C2*), 0, "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*)(S7797C2*), ABISELECT(80,48), "S7797C1");
    /*is_ambiguous_... S7797C2::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C7*)(S7797C2*), 0, "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(112,64), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(144,80), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(144,80), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(112,64), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(192,112), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C7 */ AMB_check_base_class_offset(lv, (S7797C7*)(S7797C8*)(S7797C2*), ABISELECT(112,64), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*)(S7797C8*)(S7797C2*), ABISELECT(224,128), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*)(S7797C8*)(S7797C2*), ABISELECT(224,128), "S7797C1");
    /*is_ambiguous_... S7797C8::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C8*)(S7797C2*), ABISELECT(224,128), "S7797C1");
    /*is_ambiguous_... S7797C6::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(480,276), "S7797C1");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(512,292), "S7797C1");
    /*is_ambiguous_... S7797C6::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(512,292), "S7797C1");
    check_base_class_offset(lv, (S7797C6*)(S7797C7*)(S7797C9*), ABISELECT(480,276), "S7797C1");
    /*is_ambiguous_... S7797C7::S7797C4 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C7*)(S7797C9*), ABISELECT(560,324), "S7797C1");
    check_base_class_offset(lv, (S7797C7*)(S7797C9*), ABISELECT(480,276), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C3*)(S7797C9*), ABISELECT(592,340), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C3*)(S7797C9*), ABISELECT(592,340), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C3 */ AMB_check_base_class_offset(lv, (S7797C3*)(S7797C9*), ABISELECT(592,340), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C9*), ABISELECT(640,368), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C5 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C9*), ABISELECT(640,368), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C6*)(S7797C9*), ABISELECT(688,396), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C4*)(S7797C5*)(S7797C6*)(S7797C9*), ABISELECT(720,412), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C5*)(S7797C6*)(S7797C9*), ABISELECT(720,412), "S7797C1");
    /*is_ambiguous_... S7797C9::S7797C6 */ AMB_check_base_class_offset(lv, (S7797C6*)(S7797C9*), ABISELECT(688,396), "S7797C1");
    check_base_class_offset(lv, (S7797C9*)(S7797C8*)(S7797C2*), ABISELECT(480,276), "S7797C1");
    check_base_class_offset(lv, (S7797C8*)(S7797C2*), ABISELECT(112,64), "S7797C1");
    check_base_class_offset(lv, (S7797C2*), 0, "S7797C1");
    test_class_info(&lv, &cd_S7797C1);
    dp->~S7797C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7797C1(Test_S7797C1, "S7797C1", ABISELECT(800,464));

#else // __cplusplus

extern void _ZN7S7797C1C1Ev();
extern void _ZN7S7797C1D1Ev();
Name_Map name_map_S7797C1[] = {
  NSPAIR(_ZN7S7797C1C1Ev),
  NSPAIR(_ZN7S7797C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C7;
extern VTBL_ENTRY _ZTI7S7797C7[];
extern  VTBL_ENTRY _ZTV7S7797C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C7[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C3;
extern VTBL_ENTRY _ZTI7S7797C3[];
extern  VTBL_ENTRY _ZTV7S7797C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C3[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C4;
extern VTBL_ENTRY _ZTI7S7797C4[];
extern  VTBL_ENTRY _ZTV7S7797C4[];
extern Class_Descriptor cd_S7797C5;
extern VTBL_ENTRY _ZTI7S7797C5[];
extern  VTBL_ENTRY _ZTV7S7797C5[];
extern Class_Descriptor cd_S7797C6;
extern VTBL_ENTRY _ZTI7S7797C6[];
extern  VTBL_ENTRY _ZTV7S7797C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C6[];
extern Class_Descriptor cd_S7797C9;
extern VTBL_ENTRY _ZTI7S7797C9[];
extern  VTBL_ENTRY _ZTV7S7797C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C9[];
extern Class_Descriptor cd_S7797C8;
extern VTBL_ENTRY _ZTI7S7797C8[];
extern  VTBL_ENTRY _ZTV7S7797C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C8[];
extern Class_Descriptor cd_S7797C2;
extern VTBL_ENTRY _ZTI7S7797C2[];
extern  VTBL_ENTRY _ZTV7S7797C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C2[];
static Base_Class bases_S7797C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7797C4,    ABISELECT(320,184), //bcp->offset
    107, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    48, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7797C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7797C5,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(272,156), //bcp->offset
    85, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    47, //bcp->index_in_construction_vtbl_array
    61, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7797C4,    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
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(384,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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(384,216), //bcp->offset
    130, //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
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(352,200), //bcp->offset
    114, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    49, //bcp->index_in_construction_vtbl_array
    63, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7797C4,    ABISELECT(432,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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(432,248), //bcp->offset
    138, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    51, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S7797C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    13, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    28, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(32,16), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    29, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S7797C6,    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
    30, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(80,48), //bcp->offset
    29, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    31, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S7797C7,    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
    32, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    33, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7797C4,    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
    34, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(144,80), //bcp->offset
    59, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    35, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    36, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(192,112), //bcp->offset
    67, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    37, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S7797C7,    ABISELECT(112,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    38, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(224,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
    39, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(224,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
    40, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(224,128), //bcp->offset
    72, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    53, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    41, //init_seq
    41, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(480,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
    11, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(512,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
    27, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(512,292), //bcp->offset
    194, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    55, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(480,276), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    68, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(560,324), //bcp->offset
    202, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    56, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S7797C7,    ABISELECT(480,276), //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
    16, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(592,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
    17, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(592,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
    18, //init_seq
    33, //immediately_derived
  0, 0},
  {&cd_S7797C3,    ABISELECT(592,340), //bcp->offset
    207, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    57, //bcp->index_in_construction_vtbl_array
    74, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(640,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
    20, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(640,368), //bcp->offset
    220, //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
    21, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(688,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
    22, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7797C4,    ABISELECT(720,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
    23, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S7797C5,    ABISELECT(720,412), //bcp->offset
    237, //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
    24, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S7797C6,    ABISELECT(688,396), //bcp->offset
    228, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    59, //bcp->index_in_construction_vtbl_array
    76, //bcp->base_subarray_index_in_construction_vtbl_array
    25, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S7797C9,    ABISELECT(480,276), //bcp->offset
    151, //bcp->virtual_function_table_offset
    27, //num_negative_vtable_entries(t, bcp)
    54, //bcp->index_in_construction_vtbl_array
    66, //bcp->base_subarray_index_in_construction_vtbl_array
    26, //init_seq
    41, //immediately_derived
  0, 1},
  {&cd_S7797C8,    ABISELECT(112,64), //bcp->offset
    34, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    52, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    42, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S7797C2,    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
    43, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7797C1[];
extern void _ZN7S7797C1D1Ev();
extern void _ZN7S7797C1D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C23v35Ev();
extern void _ZN7S7797C23v36Ev();
extern void _ZN7S7797C23v37Ev();
extern void _ZN7S7797C23v38Ev();
extern void _ZN7S7797C23v39Ev();
extern void _ZN7S7797C12v1Ev();
extern void _ZN7S7797C12v2Ev();
extern void ABISELECT(_ZThn32_N7S7797C1D1Ev,_ZThn16_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7797C1D0Ev,_ZThn16_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn80_N7S7797C1D1Ev,_ZThn48_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7797C1D0Ev,_ZThn48_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZThn112_N7S7797C1D1Ev,_ZThn64_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C1D0Ev,_ZThn64_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C83v24Ev();
extern void _ZN7S7797C83v25Ev();
extern void _ZN7S7797C83v26Ev();
extern void _ZN7S7797C83v27Ev();
extern void _ZN7S7797C83v28Ev();
extern void _ZN7S7797C83v29Ev();
extern void _ZN7S7797C83v30Ev();
extern void _ZN7S7797C83v31Ev();
extern void _ZN7S7797C83v32Ev();
extern void _ZN7S7797C83v33Ev();
extern void _ZN7S7797C83v34Ev();
extern void ABISELECT(_ZThn144_N7S7797C1D1Ev,_ZThn80_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7797C1D0Ev,_ZThn80_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZThn192_N7S7797C1D1Ev,_ZThn112_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7797C1D0Ev,_ZThn112_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZThn224_N7S7797C1D1Ev,_ZThn128_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn224_N7S7797C1D0Ev,_ZThn128_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n32_N7S7797C1D1Ev,_ZTv0_n16_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C1D1Ev,_ZThn156_N7S7797C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C1D0Ev,_ZTv0_n16_N7S7797C1D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C1D0Ev,_ZThn156_N7S7797C1D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C1D1Ev,_ZTv0_n12_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C1D1Ev,_ZThn184_N7S7797C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C1D0Ev,_ZTv0_n12_N7S7797C1D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C1D0Ev,_ZThn184_N7S7797C1D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTv0_n40_N7S7797C1D1Ev,_ZTv0_n20_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn352_N7S7797C1D1Ev,_ZThn200_N7S7797C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7797C1D0Ev,_ZTv0_n20_N7S7797C1D0Ev)();
extern void ABISELECT(_ZThn352_N7S7797C1D0Ev,_ZThn200_N7S7797C1D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZTvn32_n40_N7S7797C1D1Ev,_ZTvn16_n20_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7797C1D0Ev,_ZTvn16_n20_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7797C1D1Ev,_ZTv0_n12_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn432_N7S7797C1D1Ev,_ZThn248_N7S7797C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C1D0Ev,_ZTv0_n12_N7S7797C1D0Ev)();
extern void ABISELECT(_ZThn432_N7S7797C1D0Ev,_ZThn248_N7S7797C1D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7797C1D1Ev,_ZTv0_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZThn480_N7S7797C1D1Ev,_ZThn276_N7S7797C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7797C1D0Ev,_ZTv0_n24_N7S7797C1D0Ev)();
extern void ABISELECT(_ZThn480_N7S7797C1D0Ev,_ZThn276_N7S7797C1D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
extern void ABISELECT(_ZTvn32_n48_N7S7797C1D1Ev,_ZTvn16_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7797C1D0Ev,_ZTvn16_n24_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTvn80_n48_N7S7797C1D1Ev,_ZTvn48_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn80_n48_N7S7797C1D0Ev,_ZTvn48_n24_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void ABISELECT(_ZTvn112_n48_N7S7797C1D1Ev,_ZTvn64_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn112_n48_N7S7797C1D0Ev,_ZTvn64_n24_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
extern void ABISELECT(_ZTvn160_n48_N7S7797C1D1Ev,_ZTvn92_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn160_n48_N7S7797C1D0Ev,_ZTvn92_n24_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void ABISELECT(_ZTvn208_n48_N7S7797C1D1Ev,_ZTvn120_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn208_n48_N7S7797C1D0Ev,_ZTvn120_n24_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void ABISELECT(_ZTvn240_n48_N7S7797C1D1Ev,_ZTvn136_n24_N7S7797C1D1Ev)();
extern void ABISELECT(_ZTvn240_n48_N7S7797C1D0Ev,_ZTvn136_n24_N7S7797C1D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY vtc_S7797C1[] = {
  ABISELECT(480,276),
  ABISELECT(352,200),
  ABISELECT(432,248),
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&_ZN7S7797C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v37Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v38Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v39Ev,
  (VTBL_ENTRY)&_ZN7S7797C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7797C12v2Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C1D1Ev,_ZThn16_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7797C1D0Ev,_ZThn16_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C1D1Ev,_ZThn48_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N7S7797C1D0Ev,_ZThn48_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(368,212),
  ABISELECT(240,136),
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C1D1Ev,_ZThn64_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C1D0Ev,_ZThn64_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v34Ev,
  ABISELECT(-144,-80),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S7797C1D1Ev,_ZThn80_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn144_N7S7797C1D0Ev,_ZThn80_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S7797C1D1Ev,_ZThn112_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn192_N7S7797C1D0Ev,_ZThn112_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(96,56),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S7797C1D1Ev,_ZThn128_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S7797C1D0Ev,_ZThn128_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C1D1Ev,_ZTv0_n16_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C1D0Ev,_ZTv0_n16_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C1D1Ev,_ZTv0_n12_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C1D0Ev,_ZTv0_n12_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-352,-200),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C1D1Ev,_ZTv0_n20_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C1D0Ev,_ZTv0_n20_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C1D1Ev,_ZTvn16_n20_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C1D0Ev,_ZTvn16_n20_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C1D1Ev,_ZTv0_n12_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C1D0Ev,_ZTv0_n12_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-480,-276),
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C1D1Ev,_ZTv0_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C1D0Ev,_ZTv0_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C1D1Ev,_ZTvn16_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C1D0Ev,_ZTvn16_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C1D1Ev,_ZTvn48_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C1D0Ev,_ZTvn48_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  ABISELECT(-272,-156),
  ABISELECT(-592,-340),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C1D1Ev,_ZTvn64_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C1D0Ev,_ZTvn64_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
  ABISELECT(-640,-368),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C1D1Ev,_ZTvn92_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C1D0Ev,_ZTvn92_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-688,-396),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C1D1Ev,_ZTvn120_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C1D0Ev,_ZTvn120_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  ABISELECT(-720,-412),
  (VTBL_ENTRY)&(_ZTI7S7797C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C1D1Ev,_ZTvn136_n24_N7S7797C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C1D0Ev,_ZTvn136_n24_N7S7797C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern VTBL_ENTRY _ZTV7S7797C1[];
extern void _ZN7S7797C2D1Ev();
extern void _ZN7S7797C2D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C23v35Ev();
extern void _ZN7S7797C23v36Ev();
extern void _ZN7S7797C23v37Ev();
extern void _ZN7S7797C23v38Ev();
extern void _ZN7S7797C23v39Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C2__7S7797C1[] = {
  ABISELECT(480,276),
  ABISELECT(352,200),
  ABISELECT(432,248),
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&_ZN7S7797C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v35Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v36Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v37Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v38Ev,
  (VTBL_ENTRY)&_ZN7S7797C23v39Ev,
};
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C77S7797C2__7S7797C1[] = {
  ABISELECT(432,248),
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C77S7797C2__A1__7S7797C1[] = {
  ABISELECT(320,184),
  ABISELECT(272,156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C6D1Ev,_ZThn156_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C6D0Ev,_ZThn156_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C77S7797C2__A1__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C6D1Ev,_ZThn184_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C6D0Ev,_ZThn184_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C2__A1__7S7797C1[] = {
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn432_N7S7797C7D1Ev,_ZThn248_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn432_N7S7797C7D0Ev,_ZThn248_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C77S7797C2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C7D1Ev,_ZThn156_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C7D0Ev,_ZThn156_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C77S7797C2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C77S7797C2__7S7797C1[] = {
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C8D1Ev();
extern void _ZN7S7797C8D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C83v24Ev();
extern void _ZN7S7797C83v25Ev();
extern void _ZN7S7797C83v26Ev();
extern void _ZN7S7797C83v27Ev();
extern void _ZN7S7797C83v28Ev();
extern void _ZN7S7797C83v29Ev();
extern void _ZN7S7797C83v30Ev();
extern void _ZN7S7797C83v31Ev();
extern void _ZN7S7797C83v32Ev();
extern void _ZN7S7797C83v33Ev();
extern void _ZN7S7797C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(368,212),
  ABISELECT(240,136),
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&_ZN7S7797C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v34Ev,
};
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C77S7797C87S7797C2__A1__7S7797C1[] = {
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C77S7797C87S7797C2__A2__7S7797C1[] = {
  ABISELECT(208,120),
  ABISELECT(160,92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C6D1Ev,_ZThn92_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C6D0Ev,_ZThn92_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C77S7797C87S7797C2__A2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C87S7797C2__A2__7S7797C1[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C77S7797C87S7797C2__A1__7S7797C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C77S7797C87S7797C2__A1__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C77S7797C87S7797C2__A1__7S7797C1[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C87S7797C2__A1__7S7797C1[] = {
  ABISELECT(96,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn96_N7S7797C3D1Ev,_ZThn56_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn96_N7S7797C3D0Ev,_ZThn56_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C37S7797C87S7797C2__A1__7S7797C1[] = {
  0,
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C8D1Ev,_ZThn184_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C8D0Ev,_ZThn184_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C87S7797C2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn160_N7S7797C8D1Ev,_ZThn92_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn160_N7S7797C8D0Ev,_ZThn92_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C87S7797C2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-160,-92),
  ABISELECT(48,28),
  ABISELECT(-160,-92),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C8D1Ev,_ZThn120_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn208_N7S7797C8D0Ev,_ZThn120_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C87S7797C2__7S7797C1[] = {
  0,
  ABISELECT(-208,-120),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZThn112_N7S7797C8D1Ev,_ZThn64_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C8D0Ev,_ZThn64_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(96,56),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C8D1Ev,_ZThn64_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C8D0Ev,_ZThn64_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn240_N7S7797C8D1Ev,_ZThn136_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn240_N7S7797C8D0Ev,_ZThn136_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-240,-136),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-240,-136),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTvn32_n40_N7S7797C8D1Ev,_ZTvn16_n20_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7797C8D0Ev,_ZTvn16_n20_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C6__A4__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C8D1Ev,_ZTvn16_n20_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C8D0Ev,_ZTvn16_n20_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZThn368_N7S7797C8D1Ev,_ZThn212_N7S7797C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev)();
extern void ABISELECT(_ZThn368_N7S7797C8D0Ev,_ZThn212_N7S7797C8D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C9__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-368,-212),
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  ABISELECT(-368,-212),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
};
extern void ABISELECT(_ZTvn32_n48_N7S7797C8D1Ev,_ZTvn16_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7797C8D0Ev,_ZTvn16_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C67S7797C77S7797C9__A5__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-400,-228),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C8D1Ev,_ZTvn16_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C8D0Ev,_ZTvn16_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTvn80_n48_N7S7797C8D1Ev,_ZTvn48_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn80_n48_N7S7797C8D0Ev,_ZTvn48_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C47S7797C77S7797C9__A11__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-448,-260),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C8D1Ev,_ZTvn48_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C8D0Ev,_ZTvn48_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTvn112_n48_N7S7797C8D1Ev,_ZTvn64_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn112_n48_N7S7797C8D0Ev,_ZTvn64_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C9__A2__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C8D1Ev,_ZTvn64_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C8D0Ev,_ZTvn64_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTvn160_n48_N7S7797C8D1Ev,_ZTvn92_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn160_n48_N7S7797C8D0Ev,_ZTvn92_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C9__A7__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-528,-304),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C8D1Ev,_ZTvn92_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C8D0Ev,_ZTvn92_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTvn208_n48_N7S7797C8D1Ev,_ZTvn120_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn208_n48_N7S7797C8D0Ev,_ZTvn120_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C9__A3__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-576,-332),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C8D1Ev,_ZTvn120_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C8D0Ev,_ZTvn120_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTvn240_n48_N7S7797C8D1Ev,_ZTvn136_n24_N7S7797C8D1Ev)();
extern void ABISELECT(_ZTvn240_n48_N7S7797C8D0Ev,_ZTvn136_n24_N7S7797C8D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C67S7797C9__A8__7S7797C87S7797C2__7S7797C1[] = {
  ABISELECT(-608,-348),
  (VTBL_ENTRY)&(_ZTI7S7797C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C8D1Ev,_ZTvn136_n24_N7S7797C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C8D0Ev,_ZTvn136_n24_N7S7797C8D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C2D1Ev,_ZTv0_n16_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn272_N7S7797C2D1Ev,_ZThn156_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7797C2D0Ev,_ZTv0_n16_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn272_N7S7797C2D0Ev,_ZThn156_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-272,-156),
  ABISELECT(48,28),
  ABISELECT(-272,-156),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C2D1Ev,_ZTv0_n16_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C2D0Ev,_ZTv0_n16_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn320_N7S7797C2D1Ev,_ZThn184_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn320_N7S7797C2D0Ev,_ZThn184_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C2__7S7797C1[] = {
  0,
  ABISELECT(-320,-184),
  ABISELECT(-320,-184),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n40_N7S7797C2D1Ev,_ZTv0_n20_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn352_N7S7797C2D1Ev,_ZThn200_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S7797C2D0Ev,_ZTv0_n20_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn352_N7S7797C2D0Ev,_ZThn200_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__7S7797C2__7S7797C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-352,-200),
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  ABISELECT(-352,-200),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C2D1Ev,_ZTv0_n20_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S7797C2D0Ev,_ZTv0_n20_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTvn32_n40_N7S7797C2D1Ev,_ZTvn16_n20_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn32_n40_N7S7797C2D0Ev,_ZTvn16_n20_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C6__A1__7S7797C2__7S7797C1[] = {
  ABISELECT(-384,-216),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C2D1Ev,_ZTvn16_n20_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n40_N7S7797C2D0Ev,_ZTvn16_n20_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn432_N7S7797C2D1Ev,_ZThn248_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn432_N7S7797C2D0Ev,_ZThn248_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__A2__7S7797C2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-432,-248),
  ABISELECT(-432,-248),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZThn112_N7S7797C2D1Ev,_ZThn64_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C2D0Ev,_ZThn64_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C83v24Ev();
extern void _ZN7S7797C83v25Ev();
extern void _ZN7S7797C83v26Ev();
extern void _ZN7S7797C83v27Ev();
extern void _ZN7S7797C83v28Ev();
extern void _ZN7S7797C83v29Ev();
extern void _ZN7S7797C83v30Ev();
extern void _ZN7S7797C83v31Ev();
extern void _ZN7S7797C83v32Ev();
extern void _ZN7S7797C83v33Ev();
extern void _ZN7S7797C83v34Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C8__7S7797C2__7S7797C1[] = {
  ABISELECT(368,212),
  ABISELECT(240,136),
  ABISELECT(320,184),
  ABISELECT(208,120),
  ABISELECT(160,92),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C2D1Ev,_ZThn64_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C2D0Ev,_ZThn64_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v31Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v32Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v33Ev,
  (VTBL_ENTRY)&_ZN7S7797C83v34Ev,
};
extern void ABISELECT(_ZThn224_N7S7797C2D1Ev,_ZThn128_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn224_N7S7797C2D0Ev,_ZThn128_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C8__A1__7S7797C2__7S7797C1[] = {
  ABISELECT(96,56),
  ABISELECT(-224,-128),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S7797C2D1Ev,_ZThn128_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn224_N7S7797C2D0Ev,_ZThn128_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7797C2D1Ev,_ZTv0_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZThn480_N7S7797C2D1Ev,_ZThn276_N7S7797C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7797C2D0Ev,_ZTv0_n24_N7S7797C2D0Ev)();
extern void ABISELECT(_ZThn480_N7S7797C2D0Ev,_ZThn276_N7S7797C2D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C9__7S7797C2__7S7797C1[] = {
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  ABISELECT(112,64),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-480,-276),
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  ABISELECT(-480,-276),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C2D1Ev,_ZTv0_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7797C2D0Ev,_ZTv0_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
};
extern void ABISELECT(_ZTvn32_n48_N7S7797C2D1Ev,_ZTvn16_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7797C2D0Ev,_ZTvn16_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C67S7797C77S7797C9__A6__7S7797C2__7S7797C1[] = {
  ABISELECT(-512,-292),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C2D1Ev,_ZTvn16_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7797C2D0Ev,_ZTvn16_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTvn80_n48_N7S7797C2D1Ev,_ZTvn48_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn80_n48_N7S7797C2D0Ev,_ZTvn48_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C47S7797C77S7797C9__A14__7S7797C2__7S7797C1[] = {
  ABISELECT(-560,-324),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C2D1Ev,_ZTvn48_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n48_N7S7797C2D0Ev,_ZTvn48_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTvn112_n48_N7S7797C2D1Ev,_ZTvn64_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn112_n48_N7S7797C2D0Ev,_ZTvn64_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C9__A2__7S7797C2__7S7797C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-592,-340),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C2D1Ev,_ZTvn64_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn112_n48_N7S7797C2D0Ev,_ZTvn64_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTvn160_n48_N7S7797C2D1Ev,_ZTvn92_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn160_n48_N7S7797C2D0Ev,_ZTvn92_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C9__A8__7S7797C2__7S7797C1[] = {
  ABISELECT(-640,-368),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C2D1Ev,_ZTvn92_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn160_n48_N7S7797C2D0Ev,_ZTvn92_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTvn208_n48_N7S7797C2D1Ev,_ZTvn120_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn208_n48_N7S7797C2D0Ev,_ZTvn120_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C9__A4__7S7797C2__7S7797C1[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-688,-396),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C2D1Ev,_ZTvn120_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn208_n48_N7S7797C2D0Ev,_ZTvn120_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTvn240_n48_N7S7797C2D1Ev,_ZTvn136_n24_N7S7797C2D1Ev)();
extern void ABISELECT(_ZTvn240_n48_N7S7797C2D0Ev,_ZTvn136_n24_N7S7797C2D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C57S7797C67S7797C9__A9__7S7797C2__7S7797C1[] = {
  ABISELECT(-720,-412),
  (VTBL_ENTRY)&(_ZTI7S7797C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C2D1Ev,_ZTvn136_n24_N7S7797C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn240_n48_N7S7797C2D0Ev,_ZTvn136_n24_N7S7797C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C1[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev)() __attribute__((weak));
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C3__7S7797C1[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__7S7797C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-80,-44),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C6__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(80,44),
  ABISELECT(48,28),
  ABISELECT(80,44),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C6__7S7797C1[] = {
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C9D1Ev();
extern void _ZN7S7797C9D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
extern void _ZN7S7797C93v15Ev();
extern void _ZN7S7797C93v16Ev();
extern void _ZN7S7797C93v17Ev();
extern void _ZN7S7797C93v18Ev();
extern void _ZN7S7797C93v19Ev();
extern void _ZN7S7797C93v20Ev();
extern void _ZN7S7797C93v21Ev();
extern void _ZN7S7797C93v22Ev();
extern void _ZN7S7797C93v23Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C9__7S7797C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&_ZN7S7797C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v15Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v16Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v17Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v19Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v20Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v21Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v22Ev,
  (VTBL_ENTRY)&_ZN7S7797C93v23Ev,
};
extern void _ZN7S7797C7D1Ev();
extern void _ZN7S7797C7D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
extern void _ZN7S7797C73v13Ev();
extern void _ZN7S7797C73v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C77S7797C9__A2__7S7797C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&_ZN7S7797C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v13Ev,
  (VTBL_ENTRY)&_ZN7S7797C73v14Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C77S7797C9__A3__7S7797C1[] = {
  ABISELECT(-160,-92),
  ABISELECT(-208,-120),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C77S7797C9__A3__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(48,28),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C9__A3__7S7797C1[] = {
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C77S7797C9__A2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C77S7797C9__A2__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(48,28),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A3__7S7797C77S7797C9__A2__7S7797C1[] = {
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C3D1Ev();
extern void _ZN7S7797C3D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C37S7797C9__A2__7S7797C1[] = {
  ABISELECT(-272,-156),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&_ZN7S7797C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C37S7797C9__A2__7S7797C1[] = {
  0,
  ABISELECT(272,156),
  ABISELECT(272,156),
  (VTBL_ENTRY)&(_ZTI7S7797C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void _ZN7S7797C6D1Ev();
extern void _ZN7S7797C6D0Ev();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C67S7797C9__A4__7S7797C1[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  0,
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&_ZN7S7797C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7797C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C67S7797C9__A4__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(416,240),
  ABISELECT(48,28),
  ABISELECT(416,240),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__A2__7S7797C67S7797C9__A4__7S7797C1[] = {
  0,
  ABISELECT(368,212),
  ABISELECT(368,212),
  (VTBL_ENTRY)&(_ZTI7S7797C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C4__7S7797C9__7S7797C1[] = {
  0,
  ABISELECT(160,92),
  ABISELECT(160,92),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C5__7S7797C9__7S7797C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D1Ev,_ZTv0_n12_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7797C9D0Ev,_ZTv0_n12_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__7S7797C9__7S7797C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(208,120),
  ABISELECT(48,28),
  ABISELECT(208,120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D1Ev,_ZTv0_n16_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7797C9D0Ev,_ZTv0_n16_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C52v4Ev();
extern void _ZN7S7797C52v5Ev();
extern void _ZN7S7797C52v6Ev();
extern void _ZN7S7797C32v7Ev();
extern void _ZN7S7797C32v8Ev();
extern void _ZN7S7797C32v9Ev();
extern void _ZN7S7797C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C3__A__7S7797C9__7S7797C1[] = {
  ABISELECT(-272,-156),
  ABISELECT(-112,-64),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D1Ev,_ZThn64_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn112_N7S7797C9D0Ev,_ZThn64_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7797C52v6Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7797C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7797C33v10Ev,
};
extern void ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev)();
extern void ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev)();
extern void _ZN7S7797C42v3Ev();
extern void _ZN7S7797C63v11Ev();
extern void _ZN7S7797C63v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7797C6__A1__7S7797C9__7S7797C1[] = {
  ABISELECT(-368,-212),
  ABISELECT(-416,-240),
  ABISELECT(-208,-120),
  (VTBL_ENTRY)&(_ZTI7S7797C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D1Ev,_ZThn120_N7S7797C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn208_N7S7797C9D0Ev,_ZThn120_N7S7797C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7797C42v3Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v11Ev,
  (VTBL_ENTRY)&_ZN7S7797C63v12Ev,
};
static  VTT_ENTRY vtt_S7797C1[] = {
  {&(_ZTV7S7797C1[7]),  7,245},
  {&(_tg__ZTV7S7797C2__7S7797C1[7]),  7,19},
  {&(_tg__ZTV7S7797C77S7797C2__7S7797C1[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C77S7797C2__A1__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C77S7797C2__A1__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C2__A1__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C77S7797C2__7S7797C1[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C77S7797C2__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C77S7797C2__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C87S7797C2__7S7797C1[7]),  7,25},
  {&(_tg__ZTV7S7797C77S7797C87S7797C2__A1__7S7797C1[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C77S7797C87S7797C2__A2__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C77S7797C87S7797C2__A2__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C87S7797C2__A2__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C77S7797C87S7797C2__A1__7S7797C1[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C77S7797C87S7797C2__A1__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C77S7797C87S7797C2__A1__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C37S7797C87S7797C2__A1__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C37S7797C87S7797C2__A1__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C87S7797C2__7S7797C1[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C87S7797C2__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C87S7797C2__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C3__A__7S7797C87S7797C2__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C6__A1__7S7797C87S7797C2__7S7797C1[11]),  11,16},
  {&(_tg__ZTV7S7797C57S7797C6__A4__7S7797C87S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C9__7S7797C87S7797C2__7S7797C1[27]),  27,43},
  {&(_tg__ZTV7S7797C57S7797C67S7797C77S7797C9__A5__7S7797C87S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C47S7797C77S7797C9__A11__7S7797C87S7797C2__7S7797C1[2]),  2,5},
  {&(_tg__ZTV7S7797C37S7797C9__A2__7S7797C87S7797C2__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C57S7797C9__A7__7S7797C87S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C67S7797C9__A3__7S7797C87S7797C2__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C57S7797C67S7797C9__A8__7S7797C87S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C3__7S7797C2__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__7S7797C2__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C6__7S7797C2__7S7797C1[11]),  11,16},
  {&(_tg__ZTV7S7797C57S7797C6__A1__7S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C5__A2__7S7797C2__7S7797C1[7]),  7,13},
  {&(_tg__ZTV7S7797C8__7S7797C2__7S7797C1[7]),  7,25},
  {&(_tg__ZTV7S7797C37S7797C8__A1__7S7797C2__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C9__7S7797C2__7S7797C1[27]),  27,43},
  {&(_tg__ZTV7S7797C57S7797C67S7797C77S7797C9__A6__7S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C47S7797C77S7797C9__A14__7S7797C2__7S7797C1[2]),  2,5},
  {&(_tg__ZTV7S7797C37S7797C9__A2__7S7797C2__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C57S7797C9__A8__7S7797C2__7S7797C1[2]),  2,8},
  {&(_tg__ZTV7S7797C67S7797C9__A4__7S7797C2__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C57S7797C67S7797C9__A9__7S7797C2__7S7797C1[2]),  2,8},
  {&(_ZTV7S7797C1[97]),  97,245},
  {&(_ZTV7S7797C1[111]),  111,245},
  {&(_ZTV7S7797C1[125]),  125,245},
  {&(_ZTV7S7797C1[132]),  132,245},
  {&(_ZTV7S7797C1[145]),  145,245},
  {&(_ZTV7S7797C1[41]),  41,245},
  {&(_ZTV7S7797C1[75]),  75,245},
  {&(_ZTV7S7797C1[178]),  178,245},
  {&(_ZTV7S7797C1[196]),  196,245},
  {&(_ZTV7S7797C1[204]),  204,245},
  {&(_ZTV7S7797C1[210]),  210,245},
  {&(_ZTV7S7797C1[222]),  222,245},
  {&(_ZTV7S7797C1[232]),  232,245},
  {&(_ZTV7S7797C1[239]),  239,245},
  {&(_tg__ZTV7S7797C3__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C3__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C6__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C6__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C6__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C9__7S7797C1[5]),  5,21},
  {&(_tg__ZTV7S7797C77S7797C9__A2__7S7797C1[5]),  5,12},
  {&(_tg__ZTV7S7797C67S7797C77S7797C9__A3__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C77S7797C9__A3__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C77S7797C9__A3__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C77S7797C9__A2__7S7797C1[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C77S7797C9__A2__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A3__7S7797C77S7797C9__A2__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C37S7797C9__A2__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C4__7S7797C37S7797C9__A2__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C67S7797C9__A4__7S7797C1[4]),  4,9},
  {&(_tg__ZTV7S7797C3__7S7797C67S7797C9__A4__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C4__A2__7S7797C67S7797C9__A4__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C4__7S7797C9__7S7797C1[4]),  4,7},
  {&(_tg__ZTV7S7797C5__7S7797C9__7S7797C1[7]),  7,13},
  {&(_tg__ZTV7S7797C3__7S7797C9__7S7797C1[12]),  12,22},
  {&(_tg__ZTV7S7797C3__A__7S7797C9__7S7797C1[3]),  3,13},
  {&(_tg__ZTV7S7797C6__A1__7S7797C9__7S7797C1[4]),  4,9},
};
extern VTBL_ENTRY _ZTI7S7797C1[];
extern  VTBL_ENTRY _ZTV7S7797C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7797C1[];
static VTBL_ENTRY alt_thunk_names75[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C2D0Ev,_ZTv0_n24_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7797C2D0Ev,_ZThn276_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C2D1Ev,_ZTv0_n24_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7797C2D1Ev,_ZThn276_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C2D0Ev,_ZTv0_n20_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C2D0Ev,_ZThn200_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C2D1Ev,_ZTv0_n20_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C2D1Ev,_ZThn200_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C2D0Ev,_ZTv0_n12_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C2D0Ev,_ZThn248_N7S7797C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C2D0Ev,_ZThn184_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C2D1Ev,_ZTv0_n12_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C2D1Ev,_ZThn248_N7S7797C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C2D1Ev,_ZThn184_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C2D0Ev,_ZTv0_n16_N7S7797C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C2D0Ev,_ZThn156_N7S7797C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C2D1Ev,_ZTv0_n16_N7S7797C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C2D1Ev,_ZThn156_N7S7797C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C8D0Ev,_ZTv0_n24_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7797C8D0Ev,_ZThn212_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C8D1Ev,_ZTv0_n24_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn368_N7S7797C8D1Ev,_ZThn212_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C8D0Ev,_ZTv0_n20_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7797C8D0Ev,_ZThn136_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C8D1Ev,_ZTv0_n20_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn240_N7S7797C8D1Ev,_ZThn136_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C8D0Ev,_ZTv0_n16_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C8D0Ev,_ZThn92_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C8D1Ev,_ZTv0_n16_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C8D1Ev,_ZThn92_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C8D0Ev,_ZTv0_n12_N7S7797C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C8D0Ev,_ZThn120_N7S7797C8D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C8D0Ev,_ZThn184_N7S7797C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C8D1Ev,_ZTv0_n12_N7S7797C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C8D1Ev,_ZThn120_N7S7797C8D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C8D1Ev,_ZThn184_N7S7797C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D0Ev,_ZTv0_n12_N7S7797C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D0Ev,_ZThn28_N7S7797C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7797C3D0Ev,_ZThn56_N7S7797C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C3D1Ev,_ZTv0_n12_N7S7797C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7797C3D1Ev,_ZThn28_N7S7797C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7797C3D1Ev,_ZThn56_N7S7797C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D0Ev,_ZTv0_n16_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D0Ev,_ZThn92_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C7D0Ev,_ZThn156_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C7D1Ev,_ZTv0_n16_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C7D1Ev,_ZThn92_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C7D1Ev,_ZThn156_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D0Ev,_ZTv0_n12_N7S7797C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D0Ev,_ZThn120_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D0Ev,_ZThn184_N7S7797C7D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C7D0Ev,_ZThn248_N7S7797C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C7D1Ev,_ZTv0_n12_N7S7797C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C7D1Ev,_ZThn120_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C7D1Ev,_ZThn184_N7S7797C7D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C7D1Ev,_ZThn248_N7S7797C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D0Ev,_ZTv0_n12_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D0Ev,_ZThn120_N7S7797C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C6D0Ev,_ZThn184_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C6D1Ev,_ZTv0_n12_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S7797C6D1Ev,_ZThn120_N7S7797C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C6D1Ev,_ZThn184_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D0Ev,_ZTv0_n16_N7S7797C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C6D0Ev,_ZThn92_N7S7797C6D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C6D0Ev,_ZThn156_N7S7797C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C6D1Ev,_ZTv0_n16_N7S7797C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S7797C6D1Ev,_ZThn92_N7S7797C6D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C6D1Ev,_ZThn156_N7S7797C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C1D0Ev,_ZTv0_n24_N7S7797C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7797C1D0Ev,_ZThn276_N7S7797C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7797C1D1Ev,_ZTv0_n24_N7S7797C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn480_N7S7797C1D1Ev,_ZThn276_N7S7797C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C1D0Ev,_ZTv0_n20_N7S7797C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C1D0Ev,_ZThn200_N7S7797C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S7797C1D1Ev,_ZTv0_n20_N7S7797C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn352_N7S7797C1D1Ev,_ZThn200_N7S7797C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C1D0Ev,_ZTv0_n12_N7S7797C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C1D0Ev,_ZThn248_N7S7797C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C1D0Ev,_ZThn184_N7S7797C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7797C1D1Ev,_ZTv0_n12_N7S7797C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn432_N7S7797C1D1Ev,_ZThn248_N7S7797C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn320_N7S7797C1D1Ev,_ZThn184_N7S7797C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C1D0Ev,_ZTv0_n16_N7S7797C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C1D0Ev,_ZThn156_N7S7797C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7797C1D1Ev,_ZTv0_n16_N7S7797C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn272_N7S7797C1D1Ev,_ZThn156_N7S7797C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7797C1 = {  "S7797C1", // class name
  bases_S7797C1, 43,
  &(vtc_S7797C1[0]), // expected_vtbl_contents
  &(vtt_S7797C1[0]), // expected_vtt_contents
  ABISELECT(800,464), // object size
  NSPAIRA(_ZTI7S7797C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7797C1),245, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7797C1),83, //virtual table table var
  43, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names75,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20489C5  : S9624C48 {
};
//SIG(-1 S20489C5) C1{ BC2{ m}}



static void Test_S20489C5()
{
  extern Class_Descriptor cd_S20489C5;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S20489C5, buf);
    S20489C5 &lv = *(new (buf) S20489C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S20489C5)");
    check2(__alignof__(lv), 1, "__alignof__(S20489C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20489C5");
    test_class_info(&lv, &cd_S20489C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C5(Test_S20489C5, "S20489C5", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20489C6_nt  : virtual S9624C48 {
  int s20489c6f0;
  ~S20489C6_nt(); // tgen
  S20489C6_nt(); // tgen
};
//SIG(-1 S20489C6_nt) C1{ VBC2{ m} Fi}


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

//skip512 S20489C6_nt

#else // __cplusplus

extern void _ZN11S20489C6_ntC1Ev();
extern void _ZN11S20489C6_ntD1Ev();
Name_Map name_map_S20489C6_nt[] = {
  NSPAIR(_ZN11S20489C6_ntC1Ev),
  NSPAIR(_ZN11S20489C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20489C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI11S20489C6_nt[];
static  VTBL_ENTRY vtc_S20489C6_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern VTBL_ENTRY _ZTV11S20489C6_nt[];
static  VTT_ENTRY vtt_S20489C6_nt[] = {
  {&(_ZTV11S20489C6_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
VTBL_ENTRY *P__ZTI11S20489C6_nt = _ZTI11S20489C6_nt; 
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
Class_Descriptor cd_S20489C6_nt = {  "S20489C6_nt", // class name
  bases_S20489C6_nt, 1,
  &(vtc_S20489C6_nt[0]), // expected_vtbl_contents
  &(vtt_S20489C6_nt[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S20489C6_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S20489C6_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S20489C6_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  S20489C8  {
  int  :0;
  void *s20489c8f1;
  void  mf20489c8(); // _ZN8S20489C89mf20489c8Ev
};
//SIG(-1 S20489C8) C1{ m Fi:0 Fp}


void  S20489C8 ::mf20489c8(){}

static void Test_S20489C8()
{
  {
    init_simple_test("S20489C8");
    static S20489C8 lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20489C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C8)");
    check_field_offset(lv, s20489c8f1, 0, "S20489C8.s20489c8f1");
  }
}
static Arrange_To_Call_Me vS20489C8(Test_S20489C8, "S20489C8", ABISELECT(8,4));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20489C8[];
VTBL_ENTRY *P__ZTI8S20489C8 = _ZTI8S20489C8; 
Class_Descriptor cd_S20489C8 = {  "S20489C8", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20489C8),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  S20489C3  : S9624C48 , S20489C5 , S20489C6_nt , virtual S1540C9_nt , virtual S20489C8 {
  ::S20489C5 s20489c3f0;
  ~S20489C3(); // tgen
  S20489C3(); // tgen
};
//SIG(-1 S20489C3) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S20489C3()
{
  extern Class_Descriptor cd_S20489C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20489C3, buf);
    S20489C3 *dp, &lv = *(dp=new (buf) S20489C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20489C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C3)");
    /*is_ambiguous_... S20489C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20489C3");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(12,8), "S20489C3");
    check_base_class_offset(lv, (S20489C5*), ABISELECT(12,8), "S20489C3");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), ABISELECT(14,10), "S20489C3");
    check_base_class_offset(lv, (S20489C6_nt*), 0, "S20489C3");
    check_base_class_offset(lv, (S1540C9_nt*), ABISELECT(16,12), "S20489C3");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S20489C3");
    check_field_offset(lv, s20489c3f0, ABISELECT(13,9), "S20489C3.s20489c3f0");
    test_class_info(&lv, &cd_S20489C3);
    dp->~S20489C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C3(Test_S20489C3, "S20489C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20489C3C1Ev();
extern void _ZN8S20489C3D1Ev();
Name_Map name_map_S20489C3[] = {
  NSPAIR(_ZN8S20489C3C1Ev),
  NSPAIR(_ZN8S20489C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S20489C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C6_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_S1540C9_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20489C3[];
static  VTBL_ENTRY vtc_S20489C3[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
extern VTBL_ENTRY _ZTV8S20489C3[];
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__8S20489C3[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C3[] = {
  {&(_ZTV8S20489C3[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt__8S20489C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
Class_Descriptor cd_S20489C3 = {  "S20489C3", // class name
  bases_S20489C3, 7,
  &(vtc_S20489C3[0]), // expected_vtbl_contents
  &(vtt_S20489C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20489C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20489C3),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20489C3),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  S20489C2  : virtual S20489C3 {
  int s20489c2f0;
  ~S20489C2(); // tgen
  S20489C2(); // tgen
};
//SIG(-1 S20489C2) C1{ VBC2{ BC3{ m} BC4{ BC3} BC5{ VBC3 Fi} VBC6{ m Fi} VBC7{ m Fi:0 Fp} FC4} Fi}


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

static void Test_S20489C2()
{
  extern Class_Descriptor cd_S20489C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S20489C2, buf);
    S20489C2 *dp, &lv = *(dp=new (buf) S20489C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20489C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C2)");
    /*is_ambiguous_... S20489C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*), ABISELECT(16,8), "S20489C2");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*), ABISELECT(28,16), "S20489C2");
    check_base_class_offset(lv, (S20489C5*)(S20489C3*), ABISELECT(28,16), "S20489C2");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*), 0, "S20489C2");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*), ABISELECT(16,8), "S20489C2");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*), ABISELECT(32,20), "S20489C2");
    check_base_class_offset(lv, (S20489C8*)(S20489C3*), ABISELECT(40,24), "S20489C2");
    check_base_class_offset(lv, (S20489C3*), ABISELECT(16,8), "S20489C2");
    check_field_offset(lv, s20489c2f0, ABISELECT(8,4), "S20489C2.s20489c2f0");
    test_class_info(&lv, &cd_S20489C2);
    dp->~S20489C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C2(Test_S20489C2, "S20489C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20489C2C1Ev();
extern void _ZN8S20489C2D1Ev();
Name_Map name_map_S20489C2[] = {
  NSPAIR(_ZN8S20489C2C1Ev),
  NSPAIR(_ZN8S20489C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
static Base_Class bases_S20489C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20489C5,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C6_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1540C9_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20489C3,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20489C2[];
static  VTBL_ENTRY vtc_S20489C2[] = {
  ABISELECT(40,24),
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C2[0]),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20489C2[0]),
};
extern VTBL_ENTRY _ZTV8S20489C2[];
static  VTBL_ENTRY _tg__ZTV8S20489C3__8S20489C2[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C3__8S20489C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C2[] = {
  {&(_ZTV8S20489C2[6]),  6,11},
  {&(_ZTV8S20489C2[11]),  11,11},
  {&(_tg__ZTV8S20489C3__8S20489C2[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C3__8S20489C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20489C2[];
extern  VTBL_ENTRY _ZTV8S20489C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C2[];
Class_Descriptor cd_S20489C2 = {  "S20489C2", // class name
  bases_S20489C2, 8,
  &(vtc_S20489C2[0]), // expected_vtbl_contents
  &(vtt_S20489C2[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20489C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20489C2),11, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20489C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20489C10_nt  {
  int s20489c10f0;
  void  mf20489c10(); // _ZN12S20489C10_nt10mf20489c10Ev
};
//SIG(-1 S20489C10_nt) C1{ m Fi}


void  S20489C10_nt ::mf20489c10(){}

//skip512 S20489C10_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI12S20489C10_nt[];
VTBL_ENTRY *P__ZTI12S20489C10_nt = _ZTI12S20489C10_nt; 
Class_Descriptor cd_S20489C10_nt = {  "S20489C10_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI12S20489C10_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  S20489C13  : virtual S9624C39 , S9624C48 , S1540C9_nt , S20489C5 , S20489C8 {
  ~S20489C13(); // tgen
  S20489C13(); // tgen
};
//SIG(-1 S20489C13) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S20489C13()
{
  extern Class_Descriptor cd_S20489C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20489C13, buf);
    S20489C13 *dp, &lv = *(dp=new (buf) S20489C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20489C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C13)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20489C13");
    /*is_ambiguous_... S20489C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20489C13");
    check_base_class_offset(lv, (S1540C9_nt*), ABISELECT(8,4), "S20489C13");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(12,8), "S20489C13");
    check_base_class_offset(lv, (S20489C5*), ABISELECT(12,8), "S20489C13");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20489C13");
    test_class_info(&lv, &cd_S20489C13);
    dp->~S20489C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C13(Test_S20489C13, "S20489C13", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20489C13C1Ev();
extern void _ZN9S20489C13D1Ev();
Name_Map name_map_S20489C13[] = {
  NSPAIR(_ZN9S20489C13C1Ev),
  NSPAIR(_ZN9S20489C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S20489C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1540C9_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20489C13[];
static  VTBL_ENTRY vtc_S20489C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C13[0]),
};
extern VTBL_ENTRY _ZTV9S20489C13[];
static  VTT_ENTRY vtt_S20489C13[] = {
  {&(_ZTV9S20489C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C13[];
extern  VTBL_ENTRY _ZTV9S20489C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C13[];
Class_Descriptor cd_S20489C13 = {  "S20489C13", // class name
  bases_S20489C13, 6,
  &(vtc_S20489C13[0]), // expected_vtbl_contents
  &(vtt_S20489C13[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20489C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20489C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C13),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  S20489C12  : virtual S20489C13 , virtual S1540C9_nt , S20489C3 {
  short s20489c12f0;
  virtual  ~S20489C12(); // _ZN9S20489C12D2Ev
  S20489C12(); // tgen
};
//SIG(-1 S20489C12) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}} VBC5 BC8{ BC4 BC6 BC9{ VBC4 Fi} VBC5 VBC7 FC6} vd Fs}


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

static void Test_S20489C12()
{
  extern Class_Descriptor cd_S20489C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20489C12, buf);
    S20489C12 *dp, &lv = *(dp=new (buf) S20489C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20489C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C12)");
    check_base_class_offset(lv, (S9624C39*)(S20489C13*), 0, "S20489C12");
    /*is_ambiguous_... S20489C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C13*), ABISELECT(16,12), "S20489C12");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C13*), ABISELECT(24,16), "S20489C12");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C13*), ABISELECT(28,20), "S20489C12");
    check_base_class_offset(lv, (S20489C5*)(S20489C13*), ABISELECT(28,20), "S20489C12");
    check_base_class_offset(lv, (S20489C8*)(S20489C13*), ABISELECT(32,20), "S20489C12");
    check_base_class_offset(lv, (S20489C13*), ABISELECT(16,12), "S20489C12");
    /*is_ambiguous_... S20489C12::S1540C9_nt */ AMB_check_base_class_offset(lv, (S1540C9_nt*), ABISELECT(40,24), "S20489C12");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*), ABISELECT(40,24), "S20489C12");
    /*is_ambiguous_... S20489C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*), 0, "S20489C12");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*), ABISELECT(12,8), "S20489C12");
    check_base_class_offset(lv, (S20489C5*)(S20489C3*), ABISELECT(12,8), "S20489C12");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*), ABISELECT(44,28), "S20489C12");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*), 0, "S20489C12");
    check_base_class_offset(lv, (S20489C8*)(S20489C3*), ABISELECT(48,28), "S20489C12");
    check_base_class_offset(lv, (S20489C3*), 0, "S20489C12");
    check_field_offset(lv, s20489c12f0, ABISELECT(14,10), "S20489C12.s20489c12f0");
    test_class_info(&lv, &cd_S20489C12);
    dp->~S20489C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C12(Test_S20489C12, "S20489C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S20489C12C1Ev();
extern void _ZN9S20489C12D2Ev();
Name_Map name_map_S20489C12[] = {
  NSPAIR(_ZN9S20489C12C1Ev),
  NSPAIR(_ZN9S20489C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C13;
extern VTBL_ENTRY _ZTI9S20489C13[];
extern  VTBL_ENTRY _ZTV9S20489C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C13[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
static Base_Class bases_S20489C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1540C9_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C13,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1540C9_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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20489C6_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
    2, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S20489C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20489C12[];
extern void _ZN9S20489C12D1Ev();
extern void _ZN9S20489C12D0Ev();
static  VTBL_ENTRY vtc_S20489C12[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
  (VTBL_ENTRY)&_ZN9S20489C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
};
extern VTBL_ENTRY _ZTV9S20489C12[];
static  VTBL_ENTRY _tg__ZTV8S20489C3__9S20489C12[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C3__9S20489C12[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C13[0]),
};
static  VTT_ENTRY vtt_S20489C12[] = {
  {&(_ZTV9S20489C12[7]),  7,12},
  {&(_tg__ZTV8S20489C3__9S20489C12[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C3__9S20489C12[3]),  3,3},
  {&(_ZTV9S20489C12[12]),  12,12},
  {&(_tg__ZTV9S20489C13__9S20489C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C12[];
extern  VTBL_ENTRY _ZTV9S20489C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C12[];
Class_Descriptor cd_S20489C12 = {  "S20489C12", // class name
  bases_S20489C12, 15,
  &(vtc_S20489C12[0]), // expected_vtbl_contents
  &(vtt_S20489C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S20489C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20489C12),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C12),5, //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  S20489C15  : virtual S9624C48 , S20489C6_nt , virtual S20489C5 , S1540C9_nt {
  ~S20489C15(); // tgen
  S20489C15(); // tgen
};
//SIG(-1 S20489C15) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S20489C15()
{
  extern Class_Descriptor cd_S20489C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20489C15, buf);
    S20489C15 *dp, &lv = *(dp=new (buf) S20489C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20489C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C15)");
    /*is_ambiguous_... S20489C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20489C15");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), 0, "S20489C15");
    check_base_class_offset(lv, (S20489C6_nt*), 0, "S20489C15");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(16,12), "S20489C15");
    check_base_class_offset(lv, (S20489C5*), ABISELECT(16,12), "S20489C15");
    check_base_class_offset(lv, (S1540C9_nt*), ABISELECT(12,8), "S20489C15");
    test_class_info(&lv, &cd_S20489C15);
    dp->~S20489C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C15(Test_S20489C15, "S20489C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20489C15C1Ev();
extern void _ZN9S20489C15D1Ev();
Name_Map name_map_S20489C15[] = {
  NSPAIR(_ZN9S20489C15C1Ev),
  NSPAIR(_ZN9S20489C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
static Base_Class bases_S20489C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C6_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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1540C9_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20489C15[];
static  VTBL_ENTRY vtc_S20489C15[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
extern VTBL_ENTRY _ZTV9S20489C15[];
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__9S20489C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C15[] = {
  {&(_ZTV9S20489C15[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt__9S20489C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
Class_Descriptor cd_S20489C15 = {  "S20489C15", // class name
  bases_S20489C15, 5,
  &(vtc_S20489C15[0]), // expected_vtbl_contents
  &(vtt_S20489C15[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20489C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20489C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C15),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  S20489C16_nt  : virtual S9624C19_nt {
  __tsi64 s20489c16f0;
  ~S20489C16_nt(); // tgen
  S20489C16_nt(); // tgen
};
//SIG(-1 S20489C16_nt) C1{ VBC2{ m} FL}


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

//skip512 S20489C16_nt

#else // __cplusplus

extern void _ZN12S20489C16_ntC1Ev();
extern void _ZN12S20489C16_ntD1Ev();
Name_Map name_map_S20489C16_nt[] = {
  NSPAIR(_ZN12S20489C16_ntC1Ev),
  NSPAIR(_ZN12S20489C16_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S20489C16_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S20489C16_nt[];
static  VTBL_ENTRY vtc_S20489C16_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C16_nt[0]),
};
extern VTBL_ENTRY _ZTV12S20489C16_nt[];
static  VTT_ENTRY vtt_S20489C16_nt[] = {
  {&(_ZTV12S20489C16_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S20489C16_nt[];
VTBL_ENTRY *P__ZTI12S20489C16_nt = _ZTI12S20489C16_nt; 
extern  VTBL_ENTRY _ZTV12S20489C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C16_nt[];
Class_Descriptor cd_S20489C16_nt = {  "S20489C16_nt", // class name
  bases_S20489C16_nt, 1,
  &(vtc_S20489C16_nt[0]), // expected_vtbl_contents
  &(vtt_S20489C16_nt[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI12S20489C16_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S20489C16_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20489C16_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  S20489C11  : S20489C12 , virtual S20489C15 , S20489C16_nt , S20489C3 {
  ~S20489C11(); // tgen
  S20489C11(); // tgen
};
//SIG(-1 S20489C11) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} BC6{ m Fi} BC7{ BC5} BC8{ m Fi:0 Fp}} VBC6 BC9{ BC5 BC7 BC10{ VBC5 Fi} VBC6 VBC8 FC7} vd Fs} VBC11{ VBC5 BC10 VBC7 BC6} BC12{ VBC13{ m} FL} BC9}


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

static void Test_S20489C11()
{
  extern Class_Descriptor cd_S20489C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S20489C11, buf);
    S20489C11 *dp, &lv = *(dp=new (buf) S20489C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S20489C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C11)");
    check_base_class_offset(lv, (S9624C39*)(S20489C13*), 0, "S20489C11");
    /*is_ambiguous_... S20489C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C13*), ABISELECT(48,36), "S20489C11");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C13*), ABISELECT(56,40), "S20489C11");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C13*), ABISELECT(60,44), "S20489C11");
    check_base_class_offset(lv, (S20489C5*)(S20489C13*), ABISELECT(60,44), "S20489C11");
    check_base_class_offset(lv, (S20489C8*)(S20489C13*), ABISELECT(64,44), "S20489C11");
    check_base_class_offset(lv, (S20489C13*)(S20489C12*), ABISELECT(48,36), "S20489C11");
    /*is_ambiguous_... S20489C12::S1540C9_nt */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C12*), ABISELECT(72,48), "S20489C11");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*)(S20489C12*), ABISELECT(72,48), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*), ABISELECT(72,48), "S20489C11");
    /*is_ambiguous_... S20489C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*)(S20489C12*), 0, "S20489C11");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*)(S20489C12*), ABISELECT(12,8), "S20489C11");
    check_base_class_offset(lv, (S20489C5*)(S20489C3*)(S20489C12*), ABISELECT(12,8), "S20489C11");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*)(S20489C12*), ABISELECT(76,52), "S20489C11");
    /*is_ambiguous_... S20489C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C15*), ABISELECT(76,52), "S20489C11");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C15*), ABISELECT(76,52), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*), ABISELECT(76,52), "S20489C11");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*)(S20489C12*), 0, "S20489C11");
    check_base_class_offset(lv, (S20489C8*)(S20489C3*)(S20489C12*), ABISELECT(80,52), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20489C3*), ABISELECT(80,52), "S20489C11");
    check_base_class_offset(lv, (S20489C3*)(S20489C12*), 0, "S20489C11");
    check_base_class_offset(lv, (S20489C12*), 0, "S20489C11");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C15*), ABISELECT(88,56), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(104,68), "S20489C11");
    check_base_class_offset(lv, (S20489C5*)(S20489C15*), ABISELECT(104,68), "S20489C11");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C15*), ABISELECT(100,64), "S20489C11");
    check_base_class_offset(lv, (S20489C15*), ABISELECT(88,56), "S20489C11");
    check_base_class_offset(lv, (S9624C19_nt*)(S20489C16_nt*), 0, "S20489C11");
    check_base_class_offset(lv, (S20489C16_nt*), ABISELECT(16,12), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*), ABISELECT(32,24), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*), ABISELECT(44,32), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C5*)(S20489C3*), ABISELECT(44,32), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*), ABISELECT(32,24), "S20489C11");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C3*), ABISELECT(32,24), "S20489C11");
    test_class_info(&lv, &cd_S20489C11);
    dp->~S20489C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C11(Test_S20489C11, "S20489C11", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN9S20489C11C1Ev();
extern void _ZN9S20489C11D1Ev();
Name_Map name_map_S20489C11[] = {
  NSPAIR(_ZN9S20489C11C1Ev),
  NSPAIR(_ZN9S20489C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C13;
extern VTBL_ENTRY _ZTI9S20489C13[];
extern  VTBL_ENTRY _ZTV9S20489C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C13[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
extern Class_Descriptor cd_S20489C12;
extern VTBL_ENTRY _ZTI9S20489C12[];
extern  VTBL_ENTRY _ZTV9S20489C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C12[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C15;
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20489C16_nt;
extern VTBL_ENTRY _ZTI12S20489C16_nt[];
extern  VTBL_ENTRY _ZTV12S20489C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C16_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
static Base_Class bases_S20489C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S1540C9_nt,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(60,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(60,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_S20489C8,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C13,    ABISELECT(48,36), //bcp->offset
    20, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S1540C9_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
    14, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,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, 1},
  {&cd_S20489C6_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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S20489C3,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20489C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C6_nt,    ABISELECT(88,56), //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
    2, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S1540C9_nt,    ABISELECT(100,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_S20489C15,    ABISELECT(88,56), //bcp->offset
    23, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20489C16_nt,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    27, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(44,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
    27, //immediately_derived
  0, 0},
  {&cd_S20489C6_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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20489C3,    ABISELECT(32,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20489C11[];
extern void _ZN9S20489C11D1Ev();
extern void _ZN9S20489C11D0Ev();
static  VTBL_ENTRY vtc_S20489C11[] = {
  0,
  ABISELECT(104,68),
  ABISELECT(88,56),
  0,
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
  (VTBL_ENTRY)&_ZN9S20489C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
extern VTBL_ENTRY _ZTV9S20489C11[];
extern void _ZN9S20489C12D1Ev();
extern void _ZN9S20489C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C12__9S20489C11[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
  (VTBL_ENTRY)&_ZN9S20489C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20489C39S20489C12__9S20489C11[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C39S20489C12__9S20489C11[] = {
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C12__9S20489C11[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C16_nt__9S20489C11[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C3__A1__9S20489C11[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C3__A2__9S20489C11[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C11[] = {
  ABISELECT(-48,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C15__9S20489C11[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C15__A1__9S20489C11[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C11[] = {
  {&(_ZTV9S20489C11[10]),  10,27},
  {&(_tg__ZTV9S20489C12__9S20489C11[7]),  7,9},
  {&(_tg__ZTV8S20489C39S20489C12__9S20489C11[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C39S20489C12__9S20489C11[3]),  3,3},
  {&(_tg__ZTV9S20489C13__9S20489C12__9S20489C11[3]),  3,3},
  {&(_tg__ZTV12S20489C16_nt__9S20489C11[3]),  3,3},
  {&(_tg__ZTV8S20489C3__A1__9S20489C11[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C3__A2__9S20489C11[3]),  3,3},
  {&(_ZTV9S20489C11[23]),  23,27},
  {&(_ZTV9S20489C11[27]),  27,27},
  {&(_ZTV9S20489C11[15]),  15,27},
  {&(_ZTV9S20489C11[20]),  20,27},
  {&(_tg__ZTV9S20489C13__9S20489C11[3]),  3,3},
  {&(_tg__ZTV9S20489C15__9S20489C11[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt9S20489C15__A1__9S20489C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C11[];
extern  VTBL_ENTRY _ZTV9S20489C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C11[];
Class_Descriptor cd_S20489C11 = {  "S20489C11", // class name
  bases_S20489C11, 28,
  &(vtc_S20489C11[0]), // expected_vtbl_contents
  &(vtt_S20489C11[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI9S20489C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20489C11),27, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C11),15, //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  S20489C18_nt  : virtual S9624C19_nt {
  ~S20489C18_nt(); // tgen
  S20489C18_nt(); // tgen
};
//SIG(-1 S20489C18_nt) C1{ VBC2{ m}}


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

//skip512 S20489C18_nt

#else // __cplusplus

extern void _ZN12S20489C18_ntC1Ev();
extern void _ZN12S20489C18_ntD1Ev();
Name_Map name_map_S20489C18_nt[] = {
  NSPAIR(_ZN12S20489C18_ntC1Ev),
  NSPAIR(_ZN12S20489C18_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S20489C18_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI12S20489C18_nt[];
static  VTBL_ENTRY vtc_S20489C18_nt[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C18_nt[0]),
};
extern VTBL_ENTRY _ZTV12S20489C18_nt[];
static  VTT_ENTRY vtt_S20489C18_nt[] = {
  {&(_ZTV12S20489C18_nt[3]),  3,3},
};
extern VTBL_ENTRY _ZTI12S20489C18_nt[];
VTBL_ENTRY *P__ZTI12S20489C18_nt = _ZTI12S20489C18_nt; 
extern  VTBL_ENTRY _ZTV12S20489C18_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C18_nt[];
Class_Descriptor cd_S20489C18_nt = {  "S20489C18_nt", // class name
  bases_S20489C18_nt, 1,
  &(vtc_S20489C18_nt[0]), // expected_vtbl_contents
  &(vtt_S20489C18_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S20489C18_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S20489C18_nt),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S20489C18_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  S20489C20  : virtual S20489C8 , virtual S9624C48 , S20489C6_nt {
  virtual void  v1(); // _ZN9S20489C202v1Ev
  ~S20489C20(); // tgen
  S20489C20(); // tgen
};
//SIG(-1 S20489C20) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S20489C20()
{
  extern Class_Descriptor cd_S20489C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20489C20, buf);
    S20489C20 *dp, &lv = *(dp=new (buf) S20489C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20489C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C20)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20489C20");
    check_base_class_offset(lv, (S9624C48*), 0, "S20489C20");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), 0, "S20489C20");
    check_base_class_offset(lv, (S20489C6_nt*), 0, "S20489C20");
    test_class_info(&lv, &cd_S20489C20);
    dp->~S20489C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C20(Test_S20489C20, "S20489C20", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20489C20C1Ev();
extern void _ZN9S20489C20D1Ev();
Name_Map name_map_S20489C20[] = {
  NSPAIR(_ZN9S20489C20C1Ev),
  NSPAIR(_ZN9S20489C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
static Base_Class bases_S20489C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C6_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 _ZTI9S20489C20[];
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY vtc_S20489C20[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C20[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
extern VTBL_ENTRY _ZTV9S20489C20[];
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__9S20489C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C20[] = {
  {&(_ZTV9S20489C20[4]),  4,5},
  {&(_tg__ZTV11S20489C6_nt__9S20489C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C20[];
extern  VTBL_ENTRY _ZTV9S20489C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C20[];
Class_Descriptor cd_S20489C20 = {  "S20489C20", // class name
  bases_S20489C20, 3,
  &(vtc_S20489C20[0]), // expected_vtbl_contents
  &(vtt_S20489C20[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20489C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20489C20),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C20),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  S20489C21  : S662C14 , virtual S20489C6_nt , virtual S9624C39 {
  virtual  ~S20489C21(); // _ZN9S20489C21D2Ev
  S20489C21(); // tgen
};
//SIG(-1 S20489C21) C1{ BC2{ m} VBC3{ VBC4{ m} Fi} VBC5{ m} vd}


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

static void Test_S20489C21()
{
  extern Class_Descriptor cd_S20489C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20489C21, buf);
    S20489C21 *dp, &lv = *(dp=new (buf) S20489C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20489C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C21)");
    check_base_class_offset(lv, (S662C14*), 0, "S20489C21");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), 0, "S20489C21");
    check_base_class_offset(lv, (S20489C6_nt*), ABISELECT(8,4), "S20489C21");
    check_base_class_offset(lv, (S9624C39*), 0, "S20489C21");
    test_class_info(&lv, &cd_S20489C21);
    dp->~S20489C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C21(Test_S20489C21, "S20489C21", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20489C21C1Ev();
extern void _ZN9S20489C21D2Ev();
Name_Map name_map_S20489C21[] = {
  NSPAIR(_ZN9S20489C21C1Ev),
  NSPAIR(_ZN9S20489C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20489C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C6_nt,    ABISELECT(8,4), //bcp->offset
    7, //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_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20489C21[];
extern void _ZN9S20489C21D1Ev();
extern void _ZN9S20489C21D0Ev();
static  VTBL_ENTRY vtc_S20489C21[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
  (VTBL_ENTRY)&_ZN9S20489C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C21D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
};
extern VTBL_ENTRY _ZTV9S20489C21[];
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__9S20489C21[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C21[] = {
  {&(_ZTV9S20489C21[5]),  5,10},
  {&(_ZTV9S20489C21[10]),  10,10},
  {&(_tg__ZTV11S20489C6_nt__9S20489C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C21[];
extern  VTBL_ENTRY _ZTV9S20489C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C21[];
Class_Descriptor cd_S20489C21 = {  "S20489C21", // class name
  bases_S20489C21, 4,
  &(vtc_S20489C21[0]), // expected_vtbl_contents
  &(vtt_S20489C21[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20489C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20489C21),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C21),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  S20489C19  : S20489C15 , virtual S20489C8 , S20489C20 , virtual S20489C21 {
  ~S20489C19(); // tgen
  S20489C19(); // tgen
};
//SIG(-1 S20489C19) C1{ BC2{ VBC3{ m} BC4{ VBC3 Fi} VBC5{ BC3} BC6{ m Fi}} VBC7{ m Fi:0 Fp} BC8{ VBC7 VBC3 BC4 v1} VBC9{ BC10{ m} VBC4 VBC11{ m} vd}}


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

static void Test_S20489C19()
{
  extern Class_Descriptor cd_S20489C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20489C19, buf);
    S20489C19 *dp, &lv = *(dp=new (buf) S20489C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20489C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C19)");
    /*is_ambiguous_... S20489C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C15*), 0, "S20489C19");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C15*), 0, "S20489C19");
    check_base_class_offset(lv, (S9624C48*)(S20489C20*), 0, "S20489C19");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C20*), 0, "S20489C19");
    /*is_ambiguous_... S20489C19::S20489C6_nt */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), 0, "S20489C19");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C15*), 0, "S20489C19");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(28,20), "S20489C19");
    check_base_class_offset(lv, (S20489C5*)(S20489C15*), ABISELECT(28,20), "S20489C19");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C15*), ABISELECT(12,8), "S20489C19");
    check_base_class_offset(lv, (S20489C15*), 0, "S20489C19");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(32,20), "S20489C19");
    check_base_class_offset(lv, (S20489C8*)(S20489C20*), ABISELECT(32,20), "S20489C19");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C20*), ABISELECT(16,12), "S20489C19");
    check_base_class_offset(lv, (S20489C20*), ABISELECT(16,12), "S20489C19");
    check_base_class_offset(lv, (S662C14*)(S20489C21*), ABISELECT(40,24), "S20489C19");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C21*), ABISELECT(48,28), "S20489C19");
    check_base_class_offset(lv, (S9624C39*)(S20489C21*), 0, "S20489C19");
    check_base_class_offset(lv, (S20489C21*), ABISELECT(40,24), "S20489C19");
    test_class_info(&lv, &cd_S20489C19);
    dp->~S20489C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C19(Test_S20489C19, "S20489C19", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S20489C19C1Ev();
extern void _ZN9S20489C19D1Ev();
Name_Map name_map_S20489C19[] = {
  NSPAIR(_ZN9S20489C19C1Ev),
  NSPAIR(_ZN9S20489C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C15;
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C20;
extern VTBL_ENTRY _ZTI9S20489C20[];
extern  VTBL_ENTRY _ZTV9S20489C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C20[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C21;
extern VTBL_ENTRY _ZTI9S20489C21[];
extern  VTBL_ENTRY _ZTV9S20489C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C21[];
static Base_Class bases_S20489C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C6_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
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S1540C9_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20489C15,    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_S20489C8,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C6_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
    8, //immediately_derived
  0, 0},
  {&cd_S20489C20,    ABISELECT(16,12), //bcp->offset
    10, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S662C14,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(48,28), //bcp->offset
    23, //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
    12, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20489C21,    ABISELECT(40,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20489C19[];
extern void _ZN9S20489C19D1Ev();
extern void _ZN9S20489C19D0Ev();
extern void _ZN9S20489C202v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev)();
extern void ABISELECT(_ZThn40_N9S20489C19D1Ev,_ZThn24_N9S20489C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev)();
extern void ABISELECT(_ZThn40_N9S20489C19D0Ev,_ZThn24_N9S20489C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20489C19[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&_ZN9S20489C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C19D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
};
extern VTBL_ENTRY _ZTV9S20489C19[];
static  VTBL_ENTRY _tg__ZTV9S20489C15__9S20489C19[] = {
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C15__9S20489C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C20__9S20489C19[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C20[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C20__A1__9S20489C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C21D1Ev();
extern void _ZN9S20489C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C21__9S20489C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
  (VTBL_ENTRY)&_ZN9S20489C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__9S20489C21__9S20489C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__A2__9S20489C19[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C19[] = {
  {&(_ZTV9S20489C19[8]),  8,26},
  {&(_tg__ZTV9S20489C15__9S20489C19[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt9S20489C15__9S20489C19[3]),  3,3},
  {&(_tg__ZTV9S20489C20__9S20489C19[4]),  4,5},
  {&(_tg__ZTV11S20489C6_nt9S20489C20__A1__9S20489C19[3]),  3,3},
  {&(_ZTV9S20489C19[14]),  14,26},
  {&(_ZTV9S20489C19[21]),  21,26},
  {&(_ZTV9S20489C19[26]),  26,26},
  {&(_tg__ZTV9S20489C21__9S20489C19[5]),  5,7},
  {&(_tg__ZTV11S20489C6_nt__9S20489C21__9S20489C19[3]),  3,3},
  {&(_tg__ZTV11S20489C6_nt__A2__9S20489C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20489C19[];
extern  VTBL_ENTRY _ZTV9S20489C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C19[];
static VTBL_ENTRY alt_thunk_names76[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20489C19D0Ev,_ZThn24_N9S20489C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20489C19D1Ev,_ZThn24_N9S20489C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20489C19 = {  "S20489C19", // class name
  bases_S20489C19, 13,
  &(vtc_S20489C19[0]), // expected_vtbl_contents
  &(vtt_S20489C19[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S20489C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20489C19),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20489C19),11, //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  S20489C9  : virtual S20489C10_nt , S20489C11 , S20489C18_nt , S1540C9_nt , virtual S20489C19 {
  ~S20489C9(); // tgen
  S20489C9(); // tgen
};
//SIG(-1 S20489C9) C1{ VBC2{ m Fi} BC3{ BC4{ VBC5{ VBC6{ m} BC7{ m} BC8{ m Fi} BC9{ BC7} BC10{ m Fi:0 Fp}} VBC8 BC11{ BC7 BC9 BC12{ VBC7 Fi} VBC8 VBC10 FC9} vd Fs} VBC13{ VBC7 BC12 VBC9 BC8} BC14{ VBC15{ m} FL} BC11} BC16{ VBC15} BC8 VBC17{ BC13 VBC10 BC18{ VBC10 VBC7 BC12 v1} VBC19{ BC20{ m} VBC12 VBC6 vd}}}


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

static void Test_S20489C9()
{
  extern Class_Descriptor cd_S20489C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,29)];
    init_test(&cd_S20489C9, buf);
    S20489C9 *dp, &lv = *(dp=new (buf) S20489C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,112), "sizeof(S20489C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C9)");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(60,44), "S20489C9");
    check_base_class_offset(lv, (S9624C39*)(S20489C13*), 0, "S20489C9");
    check_base_class_offset(lv, (S9624C39*)(S20489C21*), 0, "S20489C9");
    /*is_ambiguous_... S20489C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C13*), ABISELECT(64,48), "S20489C9");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C13*), ABISELECT(72,52), "S20489C9");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C13*), ABISELECT(76,56), "S20489C9");
    check_base_class_offset(lv, (S20489C5*)(S20489C13*), ABISELECT(76,56), "S20489C9");
    check_base_class_offset(lv, (S20489C8*)(S20489C13*), ABISELECT(80,56), "S20489C9");
    check_base_class_offset(lv, (S20489C13*)(S20489C12*)(S20489C11*), ABISELECT(64,48), "S20489C9");
    /*is_ambiguous_... S20489C12::S1540C9_nt */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C12*)(S20489C11*), ABISELECT(88,60), "S20489C9");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*)(S20489C12*)(S20489C11*), ABISELECT(88,60), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*)(S20489C11*), ABISELECT(88,60), "S20489C9");
    /*is_ambiguous_... S20489C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*)(S20489C12*)(S20489C11*), 0, "S20489C9");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*)(S20489C12*)(S20489C11*), ABISELECT(12,8), "S20489C9");
    check_base_class_offset(lv, (S20489C5*)(S20489C3*)(S20489C12*)(S20489C11*), ABISELECT(12,8), "S20489C9");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*)(S20489C12*)(S20489C11*), ABISELECT(92,64), "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C15*), ABISELECT(92,64), "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C15*), ABISELECT(92,64), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*)(S20489C11*), ABISELECT(92,64), "S20489C9");
    /*is_ambiguous_... S20489C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C15*)(S20489C19*), ABISELECT(92,64), "S20489C9");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C15*)(S20489C19*), ABISELECT(92,64), "S20489C9");
    check_base_class_offset(lv, (S9624C48*)(S20489C20*)(S20489C19*), ABISELECT(92,64), "S20489C9");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C20*)(S20489C19*), ABISELECT(92,64), "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C6_nt */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), ABISELECT(92,64), "S20489C9");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*)(S20489C12*)(S20489C11*), 0, "S20489C9");
    check_base_class_offset(lv, (S20489C8*)(S20489C3*)(S20489C12*)(S20489C11*), ABISELECT(96,64), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20489C3*)(S20489C11*), ABISELECT(96,64), "S20489C9");
    check_base_class_offset(lv, (S20489C8*)(S20489C19*), ABISELECT(96,64), "S20489C9");
    check_base_class_offset(lv, (S20489C8*)(S20489C20*)(S20489C19*), ABISELECT(96,64), "S20489C9");
    check_base_class_offset(lv, (S20489C3*)(S20489C12*)(S20489C11*), 0, "S20489C9");
    check_base_class_offset(lv, (S20489C12*)(S20489C11*), 0, "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C15 */ AMB_check_base_class_offset(lv, (S20489C6_nt*)(S20489C15*), ABISELECT(104,68), "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(120,80), "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C15 */ AMB_check_base_class_offset(lv, (S20489C5*)(S20489C15*), ABISELECT(120,80), "S20489C9");
    check_base_class_offset(lv, (S20489C5*)(S20489C15*)(S20489C19*), ABISELECT(120,80), "S20489C9");
    /*is_ambiguous_... S20489C9::S20489C15 */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C15*), ABISELECT(116,76), "S20489C9");
    check_base_class_offset(lv, (S20489C15*)(S20489C11*), ABISELECT(104,68), "S20489C9");
    check_base_class_offset(lv, (S9624C19_nt*)(S20489C16_nt*)(S20489C11*), 0, "S20489C9");
    check_base_class_offset(lv, (S9624C19_nt*)(S20489C18_nt*), 0, "S20489C9");
    check_base_class_offset(lv, (S20489C16_nt*)(S20489C11*), ABISELECT(16,12), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*)(S20489C11*), ABISELECT(32,24), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*)(S20489C11*), ABISELECT(44,32), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C5*)(S20489C3*)(S20489C11*), ABISELECT(44,32), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*)(S20489C11*), ABISELECT(32,24), "S20489C9");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C3*)(S20489C11*), ABISELECT(32,24), "S20489C9");
    check_base_class_offset(lv, (S20489C11*), 0, "S20489C9");
    check_base_class_offset(lv, (S20489C18_nt*), ABISELECT(48,36), "S20489C9");
    /*is_ambiguous_... S20489C9::S1540C9_nt */ AMB_check_base_class_offset(lv, (S1540C9_nt*), ABISELECT(56,40), "S20489C9");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C15*)(S20489C19*), ABISELECT(120,80), "S20489C9");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C15*)(S20489C19*), ABISELECT(132,88), "S20489C9");
    check_base_class_offset(lv, (S20489C15*)(S20489C19*), ABISELECT(120,80), "S20489C9");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C20*)(S20489C19*), ABISELECT(136,92), "S20489C9");
    check_base_class_offset(lv, (S20489C20*)(S20489C19*), ABISELECT(136,92), "S20489C9");
    check_base_class_offset(lv, (S662C14*)(S20489C21*), ABISELECT(152,100), "S20489C9");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C21*), ABISELECT(160,104), "S20489C9");
    check_base_class_offset(lv, (S20489C21*)(S20489C19*), ABISELECT(152,100), "S20489C9");
    check_base_class_offset(lv, (S20489C19*), ABISELECT(120,80), "S20489C9");
    test_class_info(&lv, &cd_S20489C9);
    dp->~S20489C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C9(Test_S20489C9, "S20489C9", ABISELECT(176,112));

#else // __cplusplus

extern void _ZN8S20489C9C1Ev();
extern void _ZN8S20489C9D1Ev();
Name_Map name_map_S20489C9[] = {
  NSPAIR(_ZN8S20489C9C1Ev),
  NSPAIR(_ZN8S20489C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C13;
extern VTBL_ENTRY _ZTI9S20489C13[];
extern  VTBL_ENTRY _ZTV9S20489C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C13[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
extern Class_Descriptor cd_S20489C12;
extern VTBL_ENTRY _ZTI9S20489C12[];
extern  VTBL_ENTRY _ZTV9S20489C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C12[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C15;
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20489C16_nt;
extern VTBL_ENTRY _ZTI12S20489C16_nt[];
extern  VTBL_ENTRY _ZTV12S20489C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C16_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
extern Class_Descriptor cd_S20489C11;
extern VTBL_ENTRY _ZTI9S20489C11[];
extern  VTBL_ENTRY _ZTV9S20489C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C11[];
extern Class_Descriptor cd_S20489C18_nt;
extern VTBL_ENTRY _ZTI12S20489C18_nt[];
extern  VTBL_ENTRY _ZTV12S20489C18_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C18_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C15;
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C20;
extern VTBL_ENTRY _ZTI9S20489C20[];
extern  VTBL_ENTRY _ZTV9S20489C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C20[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C21;
extern VTBL_ENTRY _ZTI9S20489C21[];
extern  VTBL_ENTRY _ZTV9S20489C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C21[];
extern Class_Descriptor cd_S20489C19;
extern VTBL_ENTRY _ZTI9S20489C19[];
extern  VTBL_ENTRY _ZTV9S20489C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C19[];
static Base_Class bases_S20489C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(60,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1540C9_nt,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(76,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
    7, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C13,    ABISELECT(64,48), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S1540C9_nt,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(92,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20489C6_nt,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    15, //immediately_derived
  0, 1},
  {&cd_S20489C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20489C12,    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
    13, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(104,68), //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
    2, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    19, //immediately_derived
  0, 0},
  {&cd_S20489C5,    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
    21, //immediately_derived
  0, 1},
  {&cd_S1540C9_nt,    ABISELECT(116,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_S20489C15,    ABISELECT(104,68), //bcp->offset
    30, //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
    3, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20489C16_nt,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,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
    26, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(44,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
    28, //immediately_derived
  0, 0},
  {&cd_S20489C6_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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20489C3,    ABISELECT(32,24), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20489C11,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C18_nt,    ABISELECT(48,36), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S1540C9_nt,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C6_nt,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S1540C9_nt,    ABISELECT(132,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_S20489C15,    ABISELECT(120,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(136,92), //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
    8, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20489C20,    ABISELECT(136,92), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S662C14,    ABISELECT(152,100), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    39, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(160,104), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20489C21,    ABISELECT(152,100), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S20489C19,    ABISELECT(120,80), //bcp->offset
    34, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20489C9[];
extern void _ZN8S20489C9D1Ev();
extern void _ZN8S20489C9D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S20489C9D1Ev,_ZTv0_n36_N8S20489C9D1Ev)();
extern void ABISELECT(_ZThn120_N8S20489C9D1Ev,_ZThn80_N8S20489C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20489C9D0Ev,_ZTv0_n36_N8S20489C9D0Ev)();
extern void ABISELECT(_ZThn120_N8S20489C9D0Ev,_ZThn80_N8S20489C9D0Ev)() __attribute__((weak));
extern void _ZN9S20489C202v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20489C9D1Ev,_ZTv0_n24_N8S20489C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S20489C9D1Ev,_ZThn100_N8S20489C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20489C9D0Ev,_ZTv0_n24_N8S20489C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S20489C9D0Ev,_ZThn100_N8S20489C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20489C9[] = {
  ABISELECT(160,104),
  ABISELECT(152,100),
  ABISELECT(120,80),
  ABISELECT(60,44),
  0,
  ABISELECT(120,80),
  ABISELECT(104,68),
  0,
  ABISELECT(64,48),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(92,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&_ZN8S20489C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20489C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(60,40),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  ABISELECT(-64,-48),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  ABISELECT(16,12),
  ABISELECT(-120,-80),
  ABISELECT(-120,-80),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  0,
  ABISELECT(-28,-16),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20489C9D1Ev,_ZTv0_n36_N8S20489C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20489C9D0Ev,_ZTv0_n36_N8S20489C9D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-44,-28),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
  ABISELECT(-152,-100),
  ABISELECT(-152,-100),
  ABISELECT(-60,-36),
  ABISELECT(8,4),
  ABISELECT(-152,-100),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20489C9D1Ev,_ZTv0_n24_N8S20489C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20489C9D0Ev,_ZTv0_n24_N8S20489C9D0Ev),
  ABISELECT(-68,-40),
  ABISELECT(-160,-104),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
extern VTBL_ENTRY _ZTV8S20489C9[];
extern void _ZN9S20489C11D1Ev();
extern void _ZN9S20489C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C11__8S20489C9[] = {
  0,
  ABISELECT(120,80),
  ABISELECT(104,68),
  0,
  ABISELECT(64,48),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(92,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
  (VTBL_ENTRY)&_ZN9S20489C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C11D0Ev,
};
extern void _ZN9S20489C12D1Ev();
extern void _ZN9S20489C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C129S20489C11__8S20489C9[] = {
  0,
  ABISELECT(64,48),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(92,64),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
  (VTBL_ENTRY)&_ZN9S20489C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20489C39S20489C129S20489C11__8S20489C9[] = {
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(92,64),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C39S20489C129S20489C11__8S20489C9[] = {
  ABISELECT(92,64),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C129S20489C11__8S20489C9[] = {
  ABISELECT(-64,-48),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C16_nt9S20489C11__8S20489C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C39S20489C11__A1__8S20489C9[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(60,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C39S20489C11__A2__8S20489C9[] = {
  ABISELECT(60,40),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C11__8S20489C9[] = {
  ABISELECT(-64,-48),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C15__9S20489C11__8S20489C9[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C16_nt__9S20489C11__8S20489C9[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C3__A1__9S20489C11__8S20489C9[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(60,40),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C18_nt__8S20489C9[] = {
  ABISELECT(-48,-36),
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C18_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__8S20489C9[] = {
  ABISELECT(-64,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C15__8S20489C9[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C15__A1__8S20489C9[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C19D1Ev();
extern void _ZN9S20489C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C19__8S20489C9[] = {
  ABISELECT(-120,-80),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  0,
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&_ZN9S20489C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20489C159S20489C19__A1__8S20489C9[] = {
  0,
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C159S20489C19__A3__8S20489C9[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C209S20489C19__8S20489C9[] = {
  ABISELECT(-40,-28),
  ABISELECT(-44,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C20[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C209S20489C19__A4__8S20489C9[] = {
  ABISELECT(-44,-28),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C20__9S20489C19__8S20489C9[] = {
  ABISELECT(-40,-28),
  ABISELECT(-44,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20489C19D1Ev,_ZThn20_N9S20489C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20489C19D0Ev,_ZThn20_N9S20489C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20489C21__9S20489C19__8S20489C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-100),
  ABISELECT(-60,-36),
  ABISELECT(8,4),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__A2__9S20489C19__8S20489C9[] = {
  ABISELECT(-68,-40),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
};
extern void _ZN9S20489C21D1Ev();
extern void _ZN9S20489C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C21__8S20489C9[] = {
  ABISELECT(-152,-100),
  ABISELECT(-60,-36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
  (VTBL_ENTRY)&_ZN9S20489C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__9S20489C21__8S20489C9[] = {
  ABISELECT(-68,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__A5__8S20489C9[] = {
  ABISELECT(-68,-40),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C9[] = {
  {&(_ZTV8S20489C9[14]),  14,62},
  {&(_tg__ZTV9S20489C11__8S20489C9[10]),  10,12},
  {&(_tg__ZTV9S20489C129S20489C11__8S20489C9[7]),  7,9},
  {&(_tg__ZTV8S20489C39S20489C129S20489C11__8S20489C9[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C39S20489C129S20489C11__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C13__9S20489C129S20489C11__8S20489C9[3]),  3,3},
  {&(_tg__ZTV12S20489C16_nt9S20489C11__8S20489C9[3]),  3,3},
  {&(_tg__ZTV8S20489C39S20489C11__A1__8S20489C9[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C39S20489C11__A2__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C13__9S20489C11__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C15__9S20489C11__8S20489C9[4]),  4,4},
  {&(_tg__ZTV12S20489C16_nt__9S20489C11__8S20489C9[3]),  3,3},
  {&(_tg__ZTV8S20489C3__A1__9S20489C11__8S20489C9[5]),  5,5},
  {&(_tg__ZTV12S20489C18_nt__8S20489C9[3]),  3,3},
  {&(_ZTV8S20489C9[30]),  30,62},
  {&(_ZTV8S20489C9[34]),  34,62},
  {&(_ZTV8S20489C9[19]),  19,62},
  {&(_ZTV8S20489C9[24]),  24,62},
  {&(_ZTV8S20489C9[27]),  27,62},
  {&(_ZTV8S20489C9[44]),  44,62},
  {&(_ZTV8S20489C9[50]),  50,62},
  {&(_ZTV8S20489C9[57]),  57,62},
  {&(_ZTV8S20489C9[62]),  62,62},
  {&(_tg__ZTV9S20489C13__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C15__8S20489C9[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt9S20489C15__A1__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C19__8S20489C9[8]),  8,10},
  {&(_tg__ZTV9S20489C159S20489C19__A1__8S20489C9[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt9S20489C159S20489C19__A3__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C209S20489C19__8S20489C9[4]),  4,5},
  {&(_tg__ZTV11S20489C6_nt9S20489C209S20489C19__A4__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C20__9S20489C19__8S20489C9[4]),  4,5},
  {&(_tg__ZTV9S20489C21__9S20489C19__8S20489C9[6]),  6,8},
  {&(_tg__ZTV11S20489C6_nt__A2__9S20489C19__8S20489C9[3]),  3,3},
  {&(_tg__ZTV9S20489C21__8S20489C9[5]),  5,7},
  {&(_tg__ZTV11S20489C6_nt__9S20489C21__8S20489C9[3]),  3,3},
  {&(_tg__ZTV11S20489C6_nt__A5__8S20489C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20489C9[];
extern  VTBL_ENTRY _ZTV8S20489C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C9[];
static VTBL_ENTRY alt_thunk_names77[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20489C19D0Ev,_ZThn20_N9S20489C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20489C19D1Ev,_ZThn20_N9S20489C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20489C9D0Ev,_ZTv0_n24_N8S20489C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20489C9D0Ev,_ZThn100_N8S20489C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20489C9D1Ev,_ZTv0_n24_N8S20489C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20489C9D1Ev,_ZThn100_N8S20489C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20489C9D0Ev,_ZTv0_n36_N8S20489C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20489C9D0Ev,_ZThn80_N8S20489C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20489C9D1Ev,_ZTv0_n36_N8S20489C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20489C9D1Ev,_ZThn80_N8S20489C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20489C9 = {  "S20489C9", // class name
  bases_S20489C9, 41,
  &(vtc_S20489C9[0]), // expected_vtbl_contents
  &(vtt_S20489C9[0]), // expected_vtt_contents
  ABISELECT(176,112), // object size
  NSPAIRA(_ZTI8S20489C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20489C9),62, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20489C9),37, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names77,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20489C1  : virtual S20489C2 , virtual S20489C9 , S20489C18_nt {
  ::S10296C15_nt s20489c1f0;
  virtual  ~S20489C1(); // _ZN8S20489C1D2Ev
  S20489C1(); // tgen
};
//SIG(1 S20489C1) C1{ VBC2{ VBC3{ BC4{ m} BC5{ BC4} BC6{ VBC4 Fi} VBC7{ m Fi} VBC8{ m Fi:0 Fp} FC5} Fi} VBC9{ VBC10{ m Fi} BC11{ BC12{ VBC13{ VBC14{ m} BC4 BC7 BC5 BC8} VBC7 BC3 vd Fs} VBC15{ VBC4 BC6 VBC5 BC7} BC16{ VBC17{ m} FL} BC3} BC18{ VBC17} BC7 VBC19{ BC15 VBC8 BC20{ VBC8 VBC4 BC6 v1} VBC21{ BC22{ m} VBC6 VBC14 vd}}} BC18 vd FC23{}}


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

static void Test_S20489C1()
{
  extern Class_Descriptor cd_S20489C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,36)];
    init_test(&cd_S20489C1, buf);
    S20489C1 *dp, &lv = *(dp=new (buf) S20489C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,140), "sizeof(S20489C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20489C1)");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*), ABISELECT(32,16), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*), ABISELECT(44,24), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C5*)(S20489C3*), ABISELECT(44,24), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*), 0, "S20489C1");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), 0, "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C15*), 0, "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C15*), 0, "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C3*)(S20489C11*)(S20489C9*), 0, "S20489C1");
    /*is_ambiguous_... S20489C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C15*)(S20489C19*), 0, "S20489C1");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C15*)(S20489C19*), 0, "S20489C1");
    check_base_class_offset(lv, (S9624C48*)(S20489C20*)(S20489C19*), 0, "S20489C1");
    check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*)(S20489C20*)(S20489C19*), 0, "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C6_nt */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C6_nt*), 0, "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*), ABISELECT(32,16), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*), ABISELECT(48,28), "S20489C1");
    /*is_ambiguous_... S20489C12::S1540C9_nt */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(48,28), "S20489C1");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(48,28), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(48,28), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20489C3*), ABISELECT(56,32), "S20489C1");
    check_base_class_offset(lv, (S20489C8*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(56,32), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(56,32), "S20489C1");
    check_base_class_offset(lv, (S20489C8*)(S20489C19*), ABISELECT(56,32), "S20489C1");
    check_base_class_offset(lv, (S20489C8*)(S20489C20*)(S20489C19*), ABISELECT(56,32), "S20489C1");
    check_base_class_offset(lv, (S20489C3*)(S20489C2*), ABISELECT(32,16), "S20489C1");
    check_base_class_offset(lv, (S20489C2*), ABISELECT(16,8), "S20489C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20489C9*), ABISELECT(124,80), "S20489C1");
    check_base_class_offset(lv, (S9624C39*)(S20489C13*), 0, "S20489C1");
    check_base_class_offset(lv, (S9624C39*)(S20489C21*), 0, "S20489C1");
    /*is_ambiguous_... S20489C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C13*), ABISELECT(128,84), "S20489C1");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C13*), ABISELECT(136,88), "S20489C1");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C13*), ABISELECT(140,92), "S20489C1");
    check_base_class_offset(lv, (S20489C5*)(S20489C13*), ABISELECT(140,92), "S20489C1");
    check_base_class_offset(lv, (S20489C8*)(S20489C13*), ABISELECT(144,92), "S20489C1");
    check_base_class_offset(lv, (S20489C13*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(128,84), "S20489C1");
    /*is_ambiguous_... S20489C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(64,36), "S20489C1");
    check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(76,44), "S20489C1");
    check_base_class_offset(lv, (S20489C5*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(76,44), "S20489C1");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(64,36), "S20489C1");
    check_base_class_offset(lv, (S20489C3*)(S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(64,36), "S20489C1");
    check_base_class_offset(lv, (S20489C12*)(S20489C11*)(S20489C9*), ABISELECT(64,36), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C15 */ AMB_check_base_class_offset(lv, (S20489C6_nt*)(S20489C15*), ABISELECT(152,96), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*), ABISELECT(168,108), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C15 */ AMB_check_base_class_offset(lv, (S20489C5*)(S20489C15*), ABISELECT(168,108), "S20489C1");
    check_base_class_offset(lv, (S20489C5*)(S20489C15*)(S20489C19*), ABISELECT(168,108), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C15 */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C15*), ABISELECT(164,104), "S20489C1");
    check_base_class_offset(lv, (S20489C15*)(S20489C11*)(S20489C9*), ABISELECT(152,96), "S20489C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20489C16_nt*)(S20489C11*)(S20489C9*), 0, "S20489C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20489C18_nt*)(S20489C9*), 0, "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C18_nt */ AMB_check_base_class_offset(lv, (S9624C19_nt*)(S20489C18_nt*), 0, "S20489C1");
    check_base_class_offset(lv, (S20489C16_nt*)(S20489C11*)(S20489C9*), ABISELECT(80,48), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(96,60), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20489C5*)(S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(108,68), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C5*)(S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(108,68), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C6_nt*)(S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(96,60), "S20489C1");
    /*is_ambiguous_... S20489C11::S20489C3 */ AMB_check_base_class_offset(lv, (S20489C3*)(S20489C11*)(S20489C9*), ABISELECT(96,60), "S20489C1");
    check_base_class_offset(lv, (S20489C11*)(S20489C9*), ABISELECT(64,36), "S20489C1");
    check_base_class_offset(lv, (S20489C18_nt*)(S20489C9*), ABISELECT(112,72), "S20489C1");
    /*is_ambiguous_... S20489C9::S1540C9_nt */ AMB_check_base_class_offset(lv, (S1540C9_nt*)(S20489C9*), ABISELECT(120,76), "S20489C1");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C15*)(S20489C19*), ABISELECT(168,108), "S20489C1");
    check_base_class_offset(lv, (S1540C9_nt*)(S20489C15*)(S20489C19*), ABISELECT(180,116), "S20489C1");
    check_base_class_offset(lv, (S20489C15*)(S20489C19*), ABISELECT(168,108), "S20489C1");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C20*)(S20489C19*), ABISELECT(184,120), "S20489C1");
    check_base_class_offset(lv, (S20489C20*)(S20489C19*), ABISELECT(184,120), "S20489C1");
    check_base_class_offset(lv, (S662C14*)(S20489C21*), ABISELECT(200,128), "S20489C1");
    check_base_class_offset(lv, (S20489C6_nt*)(S20489C21*), ABISELECT(208,132), "S20489C1");
    check_base_class_offset(lv, (S20489C21*)(S20489C19*), ABISELECT(200,128), "S20489C1");
    check_base_class_offset(lv, (S20489C19*)(S20489C9*), ABISELECT(168,108), "S20489C1");
    check_base_class_offset(lv, (S20489C9*), ABISELECT(64,36), "S20489C1");
    /*is_ambiguous_... S20489C1::S20489C18_nt */ AMB_check_base_class_offset(lv, (S20489C18_nt*), 0, "S20489C1");
    check_field_offset(lv, s20489c1f0, ABISELECT(8,4), "S20489C1.s20489c1f0");
    test_class_info(&lv, &cd_S20489C1);
    dp->~S20489C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20489C1(Test_S20489C1, "S20489C1", ABISELECT(224,140));

#else // __cplusplus

extern void _ZN8S20489C1C1Ev();
extern void _ZN8S20489C1D2Ev();
Name_Map name_map_S20489C1[] = {
  NSPAIR(_ZN8S20489C1C1Ev),
  NSPAIR(_ZN8S20489C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
extern Class_Descriptor cd_S20489C2;
extern VTBL_ENTRY _ZTI8S20489C2[];
extern  VTBL_ENTRY _ZTV8S20489C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C2[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C13;
extern VTBL_ENTRY _ZTI9S20489C13[];
extern  VTBL_ENTRY _ZTV9S20489C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
extern Class_Descriptor cd_S20489C12;
extern VTBL_ENTRY _ZTI9S20489C12[];
extern  VTBL_ENTRY _ZTV9S20489C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C12[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C15;
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20489C16_nt;
extern VTBL_ENTRY _ZTI12S20489C16_nt[];
extern  VTBL_ENTRY _ZTV12S20489C16_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C16_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C5;
extern VTBL_ENTRY _ZTI8S20489C5[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C3;
extern VTBL_ENTRY _ZTI8S20489C3[];
extern  VTBL_ENTRY _ZTV8S20489C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C3[];
extern Class_Descriptor cd_S20489C11;
extern VTBL_ENTRY _ZTI9S20489C11[];
extern  VTBL_ENTRY _ZTV9S20489C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C11[];
extern Class_Descriptor cd_S20489C18_nt;
extern VTBL_ENTRY _ZTI12S20489C18_nt[];
extern  VTBL_ENTRY _ZTV12S20489C18_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C18_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S20489C15;
extern VTBL_ENTRY _ZTI9S20489C15[];
extern  VTBL_ENTRY _ZTV9S20489C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C15[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C20;
extern VTBL_ENTRY _ZTI9S20489C20[];
extern  VTBL_ENTRY _ZTV9S20489C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C20[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S20489C6_nt;
extern VTBL_ENTRY _ZTI11S20489C6_nt[];
extern  VTBL_ENTRY _ZTV11S20489C6_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S20489C6_nt[];
extern Class_Descriptor cd_S20489C21;
extern VTBL_ENTRY _ZTI9S20489C21[];
extern  VTBL_ENTRY _ZTV9S20489C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C21[];
extern Class_Descriptor cd_S20489C19;
extern VTBL_ENTRY _ZTI9S20489C19[];
extern  VTBL_ENTRY _ZTV9S20489C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20489C19[];
extern Class_Descriptor cd_S20489C9;
extern VTBL_ENTRY _ZTI8S20489C9[];
extern  VTBL_ENTRY _ZTV8S20489C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C9[];
extern Class_Descriptor cd_S20489C18_nt;
extern VTBL_ENTRY _ZTI12S20489C18_nt[];
extern  VTBL_ENTRY _ZTV12S20489C18_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S20489C18_nt[];
static Base_Class bases_S20489C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20489C5,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C6_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
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S1540C9_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20489C3,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20489C2,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(124,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
    47, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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
    16, //immediately_derived
  0, 0},
  {&cd_S1540C9_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
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(140,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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(140,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
    16, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20489C13,    ABISELECT(128,84), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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
    21, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(76,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
    21, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    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
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20489C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20489C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(152,96), //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
    27, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S1540C9_nt,    ABISELECT(164,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
    27, //immediately_derived
  0, 0},
  {&cd_S20489C15,    ABISELECT(152,96), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20489C16_nt,    ABISELECT(80,48), //bcp->offset
    47, //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
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(108,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    32, //immediately_derived
  0, 0},
  {&cd_S20489C5,    ABISELECT(108,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
    34, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(96,60), //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
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20489C3,    ABISELECT(96,60), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20489C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20489C18_nt,    ABISELECT(112,72), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S1540C9_nt,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    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
    47, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S1540C9_nt,    ABISELECT(180,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
    40, //immediately_derived
  0, 0},
  {&cd_S20489C15,    ABISELECT(168,108), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(184,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20489C20,    ABISELECT(184,120), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S662C14,    ABISELECT(200,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
    45, //immediately_derived
  0, 0},
  {&cd_S20489C6_nt,    ABISELECT(208,132), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S20489C21,    ABISELECT(200,128), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20489C19,    ABISELECT(168,108), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S20489C9,    ABISELECT(64,36), //bcp->offset
    30, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C18_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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20489C1[];
extern void _ZN8S20489C1D1Ev();
extern void _ZN8S20489C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S20489C1D1Ev,_ZTv0_n60_N8S20489C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20489C1D1Ev,_ZThn36_N8S20489C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20489C1D0Ev,_ZTv0_n60_N8S20489C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20489C1D0Ev,_ZThn36_N8S20489C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20489C1D1Ev,_ZTv0_n36_N8S20489C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S20489C1D1Ev,_ZThn108_N8S20489C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20489C1D0Ev,_ZTv0_n36_N8S20489C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S20489C1D0Ev,_ZThn108_N8S20489C1D0Ev)() __attribute__((weak));
extern void _ZN9S20489C202v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20489C1D1Ev,_ZTv0_n24_N8S20489C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S20489C1D1Ev,_ZThn128_N8S20489C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20489C1D0Ev,_ZTv0_n24_N8S20489C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S20489C1D0Ev,_ZThn128_N8S20489C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20489C1[] = {
  ABISELECT(208,132),
  ABISELECT(200,128),
  ABISELECT(168,108),
  ABISELECT(168,108),
  ABISELECT(152,96),
  0,
  ABISELECT(128,84),
  ABISELECT(124,80),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  (VTBL_ENTRY)&_ZN8S20489C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20489C1D0Ev,
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(-64,-36),
  ABISELECT(144,96),
  ABISELECT(136,92),
  ABISELECT(104,72),
  ABISELECT(60,44),
  ABISELECT(-64,-36),
  ABISELECT(104,72),
  ABISELECT(88,60),
  ABISELECT(-64,-36),
  ABISELECT(64,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20489C1D1Ev,_ZTv0_n60_N8S20489C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20489C1D0Ev,_ZTv0_n60_N8S20489C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(-40,-28),
  ABISELECT(-48,-32),
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(-112,-72),
  ABISELECT(-112,-72),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(-128,-84),
  ABISELECT(-128,-84),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(16,12),
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  ABISELECT(16,12),
  ABISELECT(-168,-108),
  ABISELECT(-168,-108),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-112,-76),
  0,
  ABISELECT(-168,-108),
  ABISELECT(-168,-108),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20489C1D1Ev,_ZTv0_n36_N8S20489C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20489C1D0Ev,_ZTv0_n36_N8S20489C1D0Ev),
  ABISELECT(-128,-88),
  ABISELECT(-184,-120),
  ABISELECT(-184,-120),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(8,4),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20489C1D1Ev,_ZTv0_n24_N8S20489C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20489C1D0Ev,_ZTv0_n24_N8S20489C1D0Ev),
  ABISELECT(-208,-132),
  ABISELECT(-208,-132),
  (VTBL_ENTRY)&(_ZTI8S20489C1[0]),
};
extern VTBL_ENTRY _ZTV8S20489C1[];
static  VTBL_ENTRY _tg__ZTV12S20489C18_nt__A1__8S20489C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C18_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C2__8S20489C1[] = {
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C3__8S20489C2__8S20489C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20489C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C3__8S20489C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C3__8S20489C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN8S20489C9D1Ev();
extern void _ZN8S20489C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20489C9__8S20489C1[] = {
  ABISELECT(144,96),
  ABISELECT(136,92),
  ABISELECT(104,72),
  ABISELECT(60,44),
  ABISELECT(-64,-36),
  ABISELECT(104,72),
  ABISELECT(88,60),
  ABISELECT(-64,-36),
  ABISELECT(64,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&_ZN8S20489C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20489C9D0Ev,
};
extern void _ZN9S20489C11D1Ev();
extern void _ZN9S20489C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(104,72),
  ABISELECT(88,60),
  ABISELECT(-64,-36),
  ABISELECT(64,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
  (VTBL_ENTRY)&_ZN9S20489C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C11D0Ev,
};
extern void _ZN9S20489C12D1Ev();
extern void _ZN9S20489C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C129S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,48),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
  (VTBL_ENTRY)&_ZN9S20489C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20489C39S20489C129S20489C118S20489C9__A1__8S20489C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C39S20489C129S20489C118S20489C9__A1__8S20489C1[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C129S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI9S20489C12[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C16_nt9S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C16_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C39S20489C118S20489C9__A2__8S20489C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-48,-32),
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20489C3[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt8S20489C39S20489C118S20489C9__A3__8S20489C1[] = {
  ABISELECT(-96,-60),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__9S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C15__9S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(16,12),
  ABISELECT(-152,-96),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C16_nt__9S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C3__A1__9S20489C118S20489C9__8S20489C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-48,-32),
  ABISELECT(-96,-60),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI9S20489C11[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C18_nt8S20489C9__8S20489C1[] = {
  ABISELECT(-112,-72),
  0,
  (VTBL_ENTRY)&(_ZTI12S20489C18_nt[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__8S20489C9__8S20489C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C15__8S20489C9__8S20489C1[] = {
  ABISELECT(16,12),
  ABISELECT(-152,-96),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C16_nt9S20489C11__8S20489C9__8S20489C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20489C39S20489C11__A1__8S20489C9__8S20489C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(-48,-32),
  ABISELECT(-96,-60),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
static  VTBL_ENTRY _tg__ZTV12S20489C18_nt__8S20489C9__8S20489C1[] = {
  ABISELECT(-112,-72),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S20489C9D1Ev,_ZTv0_n36_N8S20489C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S20489C9D1Ev,_ZThn72_N8S20489C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20489C9D0Ev,_ZTv0_n36_N8S20489C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S20489C9D0Ev,_ZThn72_N8S20489C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20489C19__8S20489C9__8S20489C1[] = {
  ABISELECT(16,12),
  ABISELECT(-104,-72),
  ABISELECT(-168,-108),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-112,-76),
  0,
  ABISELECT(-168,-108),
  ABISELECT(-104,-72),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20489C9D1Ev,_ZTv0_n36_N8S20489C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20489C9D0Ev,_ZTv0_n36_N8S20489C9D0Ev),
};
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C209S20489C19__8S20489C9__8S20489C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-184,-120),
  ABISELECT(-120,-84),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20489C9D1Ev,_ZTv0_n24_N8S20489C9D1Ev)();
extern void ABISELECT(_ZThn136_N8S20489C9D1Ev,_ZThn92_N8S20489C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20489C9D0Ev,_ZTv0_n24_N8S20489C9D0Ev)();
extern void ABISELECT(_ZThn136_N8S20489C9D0Ev,_ZThn92_N8S20489C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20489C21__8S20489C9__8S20489C1[] = {
  ABISELECT(-136,-92),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(8,4),
  ABISELECT(-136,-92),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20489C9D1Ev,_ZTv0_n24_N8S20489C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20489C9D0Ev,_ZTv0_n24_N8S20489C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__A5__8S20489C9__8S20489C1[] = {
  ABISELECT(-208,-132),
  ABISELECT(-144,-96),
  (VTBL_ENTRY)&(_ZTI8S20489C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C13__8S20489C1[] = {
  ABISELECT(-128,-84),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20489C15__8S20489C1[] = {
  ABISELECT(16,12),
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C15__A2__8S20489C1[] = {
  ABISELECT(-152,-96),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C19D1Ev();
extern void _ZN9S20489C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C19__8S20489C1[] = {
  ABISELECT(-168,-108),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-112,-76),
  0,
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&_ZN9S20489C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20489C159S20489C19__A1__8S20489C1[] = {
  0,
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C15[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C159S20489C19__A4__8S20489C1[] = {
  ABISELECT(-168,-108),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C209S20489C19__8S20489C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C20[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt9S20489C209S20489C19__A5__8S20489C1[] = {
  ABISELECT(-184,-120),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
extern void _ZN9S20489C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C20__9S20489C19__8S20489C1[] = {
  ABISELECT(-128,-88),
  ABISELECT(-184,-120),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&_ZN9S20489C202v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20489C19D1Ev,_ZThn20_N9S20489C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20489C19D0Ev,_ZThn20_N9S20489C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20489C21__9S20489C19__8S20489C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(8,4),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__A2__9S20489C19__8S20489C1[] = {
  ABISELECT(-208,-132),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20489C19[0]),
};
extern void _ZN9S20489C21D1Ev();
extern void _ZN9S20489C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20489C21__8S20489C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
  (VTBL_ENTRY)&_ZN9S20489C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20489C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__9S20489C21__8S20489C1[] = {
  ABISELECT(-208,-132),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20489C21[0]),
};
static  VTBL_ENTRY _tg__ZTV11S20489C6_nt__A6__8S20489C1[] = {
  ABISELECT(-208,-132),
  0,
  (VTBL_ENTRY)&(_ZTI11S20489C6_nt[0]),
};
static  VTT_ENTRY vtt_S20489C1[] = {
  {&(_ZTV8S20489C1[17]),  17,93},
  {&(_tg__ZTV12S20489C18_nt__A1__8S20489C1[3]),  3,3},
  {&(_ZTV8S20489C1[25]),  25,93},
  {&(_ZTV8S20489C1[30]),  30,93},
  {&(_ZTV8S20489C1[45]),  45,93},
  {&(_ZTV8S20489C1[61]),  61,93},
  {&(_ZTV8S20489C1[65]),  65,93},
  {&(_ZTV8S20489C1[50]),  50,93},
  {&(_ZTV8S20489C1[55]),  55,93},
  {&(_ZTV8S20489C1[58]),  58,93},
  {&(_ZTV8S20489C1[75]),  75,93},
  {&(_ZTV8S20489C1[81]),  81,93},
  {&(_ZTV8S20489C1[88]),  88,93},
  {&(_ZTV8S20489C1[93]),  93,93},
  {&(_tg__ZTV8S20489C2__8S20489C1[6]),  6,6},
  {&(_tg__ZTV8S20489C3__8S20489C2__8S20489C1[5]),  5,5},
  {&(_tg__ZTV8S20489C3__8S20489C1[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C3__8S20489C1[3]),  3,3},
  {&(_tg__ZTV8S20489C9__8S20489C1[14]),  14,16},
  {&(_tg__ZTV9S20489C118S20489C9__8S20489C1[10]),  10,12},
  {&(_tg__ZTV9S20489C129S20489C118S20489C9__8S20489C1[7]),  7,9},
  {&(_tg__ZTV8S20489C39S20489C129S20489C118S20489C9__A1__8S20489C1[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C39S20489C129S20489C118S20489C9__A1__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C13__9S20489C129S20489C118S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV12S20489C16_nt9S20489C118S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV8S20489C39S20489C118S20489C9__A2__8S20489C1[5]),  5,5},
  {&(_tg__ZTV11S20489C6_nt8S20489C39S20489C118S20489C9__A3__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C13__9S20489C118S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C15__9S20489C118S20489C9__8S20489C1[4]),  4,4},
  {&(_tg__ZTV12S20489C16_nt__9S20489C118S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV8S20489C3__A1__9S20489C118S20489C9__8S20489C1[5]),  5,5},
  {&(_tg__ZTV12S20489C18_nt8S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C13__8S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C15__8S20489C9__8S20489C1[4]),  4,4},
  {&(_tg__ZTV12S20489C16_nt9S20489C11__8S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV8S20489C39S20489C11__A1__8S20489C9__8S20489C1[5]),  5,5},
  {&(_tg__ZTV12S20489C18_nt__8S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C19__8S20489C9__8S20489C1[10]),  10,12},
  {&(_tg__ZTV9S20489C209S20489C19__8S20489C9__8S20489C1[4]),  4,5},
  {&(_tg__ZTV9S20489C21__8S20489C9__8S20489C1[6]),  6,8},
  {&(_tg__ZTV11S20489C6_nt__A5__8S20489C9__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C13__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C15__8S20489C1[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt9S20489C15__A2__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C19__8S20489C1[8]),  8,10},
  {&(_tg__ZTV9S20489C159S20489C19__A1__8S20489C1[4]),  4,4},
  {&(_tg__ZTV11S20489C6_nt9S20489C159S20489C19__A4__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C209S20489C19__8S20489C1[4]),  4,5},
  {&(_tg__ZTV11S20489C6_nt9S20489C209S20489C19__A5__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C20__9S20489C19__8S20489C1[4]),  4,5},
  {&(_tg__ZTV9S20489C21__9S20489C19__8S20489C1[6]),  6,8},
  {&(_tg__ZTV11S20489C6_nt__A2__9S20489C19__8S20489C1[3]),  3,3},
  {&(_tg__ZTV9S20489C21__8S20489C1[5]),  5,7},
  {&(_tg__ZTV11S20489C6_nt__9S20489C21__8S20489C1[3]),  3,3},
  {&(_tg__ZTV11S20489C6_nt__A6__8S20489C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20489C1[];
extern  VTBL_ENTRY _ZTV8S20489C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20489C1[];
static VTBL_ENTRY alt_thunk_names78[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20489C19D0Ev,_ZTv0_n24_N9S20489C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20489C19D0Ev,_ZThn20_N9S20489C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20489C19D1Ev,_ZTv0_n24_N9S20489C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20489C19D1Ev,_ZThn20_N9S20489C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20489C9D0Ev,_ZTv0_n24_N8S20489C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20489C9D0Ev,_ZThn92_N8S20489C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20489C9D1Ev,_ZTv0_n24_N8S20489C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20489C9D1Ev,_ZThn92_N8S20489C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20489C9D0Ev,_ZTv0_n36_N8S20489C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20489C9D0Ev,_ZThn72_N8S20489C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20489C9D1Ev,_ZTv0_n36_N8S20489C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20489C9D1Ev,_ZThn72_N8S20489C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20489C1D0Ev,_ZTv0_n24_N8S20489C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20489C1D0Ev,_ZThn128_N8S20489C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20489C1D1Ev,_ZTv0_n24_N8S20489C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20489C1D1Ev,_ZThn128_N8S20489C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20489C1D0Ev,_ZTv0_n36_N8S20489C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20489C1D0Ev,_ZThn108_N8S20489C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20489C1D1Ev,_ZTv0_n36_N8S20489C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20489C1D1Ev,_ZThn108_N8S20489C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20489C1D0Ev,_ZTv0_n60_N8S20489C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20489C1D0Ev,_ZThn36_N8S20489C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20489C1D1Ev,_ZTv0_n60_N8S20489C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20489C1D1Ev,_ZThn36_N8S20489C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20489C1 = {  "S20489C1", // class name
  bases_S20489C1, 49,
  &(vtc_S20489C1[0]), // expected_vtbl_contents
  &(vtt_S20489C1[0]), // expected_vtt_contents
  ABISELECT(224,140), // object size
  NSPAIRA(_ZTI8S20489C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20489C1),93, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20489C1),55, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names78,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20488C5  : S9624C48 {
};
//SIG(-1 S20488C5) C1{ BC2{ m}}



static void Test_S20488C5()
{
  extern Class_Descriptor cd_S20488C5;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S20488C5, buf);
    S20488C5 &lv = *(new (buf) S20488C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S20488C5)");
    check2(__alignof__(lv), 1, "__alignof__(S20488C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20488C5");
    test_class_info(&lv, &cd_S20488C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C5(Test_S20488C5, "S20488C5", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20488C6  : virtual S9624C48 {
  int s20488c6f0;
  ~S20488C6(); // tgen
  S20488C6(); // tgen
};
//SIG(-1 S20488C6) C1{ VBC2{ m} Fi}


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

static void Test_S20488C6()
{
  extern Class_Descriptor cd_S20488C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20488C6, buf);
    S20488C6 *dp, &lv = *(dp=new (buf) S20488C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20488C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C6)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20488C6");
    check_field_offset(lv, s20488c6f0, ABISELECT(8,4), "S20488C6.s20488c6f0");
    test_class_info(&lv, &cd_S20488C6);
    dp->~S20488C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C6(Test_S20488C6, "S20488C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20488C6C1Ev();
extern void _ZN8S20488C6D1Ev();
Name_Map name_map_S20488C6[] = {
  NSPAIR(_ZN8S20488C6C1Ev),
  NSPAIR(_ZN8S20488C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20488C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20488C6[];
static  VTBL_ENTRY vtc_S20488C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern VTBL_ENTRY _ZTV8S20488C6[];
static  VTT_ENTRY vtt_S20488C6[] = {
  {&(_ZTV8S20488C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
Class_Descriptor cd_S20488C6 = {  "S20488C6", // class name
  bases_S20488C6, 1,
  &(vtc_S20488C6[0]), // expected_vtbl_contents
  &(vtt_S20488C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20488C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20488C6),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20488C6),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  S20488C3  : S9624C48 , S20488C5 , S20488C6 , virtual S20489C10_nt , virtual S20489C8 {
  ::S20488C5 s20488c3f0;
  ~S20488C3(); // tgen
  S20488C3(); // tgen
};
//SIG(-1 S20488C3) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S20488C3()
{
  extern Class_Descriptor cd_S20488C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20488C3, buf);
    S20488C3 *dp, &lv = *(dp=new (buf) S20488C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20488C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C3)");
    /*is_ambiguous_... S20488C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20488C3");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(12,8), "S20488C3");
    check_base_class_offset(lv, (S20488C5*), ABISELECT(12,8), "S20488C3");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*), ABISELECT(14,10), "S20488C3");
    check_base_class_offset(lv, (S20488C6*), 0, "S20488C3");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,12), "S20488C3");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S20488C3");
    check_field_offset(lv, s20488c3f0, ABISELECT(13,9), "S20488C3.s20488c3f0");
    test_class_info(&lv, &cd_S20488C3);
    dp->~S20488C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C3(Test_S20488C3, "S20488C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20488C3C1Ev();
extern void _ZN8S20488C3D1Ev();
Name_Map name_map_S20488C3[] = {
  NSPAIR(_ZN8S20488C3C1Ev),
  NSPAIR(_ZN8S20488C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S20488C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20488C6,    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_S20489C10_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20488C3[];
static  VTBL_ENTRY vtc_S20488C3[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
extern VTBL_ENTRY _ZTV8S20488C3[];
static  VTBL_ENTRY _tg__ZTV8S20488C6__8S20488C3[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C3[] = {
  {&(_ZTV8S20488C3[5]),  5,5},
  {&(_tg__ZTV8S20488C6__8S20488C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
Class_Descriptor cd_S20488C3 = {  "S20488C3", // class name
  bases_S20488C3, 7,
  &(vtc_S20488C3[0]), // expected_vtbl_contents
  &(vtt_S20488C3[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20488C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20488C3),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20488C3),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  S20488C2  : virtual S20488C3 {
  int s20488c2f0;
  ~S20488C2(); // tgen
  S20488C2(); // tgen
};
//SIG(-1 S20488C2) C1{ VBC2{ BC3{ m} BC4{ BC3} BC5{ VBC3 Fi} VBC6{ m Fi} VBC7{ m Fi:0 Fp} FC4} Fi}


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

static void Test_S20488C2()
{
  extern Class_Descriptor cd_S20488C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S20488C2, buf);
    S20488C2 *dp, &lv = *(dp=new (buf) S20488C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20488C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C2)");
    /*is_ambiguous_... S20488C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*), ABISELECT(16,8), "S20488C2");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*), ABISELECT(28,16), "S20488C2");
    check_base_class_offset(lv, (S20488C5*)(S20488C3*), ABISELECT(28,16), "S20488C2");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*), 0, "S20488C2");
    check_base_class_offset(lv, (S20488C6*)(S20488C3*), ABISELECT(16,8), "S20488C2");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*), ABISELECT(32,20), "S20488C2");
    check_base_class_offset(lv, (S20489C8*)(S20488C3*), ABISELECT(40,24), "S20488C2");
    check_base_class_offset(lv, (S20488C3*), ABISELECT(16,8), "S20488C2");
    check_field_offset(lv, s20488c2f0, ABISELECT(8,4), "S20488C2.s20488c2f0");
    test_class_info(&lv, &cd_S20488C2);
    dp->~S20488C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C2(Test_S20488C2, "S20488C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20488C2C1Ev();
extern void _ZN8S20488C2D1Ev();
Name_Map name_map_S20488C2[] = {
  NSPAIR(_ZN8S20488C2C1Ev),
  NSPAIR(_ZN8S20488C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
static Base_Class bases_S20488C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20488C5,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20488C6,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20488C3,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20488C2[];
static  VTBL_ENTRY vtc_S20488C2[] = {
  ABISELECT(40,24),
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C2[0]),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20488C2[0]),
};
extern VTBL_ENTRY _ZTV8S20488C2[];
static  VTBL_ENTRY _tg__ZTV8S20488C3__8S20488C2[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C3__8S20488C2[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C2[] = {
  {&(_ZTV8S20488C2[6]),  6,11},
  {&(_ZTV8S20488C2[11]),  11,11},
  {&(_tg__ZTV8S20488C3__8S20488C2[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C3__8S20488C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20488C2[];
extern  VTBL_ENTRY _ZTV8S20488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C2[];
Class_Descriptor cd_S20488C2 = {  "S20488C2", // class name
  bases_S20488C2, 8,
  &(vtc_S20488C2[0]), // expected_vtbl_contents
  &(vtt_S20488C2[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20488C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20488C2),11, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20488C2),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20488C13  : virtual S9624C39 , S9624C48 , S20489C10_nt , S20488C5 , S20489C8 {
  ~S20488C13(); // tgen
  S20488C13(); // tgen
};
//SIG(-1 S20488C13) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S20488C13()
{
  extern Class_Descriptor cd_S20488C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20488C13, buf);
    S20488C13 *dp, &lv = *(dp=new (buf) S20488C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20488C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C13)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20488C13");
    /*is_ambiguous_... S20488C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20488C13");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S20488C13");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(12,8), "S20488C13");
    check_base_class_offset(lv, (S20488C5*), ABISELECT(12,8), "S20488C13");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20488C13");
    test_class_info(&lv, &cd_S20488C13);
    dp->~S20488C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C13(Test_S20488C13, "S20488C13", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20488C13C1Ev();
extern void _ZN9S20488C13D1Ev();
Name_Map name_map_S20488C13[] = {
  NSPAIR(_ZN9S20488C13C1Ev),
  NSPAIR(_ZN9S20488C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S20488C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20488C13[];
static  VTBL_ENTRY vtc_S20488C13[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C13[0]),
};
extern VTBL_ENTRY _ZTV9S20488C13[];
static  VTT_ENTRY vtt_S20488C13[] = {
  {&(_ZTV9S20488C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C13[];
extern  VTBL_ENTRY _ZTV9S20488C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C13[];
Class_Descriptor cd_S20488C13 = {  "S20488C13", // class name
  bases_S20488C13, 6,
  &(vtc_S20488C13[0]), // expected_vtbl_contents
  &(vtt_S20488C13[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20488C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20488C13),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C13),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  S20488C12  : virtual S20488C13 , virtual S20489C10_nt , S20488C3 {
  short s20488c12f0;
  virtual  ~S20488C12(); // _ZN9S20488C12D2Ev
  S20488C12(); // tgen
};
//SIG(-1 S20488C12) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}} VBC5 BC8{ BC4 BC6 BC9{ VBC4 Fi} VBC5 VBC7 FC6} vd Fs}


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

static void Test_S20488C12()
{
  extern Class_Descriptor cd_S20488C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S20488C12, buf);
    S20488C12 *dp, &lv = *(dp=new (buf) S20488C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S20488C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C12)");
    check_base_class_offset(lv, (S9624C39*)(S20488C13*), 0, "S20488C12");
    /*is_ambiguous_... S20488C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C13*), ABISELECT(16,12), "S20488C12");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C13*), ABISELECT(24,16), "S20488C12");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C13*), ABISELECT(28,20), "S20488C12");
    check_base_class_offset(lv, (S20488C5*)(S20488C13*), ABISELECT(28,20), "S20488C12");
    check_base_class_offset(lv, (S20489C8*)(S20488C13*), ABISELECT(32,20), "S20488C12");
    check_base_class_offset(lv, (S20488C13*), ABISELECT(16,12), "S20488C12");
    /*is_ambiguous_... S20488C12::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(40,24), "S20488C12");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*), ABISELECT(40,24), "S20488C12");
    /*is_ambiguous_... S20488C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*), 0, "S20488C12");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*), ABISELECT(12,8), "S20488C12");
    check_base_class_offset(lv, (S20488C5*)(S20488C3*), ABISELECT(12,8), "S20488C12");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*), ABISELECT(44,28), "S20488C12");
    check_base_class_offset(lv, (S20488C6*)(S20488C3*), 0, "S20488C12");
    check_base_class_offset(lv, (S20489C8*)(S20488C3*), ABISELECT(48,28), "S20488C12");
    check_base_class_offset(lv, (S20488C3*), 0, "S20488C12");
    check_field_offset(lv, s20488c12f0, ABISELECT(14,10), "S20488C12.s20488c12f0");
    test_class_info(&lv, &cd_S20488C12);
    dp->~S20488C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C12(Test_S20488C12, "S20488C12", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S20488C12C1Ev();
extern void _ZN9S20488C12D2Ev();
Name_Map name_map_S20488C12[] = {
  NSPAIR(_ZN9S20488C12C1Ev),
  NSPAIR(_ZN9S20488C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C13;
extern VTBL_ENTRY _ZTI9S20488C13[];
extern  VTBL_ENTRY _ZTV9S20488C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C13[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
static Base_Class bases_S20488C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20488C13,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20488C6,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S20488C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20488C12[];
extern void _ZN9S20488C12D1Ev();
extern void _ZN9S20488C12D0Ev();
static  VTBL_ENTRY vtc_S20488C12[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
  (VTBL_ENTRY)&_ZN9S20488C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C12D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
};
extern VTBL_ENTRY _ZTV9S20488C12[];
static  VTBL_ENTRY _tg__ZTV8S20488C3__9S20488C12[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C3__9S20488C12[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C12[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C13[0]),
};
static  VTT_ENTRY vtt_S20488C12[] = {
  {&(_ZTV9S20488C12[7]),  7,12},
  {&(_tg__ZTV8S20488C3__9S20488C12[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C3__9S20488C12[3]),  3,3},
  {&(_ZTV9S20488C12[12]),  12,12},
  {&(_tg__ZTV9S20488C13__9S20488C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C12[];
extern  VTBL_ENTRY _ZTV9S20488C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C12[];
Class_Descriptor cd_S20488C12 = {  "S20488C12", // class name
  bases_S20488C12, 15,
  &(vtc_S20488C12[0]), // expected_vtbl_contents
  &(vtt_S20488C12[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S20488C12),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20488C12),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C12),5, //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  S20488C15  : virtual S9624C48 , S20488C6 , virtual S20488C5 , S20489C10_nt {
  ~S20488C15(); // tgen
  S20488C15(); // tgen
};
//SIG(-1 S20488C15) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S20488C15()
{
  extern Class_Descriptor cd_S20488C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20488C15, buf);
    S20488C15 *dp, &lv = *(dp=new (buf) S20488C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20488C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C15)");
    /*is_ambiguous_... S20488C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20488C15");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*), 0, "S20488C15");
    check_base_class_offset(lv, (S20488C6*), 0, "S20488C15");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(16,12), "S20488C15");
    check_base_class_offset(lv, (S20488C5*), ABISELECT(16,12), "S20488C15");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(12,8), "S20488C15");
    test_class_info(&lv, &cd_S20488C15);
    dp->~S20488C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C15(Test_S20488C15, "S20488C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20488C15C1Ev();
extern void _ZN9S20488C15D1Ev();
Name_Map name_map_S20488C15[] = {
  NSPAIR(_ZN9S20488C15C1Ev),
  NSPAIR(_ZN9S20488C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S20488C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20488C6,    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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20488C15[];
static  VTBL_ENTRY vtc_S20488C15[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
extern VTBL_ENTRY _ZTV9S20488C15[];
static  VTBL_ENTRY _tg__ZTV8S20488C6__9S20488C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C15[] = {
  {&(_ZTV9S20488C15[4]),  4,4},
  {&(_tg__ZTV8S20488C6__9S20488C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
Class_Descriptor cd_S20488C15 = {  "S20488C15", // class name
  bases_S20488C15, 5,
  &(vtc_S20488C15[0]), // expected_vtbl_contents
  &(vtt_S20488C15[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20488C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20488C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C15),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  S20488C16  : virtual S9624C19_nt {
  long s20488c16f0;
  ~S20488C16(); // tgen
  S20488C16(); // tgen
};
//SIG(-1 S20488C16) C1{ VBC2{ m} Fl}


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

static void Test_S20488C16()
{
  extern Class_Descriptor cd_S20488C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20488C16, buf);
    S20488C16 *dp, &lv = *(dp=new (buf) S20488C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20488C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C16)");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S20488C16");
    check_field_offset(lv, s20488c16f0, ABISELECT(8,4), "S20488C16.s20488c16f0");
    test_class_info(&lv, &cd_S20488C16);
    dp->~S20488C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C16(Test_S20488C16, "S20488C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S20488C16C1Ev();
extern void _ZN9S20488C16D1Ev();
Name_Map name_map_S20488C16[] = {
  NSPAIR(_ZN9S20488C16C1Ev),
  NSPAIR(_ZN9S20488C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S20488C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20488C16[];
static  VTBL_ENTRY vtc_S20488C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C16[0]),
};
extern VTBL_ENTRY _ZTV9S20488C16[];
static  VTT_ENTRY vtt_S20488C16[] = {
  {&(_ZTV9S20488C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C16[];
extern  VTBL_ENTRY _ZTV9S20488C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C16[];
Class_Descriptor cd_S20488C16 = {  "S20488C16", // class name
  bases_S20488C16, 1,
  &(vtc_S20488C16[0]), // expected_vtbl_contents
  &(vtt_S20488C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S20488C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20488C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C16),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  S20488C11  : S20488C12 , virtual S20488C15 , S20488C16 , S20488C3 {
  ~S20488C11(); // tgen
  S20488C11(); // tgen
};
//SIG(-1 S20488C11) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} BC6{ m Fi} BC7{ BC5} BC8{ m Fi:0 Fp}} VBC6 BC9{ BC5 BC7 BC10{ VBC5 Fi} VBC6 VBC8 FC7} vd Fs} VBC11{ VBC5 BC10 VBC7 BC6} BC12{ VBC13{ m} Fl} BC9}


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

static void Test_S20488C11()
{
  extern Class_Descriptor cd_S20488C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S20488C11, buf);
    S20488C11 *dp, &lv = *(dp=new (buf) S20488C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S20488C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C11)");
    check_base_class_offset(lv, (S9624C39*)(S20488C13*), 0, "S20488C11");
    /*is_ambiguous_... S20488C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C13*), ABISELECT(48,32), "S20488C11");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C13*), ABISELECT(56,36), "S20488C11");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C13*), ABISELECT(60,40), "S20488C11");
    check_base_class_offset(lv, (S20488C5*)(S20488C13*), ABISELECT(60,40), "S20488C11");
    check_base_class_offset(lv, (S20489C8*)(S20488C13*), ABISELECT(64,40), "S20488C11");
    check_base_class_offset(lv, (S20488C13*)(S20488C12*), ABISELECT(48,32), "S20488C11");
    /*is_ambiguous_... S20488C12::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C12*), ABISELECT(72,44), "S20488C11");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*)(S20488C12*), ABISELECT(72,44), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*), ABISELECT(72,44), "S20488C11");
    /*is_ambiguous_... S20488C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*)(S20488C12*), 0, "S20488C11");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*)(S20488C12*), ABISELECT(12,8), "S20488C11");
    check_base_class_offset(lv, (S20488C5*)(S20488C3*)(S20488C12*), ABISELECT(12,8), "S20488C11");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*)(S20488C12*), ABISELECT(76,48), "S20488C11");
    /*is_ambiguous_... S20488C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C15*), ABISELECT(76,48), "S20488C11");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C15*), ABISELECT(76,48), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*), ABISELECT(76,48), "S20488C11");
    check_base_class_offset(lv, (S20488C6*)(S20488C3*)(S20488C12*), 0, "S20488C11");
    check_base_class_offset(lv, (S20489C8*)(S20488C3*)(S20488C12*), ABISELECT(80,48), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20488C3*), ABISELECT(80,48), "S20488C11");
    check_base_class_offset(lv, (S20488C3*)(S20488C12*), 0, "S20488C11");
    check_base_class_offset(lv, (S20488C12*), 0, "S20488C11");
    check_base_class_offset(lv, (S20488C6*)(S20488C15*), ABISELECT(88,52), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(104,64), "S20488C11");
    check_base_class_offset(lv, (S20488C5*)(S20488C15*), ABISELECT(104,64), "S20488C11");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C15*), ABISELECT(100,60), "S20488C11");
    check_base_class_offset(lv, (S20488C15*), ABISELECT(88,52), "S20488C11");
    check_base_class_offset(lv, (S9624C19_nt*)(S20488C16*), 0, "S20488C11");
    check_base_class_offset(lv, (S20488C16*), ABISELECT(16,12), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*), ABISELECT(32,20), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*), ABISELECT(44,28), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C5*)(S20488C3*), ABISELECT(44,28), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C6*)(S20488C3*), ABISELECT(32,20), "S20488C11");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C3*), ABISELECT(32,20), "S20488C11");
    test_class_info(&lv, &cd_S20488C11);
    dp->~S20488C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C11(Test_S20488C11, "S20488C11", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN9S20488C11C1Ev();
extern void _ZN9S20488C11D1Ev();
Name_Map name_map_S20488C11[] = {
  NSPAIR(_ZN9S20488C11C1Ev),
  NSPAIR(_ZN9S20488C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C13;
extern VTBL_ENTRY _ZTI9S20488C13[];
extern  VTBL_ENTRY _ZTV9S20488C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C13[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
extern Class_Descriptor cd_S20488C12;
extern VTBL_ENTRY _ZTI9S20488C12[];
extern  VTBL_ENTRY _ZTV9S20488C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C12[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C15;
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20488C16;
extern VTBL_ENTRY _ZTI9S20488C16[];
extern  VTBL_ENTRY _ZTV9S20488C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
static Base_Class bases_S20488C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20488C13,    ABISELECT(48,32), //bcp->offset
    20, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S20488C6,    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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S20488C3,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20488C12,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20488C6,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(100,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S20488C15,    ABISELECT(88,52), //bcp->offset
    23, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20488C16,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    27, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(44,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
    27, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S20488C3,    ABISELECT(32,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20488C11[];
extern void _ZN9S20488C11D1Ev();
extern void _ZN9S20488C11D0Ev();
static  VTBL_ENTRY vtc_S20488C11[] = {
  0,
  ABISELECT(104,64),
  ABISELECT(88,52),
  0,
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
  (VTBL_ENTRY)&_ZN9S20488C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C11D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
extern VTBL_ENTRY _ZTV9S20488C11[];
extern void _ZN9S20488C12D1Ev();
extern void _ZN9S20488C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C12__9S20488C11[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
  (VTBL_ENTRY)&_ZN9S20488C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C39S20488C12__9S20488C11[] = {
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C39S20488C12__9S20488C11[] = {
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C12__9S20488C11[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C16__9S20488C11[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C3__A1__9S20488C11[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C3__A2__9S20488C11[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C11[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C15__9S20488C11[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C15__A1__9S20488C11[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C11[] = {
  {&(_ZTV9S20488C11[10]),  10,27},
  {&(_tg__ZTV9S20488C12__9S20488C11[7]),  7,9},
  {&(_tg__ZTV8S20488C39S20488C12__9S20488C11[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C39S20488C12__9S20488C11[3]),  3,3},
  {&(_tg__ZTV9S20488C13__9S20488C12__9S20488C11[3]),  3,3},
  {&(_tg__ZTV9S20488C16__9S20488C11[3]),  3,3},
  {&(_tg__ZTV8S20488C3__A1__9S20488C11[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C3__A2__9S20488C11[3]),  3,3},
  {&(_ZTV9S20488C11[23]),  23,27},
  {&(_ZTV9S20488C11[27]),  27,27},
  {&(_ZTV9S20488C11[15]),  15,27},
  {&(_ZTV9S20488C11[20]),  20,27},
  {&(_tg__ZTV9S20488C13__9S20488C11[3]),  3,3},
  {&(_tg__ZTV9S20488C15__9S20488C11[4]),  4,4},
  {&(_tg__ZTV8S20488C69S20488C15__A1__9S20488C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C11[];
extern  VTBL_ENTRY _ZTV9S20488C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C11[];
Class_Descriptor cd_S20488C11 = {  "S20488C11", // class name
  bases_S20488C11, 28,
  &(vtc_S20488C11[0]), // expected_vtbl_contents
  &(vtt_S20488C11[0]), // expected_vtt_contents
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI9S20488C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20488C11),27, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C11),15, //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  S20488C18  : virtual S9624C19_nt {
  ~S20488C18(); // tgen
  S20488C18(); // tgen
};
//SIG(-1 S20488C18) C1{ VBC2{ m}}


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

static void Test_S20488C18()
{
  extern Class_Descriptor cd_S20488C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20488C18, buf);
    S20488C18 *dp, &lv = *(dp=new (buf) S20488C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20488C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C18)");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S20488C18");
    test_class_info(&lv, &cd_S20488C18);
    dp->~S20488C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C18(Test_S20488C18, "S20488C18", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S20488C18C1Ev();
extern void _ZN9S20488C18D1Ev();
Name_Map name_map_S20488C18[] = {
  NSPAIR(_ZN9S20488C18C1Ev),
  NSPAIR(_ZN9S20488C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S20488C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20488C18[];
static  VTBL_ENTRY vtc_S20488C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C18[0]),
};
extern VTBL_ENTRY _ZTV9S20488C18[];
static  VTT_ENTRY vtt_S20488C18[] = {
  {&(_ZTV9S20488C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C18[];
extern  VTBL_ENTRY _ZTV9S20488C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C18[];
Class_Descriptor cd_S20488C18 = {  "S20488C18", // class name
  bases_S20488C18, 1,
  &(vtc_S20488C18[0]), // expected_vtbl_contents
  &(vtt_S20488C18[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S20488C18),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20488C18),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C18),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  S20488C20  : virtual S20489C8 , virtual S9624C48 , S20488C6 {
  virtual void  v1(); // _ZN9S20488C202v1Ev
  ~S20488C20(); // tgen
  S20488C20(); // tgen
};
//SIG(-1 S20488C20) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S20488C20()
{
  extern Class_Descriptor cd_S20488C20;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20488C20, buf);
    S20488C20 *dp, &lv = *(dp=new (buf) S20488C20());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20488C20)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C20)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20488C20");
    check_base_class_offset(lv, (S9624C48*), 0, "S20488C20");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*), 0, "S20488C20");
    check_base_class_offset(lv, (S20488C6*), 0, "S20488C20");
    test_class_info(&lv, &cd_S20488C20);
    dp->~S20488C20();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C20(Test_S20488C20, "S20488C20", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20488C20C1Ev();
extern void _ZN9S20488C20D1Ev();
Name_Map name_map_S20488C20[] = {
  NSPAIR(_ZN9S20488C20C1Ev),
  NSPAIR(_ZN9S20488C20D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
static Base_Class bases_S20488C20[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20488C6,    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 _ZTI9S20488C20[];
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY vtc_S20488C20[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C20[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
extern VTBL_ENTRY _ZTV9S20488C20[];
static  VTBL_ENTRY _tg__ZTV8S20488C6__9S20488C20[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C20[] = {
  {&(_ZTV9S20488C20[4]),  4,5},
  {&(_tg__ZTV8S20488C6__9S20488C20[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C20[];
extern  VTBL_ENTRY _ZTV9S20488C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C20[];
Class_Descriptor cd_S20488C20 = {  "S20488C20", // class name
  bases_S20488C20, 3,
  &(vtc_S20488C20[0]), // expected_vtbl_contents
  &(vtt_S20488C20[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20488C20),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20488C20),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C20),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  S20488C21  : S662C14 , virtual S20488C6 , virtual S9624C39 {
  virtual  ~S20488C21(); // _ZN9S20488C21D2Ev
  S20488C21(); // tgen
};
//SIG(-1 S20488C21) C1{ BC2{ m} VBC3{ VBC4{ m} Fi} VBC5{ m} vd}


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

static void Test_S20488C21()
{
  extern Class_Descriptor cd_S20488C21;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20488C21, buf);
    S20488C21 *dp, &lv = *(dp=new (buf) S20488C21());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20488C21)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C21)");
    check_base_class_offset(lv, (S662C14*), 0, "S20488C21");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*), 0, "S20488C21");
    check_base_class_offset(lv, (S20488C6*), ABISELECT(8,4), "S20488C21");
    check_base_class_offset(lv, (S9624C39*), 0, "S20488C21");
    test_class_info(&lv, &cd_S20488C21);
    dp->~S20488C21();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C21(Test_S20488C21, "S20488C21", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20488C21C1Ev();
extern void _ZN9S20488C21D2Ev();
Name_Map name_map_S20488C21[] = {
  NSPAIR(_ZN9S20488C21C1Ev),
  NSPAIR(_ZN9S20488C21D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20488C21[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20488C6,    ABISELECT(8,4), //bcp->offset
    7, //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_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20488C21[];
extern void _ZN9S20488C21D1Ev();
extern void _ZN9S20488C21D0Ev();
static  VTBL_ENTRY vtc_S20488C21[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
  (VTBL_ENTRY)&_ZN9S20488C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C21D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
};
extern VTBL_ENTRY _ZTV9S20488C21[];
static  VTBL_ENTRY _tg__ZTV8S20488C6__9S20488C21[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C21[] = {
  {&(_ZTV9S20488C21[5]),  5,10},
  {&(_ZTV9S20488C21[10]),  10,10},
  {&(_tg__ZTV8S20488C6__9S20488C21[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C21[];
extern  VTBL_ENTRY _ZTV9S20488C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C21[];
Class_Descriptor cd_S20488C21 = {  "S20488C21", // class name
  bases_S20488C21, 4,
  &(vtc_S20488C21[0]), // expected_vtbl_contents
  &(vtt_S20488C21[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20488C21),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20488C21),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C21),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  S20488C19  : S20488C15 , virtual S20489C8 , S20488C20 , virtual S20488C21 {
  ~S20488C19(); // tgen
  S20488C19(); // tgen
};
//SIG(-1 S20488C19) C1{ BC2{ VBC3{ m} BC4{ VBC3 Fi} VBC5{ BC3} BC6{ m Fi}} VBC7{ m Fi:0 Fp} BC8{ VBC7 VBC3 BC4 v1} VBC9{ BC10{ m} VBC4 VBC11{ m} vd}}


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

static void Test_S20488C19()
{
  extern Class_Descriptor cd_S20488C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20488C19, buf);
    S20488C19 *dp, &lv = *(dp=new (buf) S20488C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20488C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C19)");
    /*is_ambiguous_... S20488C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C15*), 0, "S20488C19");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C15*), 0, "S20488C19");
    check_base_class_offset(lv, (S9624C48*)(S20488C20*), 0, "S20488C19");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C20*), 0, "S20488C19");
    /*is_ambiguous_... S20488C19::S20488C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*), 0, "S20488C19");
    check_base_class_offset(lv, (S20488C6*)(S20488C15*), 0, "S20488C19");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(28,20), "S20488C19");
    check_base_class_offset(lv, (S20488C5*)(S20488C15*), ABISELECT(28,20), "S20488C19");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C15*), ABISELECT(12,8), "S20488C19");
    check_base_class_offset(lv, (S20488C15*), 0, "S20488C19");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(32,20), "S20488C19");
    check_base_class_offset(lv, (S20489C8*)(S20488C20*), ABISELECT(32,20), "S20488C19");
    check_base_class_offset(lv, (S20488C6*)(S20488C20*), ABISELECT(16,12), "S20488C19");
    check_base_class_offset(lv, (S20488C20*), ABISELECT(16,12), "S20488C19");
    check_base_class_offset(lv, (S662C14*)(S20488C21*), ABISELECT(40,24), "S20488C19");
    check_base_class_offset(lv, (S20488C6*)(S20488C21*), ABISELECT(48,28), "S20488C19");
    check_base_class_offset(lv, (S9624C39*)(S20488C21*), 0, "S20488C19");
    check_base_class_offset(lv, (S20488C21*), ABISELECT(40,24), "S20488C19");
    test_class_info(&lv, &cd_S20488C19);
    dp->~S20488C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C19(Test_S20488C19, "S20488C19", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S20488C19C1Ev();
extern void _ZN9S20488C19D1Ev();
Name_Map name_map_S20488C19[] = {
  NSPAIR(_ZN9S20488C19C1Ev),
  NSPAIR(_ZN9S20488C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C15;
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C20;
extern VTBL_ENTRY _ZTI9S20488C20[];
extern  VTBL_ENTRY _ZTV9S20488C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C20[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20488C21;
extern VTBL_ENTRY _ZTI9S20488C21[];
extern  VTBL_ENTRY _ZTV9S20488C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C21[];
static Base_Class bases_S20488C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20488C6,    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
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20488C15,    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_S20489C8,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S20488C6,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20488C20,    ABISELECT(16,12), //bcp->offset
    10, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S662C14,    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
    12, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(48,28), //bcp->offset
    23, //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
    12, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20488C21,    ABISELECT(40,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20488C19[];
extern void _ZN9S20488C19D1Ev();
extern void _ZN9S20488C19D0Ev();
extern void _ZN9S20488C202v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev)();
extern void ABISELECT(_ZThn40_N9S20488C19D1Ev,_ZThn24_N9S20488C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev)();
extern void ABISELECT(_ZThn40_N9S20488C19D0Ev,_ZThn24_N9S20488C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20488C19[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&_ZN9S20488C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C19D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
};
extern VTBL_ENTRY _ZTV9S20488C19[];
static  VTBL_ENTRY _tg__ZTV9S20488C15__9S20488C19[] = {
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C15__9S20488C19[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C20__9S20488C19[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C20[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C20__A1__9S20488C19[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C21D1Ev();
extern void _ZN9S20488C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C21__9S20488C19[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
  (VTBL_ENTRY)&_ZN9S20488C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__9S20488C21__9S20488C19[] = {
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__A2__9S20488C19[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C19[] = {
  {&(_ZTV9S20488C19[8]),  8,26},
  {&(_tg__ZTV9S20488C15__9S20488C19[4]),  4,4},
  {&(_tg__ZTV8S20488C69S20488C15__9S20488C19[3]),  3,3},
  {&(_tg__ZTV9S20488C20__9S20488C19[4]),  4,5},
  {&(_tg__ZTV8S20488C69S20488C20__A1__9S20488C19[3]),  3,3},
  {&(_ZTV9S20488C19[14]),  14,26},
  {&(_ZTV9S20488C19[21]),  21,26},
  {&(_ZTV9S20488C19[26]),  26,26},
  {&(_tg__ZTV9S20488C21__9S20488C19[5]),  5,7},
  {&(_tg__ZTV8S20488C6__9S20488C21__9S20488C19[3]),  3,3},
  {&(_tg__ZTV8S20488C6__A2__9S20488C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20488C19[];
extern  VTBL_ENTRY _ZTV9S20488C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C19[];
static VTBL_ENTRY alt_thunk_names79[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20488C19D0Ev,_ZThn24_N9S20488C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20488C19D1Ev,_ZThn24_N9S20488C19D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20488C19 = {  "S20488C19", // class name
  bases_S20488C19, 13,
  &(vtc_S20488C19[0]), // expected_vtbl_contents
  &(vtt_S20488C19[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S20488C19),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20488C19),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20488C19),11, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names79,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20488C9  : virtual S1540C9_nt , S20488C11 , S20488C18 , S20489C10_nt , virtual S20488C19 {
  ~S20488C9(); // tgen
  S20488C9(); // tgen
};
//SIG(-1 S20488C9) C1{ VBC2{ m Fi} BC3{ BC4{ VBC5{ VBC6{ m} BC7{ m} BC8{ m Fi} BC9{ BC7} BC10{ m Fi:0 Fp}} VBC8 BC11{ BC7 BC9 BC12{ VBC7 Fi} VBC8 VBC10 FC9} vd Fs} VBC13{ VBC7 BC12 VBC9 BC8} BC14{ VBC15{ m} Fl} BC11} BC16{ VBC15} BC8 VBC17{ BC13 VBC10 BC18{ VBC10 VBC7 BC12 v1} VBC19{ BC20{ m} VBC12 VBC6 vd}}}


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

static void Test_S20488C9()
{
  extern Class_Descriptor cd_S20488C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(23,28)];
    init_test(&cd_S20488C9, buf);
    S20488C9 *dp, &lv = *(dp=new (buf) S20488C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,108), "sizeof(S20488C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C9)");
    check_base_class_offset(lv, (S1540C9_nt*), ABISELECT(60,40), "S20488C9");
    check_base_class_offset(lv, (S9624C39*)(S20488C13*), 0, "S20488C9");
    check_base_class_offset(lv, (S9624C39*)(S20488C21*), 0, "S20488C9");
    /*is_ambiguous_... S20488C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C13*), ABISELECT(64,44), "S20488C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C13*), ABISELECT(72,48), "S20488C9");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C13*), ABISELECT(76,52), "S20488C9");
    check_base_class_offset(lv, (S20488C5*)(S20488C13*), ABISELECT(76,52), "S20488C9");
    check_base_class_offset(lv, (S20489C8*)(S20488C13*), ABISELECT(80,52), "S20488C9");
    check_base_class_offset(lv, (S20488C13*)(S20488C12*)(S20488C11*), ABISELECT(64,44), "S20488C9");
    /*is_ambiguous_... S20488C12::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C12*)(S20488C11*), ABISELECT(88,56), "S20488C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*)(S20488C12*)(S20488C11*), ABISELECT(88,56), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*)(S20488C11*), ABISELECT(88,56), "S20488C9");
    /*is_ambiguous_... S20488C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*)(S20488C12*)(S20488C11*), 0, "S20488C9");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*)(S20488C12*)(S20488C11*), ABISELECT(12,8), "S20488C9");
    check_base_class_offset(lv, (S20488C5*)(S20488C3*)(S20488C12*)(S20488C11*), ABISELECT(12,8), "S20488C9");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*)(S20488C12*)(S20488C11*), ABISELECT(92,60), "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C15*), ABISELECT(92,60), "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C15*), ABISELECT(92,60), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*)(S20488C11*), ABISELECT(92,60), "S20488C9");
    /*is_ambiguous_... S20488C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C15*)(S20488C19*), ABISELECT(92,60), "S20488C9");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C15*)(S20488C19*), ABISELECT(92,60), "S20488C9");
    check_base_class_offset(lv, (S9624C48*)(S20488C20*)(S20488C19*), ABISELECT(92,60), "S20488C9");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C20*)(S20488C19*), ABISELECT(92,60), "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*), ABISELECT(92,60), "S20488C9");
    check_base_class_offset(lv, (S20488C6*)(S20488C3*)(S20488C12*)(S20488C11*), 0, "S20488C9");
    check_base_class_offset(lv, (S20489C8*)(S20488C3*)(S20488C12*)(S20488C11*), ABISELECT(96,60), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20488C3*)(S20488C11*), ABISELECT(96,60), "S20488C9");
    check_base_class_offset(lv, (S20489C8*)(S20488C19*), ABISELECT(96,60), "S20488C9");
    check_base_class_offset(lv, (S20489C8*)(S20488C20*)(S20488C19*), ABISELECT(96,60), "S20488C9");
    check_base_class_offset(lv, (S20488C3*)(S20488C12*)(S20488C11*), 0, "S20488C9");
    check_base_class_offset(lv, (S20488C12*)(S20488C11*), 0, "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C15 */ AMB_check_base_class_offset(lv, (S20488C6*)(S20488C15*), ABISELECT(104,64), "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(120,76), "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C15 */ AMB_check_base_class_offset(lv, (S20488C5*)(S20488C15*), ABISELECT(120,76), "S20488C9");
    check_base_class_offset(lv, (S20488C5*)(S20488C15*)(S20488C19*), ABISELECT(120,76), "S20488C9");
    /*is_ambiguous_... S20488C9::S20488C15 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C15*), ABISELECT(116,72), "S20488C9");
    check_base_class_offset(lv, (S20488C15*)(S20488C11*), ABISELECT(104,64), "S20488C9");
    check_base_class_offset(lv, (S9624C19_nt*)(S20488C16*)(S20488C11*), 0, "S20488C9");
    check_base_class_offset(lv, (S9624C19_nt*)(S20488C18*), 0, "S20488C9");
    check_base_class_offset(lv, (S20488C16*)(S20488C11*), ABISELECT(16,12), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*)(S20488C11*), ABISELECT(32,20), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*)(S20488C11*), ABISELECT(44,28), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C5*)(S20488C3*)(S20488C11*), ABISELECT(44,28), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C6*)(S20488C3*)(S20488C11*), ABISELECT(32,20), "S20488C9");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C3*)(S20488C11*), ABISELECT(32,20), "S20488C9");
    check_base_class_offset(lv, (S20488C11*), 0, "S20488C9");
    check_base_class_offset(lv, (S20488C18*), ABISELECT(48,32), "S20488C9");
    /*is_ambiguous_... S20488C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(56,36), "S20488C9");
    check_base_class_offset(lv, (S20488C6*)(S20488C15*)(S20488C19*), ABISELECT(120,76), "S20488C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C15*)(S20488C19*), ABISELECT(132,84), "S20488C9");
    check_base_class_offset(lv, (S20488C15*)(S20488C19*), ABISELECT(120,76), "S20488C9");
    check_base_class_offset(lv, (S20488C6*)(S20488C20*)(S20488C19*), ABISELECT(136,88), "S20488C9");
    check_base_class_offset(lv, (S20488C20*)(S20488C19*), ABISELECT(136,88), "S20488C9");
    check_base_class_offset(lv, (S662C14*)(S20488C21*), ABISELECT(152,96), "S20488C9");
    check_base_class_offset(lv, (S20488C6*)(S20488C21*), ABISELECT(160,100), "S20488C9");
    check_base_class_offset(lv, (S20488C21*)(S20488C19*), ABISELECT(152,96), "S20488C9");
    check_base_class_offset(lv, (S20488C19*), ABISELECT(120,76), "S20488C9");
    test_class_info(&lv, &cd_S20488C9);
    dp->~S20488C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C9(Test_S20488C9, "S20488C9", ABISELECT(176,108));

#else // __cplusplus

extern void _ZN8S20488C9C1Ev();
extern void _ZN8S20488C9D1Ev();
Name_Map name_map_S20488C9[] = {
  NSPAIR(_ZN8S20488C9C1Ev),
  NSPAIR(_ZN8S20488C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C13;
extern VTBL_ENTRY _ZTI9S20488C13[];
extern  VTBL_ENTRY _ZTV9S20488C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C13[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
extern Class_Descriptor cd_S20488C12;
extern VTBL_ENTRY _ZTI9S20488C12[];
extern  VTBL_ENTRY _ZTV9S20488C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C12[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C15;
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20488C16;
extern VTBL_ENTRY _ZTI9S20488C16[];
extern  VTBL_ENTRY _ZTV9S20488C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
extern Class_Descriptor cd_S20488C11;
extern VTBL_ENTRY _ZTI9S20488C11[];
extern  VTBL_ENTRY _ZTV9S20488C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C11[];
extern Class_Descriptor cd_S20488C18;
extern VTBL_ENTRY _ZTI9S20488C18[];
extern  VTBL_ENTRY _ZTV9S20488C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C18[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C15;
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C20;
extern VTBL_ENTRY _ZTI9S20488C20[];
extern  VTBL_ENTRY _ZTV9S20488C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C20[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C21;
extern VTBL_ENTRY _ZTI9S20488C21[];
extern  VTBL_ENTRY _ZTV9S20488C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C21[];
extern Class_Descriptor cd_S20488C19;
extern VTBL_ENTRY _ZTI9S20488C19[];
extern  VTBL_ENTRY _ZTV9S20488C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C19[];
static Base_Class bases_S20488C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C9_nt,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(76,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_S20489C8,    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_S20488C13,    ABISELECT(64,44), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(92,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, 1},
  {&cd_S20488C6,    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
    11, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20488C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20488C12,    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
    13, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(104,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
    2, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(116,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_S20488C15,    ABISELECT(104,64), //bcp->offset
    30, //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
    3, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20488C16,    ABISELECT(16,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    28, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    26, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(44,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
    28, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20488C3,    ABISELECT(32,20), //bcp->offset
    19, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S20488C11,    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
    17, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20488C18,    ABISELECT(48,32), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_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
    -1, //immediately_derived
  1, 0},
  {&cd_S20488C6,    ABISELECT(120,76), //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
    6, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(132,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_S20488C15,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(136,88), //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
    8, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S20488C20,    ABISELECT(136,88), //bcp->offset
    46, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S662C14,    ABISELECT(152,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
    39, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(160,100), //bcp->offset
    59, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    37, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    39, //immediately_derived
  0, 1},
  {&cd_S20488C21,    ABISELECT(152,96), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S20488C19,    ABISELECT(120,76), //bcp->offset
    34, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20488C9[];
extern void _ZN8S20488C9D1Ev();
extern void _ZN8S20488C9D0Ev();
extern void ABISELECT(_ZTv0_n72_N8S20488C9D1Ev,_ZTv0_n36_N8S20488C9D1Ev)();
extern void ABISELECT(_ZThn120_N8S20488C9D1Ev,_ZThn76_N8S20488C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20488C9D0Ev,_ZTv0_n36_N8S20488C9D0Ev)();
extern void ABISELECT(_ZThn120_N8S20488C9D0Ev,_ZThn76_N8S20488C9D0Ev)() __attribute__((weak));
extern void _ZN9S20488C202v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20488C9D1Ev,_ZTv0_n24_N8S20488C9D1Ev)();
extern void ABISELECT(_ZThn152_N8S20488C9D1Ev,_ZThn96_N8S20488C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20488C9D0Ev,_ZTv0_n24_N8S20488C9D0Ev)();
extern void ABISELECT(_ZThn152_N8S20488C9D0Ev,_ZThn96_N8S20488C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20488C9[] = {
  ABISELECT(160,100),
  ABISELECT(152,96),
  ABISELECT(120,76),
  ABISELECT(60,40),
  0,
  ABISELECT(120,76),
  ABISELECT(104,64),
  0,
  ABISELECT(64,44),
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(92,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&_ZN8S20488C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20488C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(60,40),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  ABISELECT(16,12),
  ABISELECT(-120,-76),
  ABISELECT(-120,-76),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  0,
  ABISELECT(-28,-16),
  ABISELECT(-120,-76),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20488C9D1Ev,_ZTv0_n36_N8S20488C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20488C9D0Ev,_ZTv0_n36_N8S20488C9D0Ev),
  ABISELECT(-40,-28),
  ABISELECT(-44,-28),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
  ABISELECT(-152,-96),
  ABISELECT(-152,-96),
  ABISELECT(-60,-36),
  ABISELECT(8,4),
  ABISELECT(-152,-96),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20488C9D1Ev,_ZTv0_n24_N8S20488C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20488C9D0Ev,_ZTv0_n24_N8S20488C9D0Ev),
  ABISELECT(-68,-40),
  ABISELECT(-160,-100),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
extern VTBL_ENTRY _ZTV8S20488C9[];
extern void _ZN9S20488C11D1Ev();
extern void _ZN9S20488C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C11__8S20488C9[] = {
  0,
  ABISELECT(120,76),
  ABISELECT(104,64),
  0,
  ABISELECT(64,44),
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(92,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
  (VTBL_ENTRY)&_ZN9S20488C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C11D0Ev,
};
extern void _ZN9S20488C12D1Ev();
extern void _ZN9S20488C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C129S20488C11__8S20488C9[] = {
  0,
  ABISELECT(64,44),
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(92,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
  (VTBL_ENTRY)&_ZN9S20488C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C39S20488C129S20488C11__8S20488C9[] = {
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(92,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C39S20488C129S20488C11__8S20488C9[] = {
  ABISELECT(92,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C129S20488C11__8S20488C9[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C169S20488C11__8S20488C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C39S20488C11__A1__8S20488C9[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(60,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C39S20488C11__A2__8S20488C9[] = {
  ABISELECT(60,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C11__8S20488C9[] = {
  ABISELECT(-64,-44),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C15__9S20488C11__8S20488C9[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C16__9S20488C11__8S20488C9[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C3__A1__9S20488C11__8S20488C9[] = {
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(60,40),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C18__8S20488C9[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__8S20488C9[] = {
  ABISELECT(-64,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C15__8S20488C9[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C15__A1__8S20488C9[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C19D1Ev();
extern void _ZN9S20488C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C19__8S20488C9[] = {
  ABISELECT(-120,-76),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-24,-16),
  0,
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&_ZN9S20488C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20488C159S20488C19__A1__8S20488C9[] = {
  0,
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C159S20488C19__A3__8S20488C9[] = {
  ABISELECT(-28,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C209S20488C19__8S20488C9[] = {
  ABISELECT(-40,-28),
  ABISELECT(-44,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C20[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C209S20488C19__A4__8S20488C9[] = {
  ABISELECT(-44,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C20__9S20488C19__8S20488C9[] = {
  ABISELECT(-40,-28),
  ABISELECT(-44,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20488C19D1Ev,_ZThn20_N9S20488C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20488C19D0Ev,_ZThn20_N9S20488C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20488C21__9S20488C19__8S20488C9[] = {
  ABISELECT(-32,-20),
  ABISELECT(-152,-96),
  ABISELECT(-60,-36),
  ABISELECT(8,4),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__A2__9S20488C19__8S20488C9[] = {
  ABISELECT(-68,-40),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
};
extern void _ZN9S20488C21D1Ev();
extern void _ZN9S20488C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C21__8S20488C9[] = {
  ABISELECT(-152,-96),
  ABISELECT(-60,-36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
  (VTBL_ENTRY)&_ZN9S20488C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__9S20488C21__8S20488C9[] = {
  ABISELECT(-68,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__A5__8S20488C9[] = {
  ABISELECT(-68,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C9[] = {
  {&(_ZTV8S20488C9[14]),  14,62},
  {&(_tg__ZTV9S20488C11__8S20488C9[10]),  10,12},
  {&(_tg__ZTV9S20488C129S20488C11__8S20488C9[7]),  7,9},
  {&(_tg__ZTV8S20488C39S20488C129S20488C11__8S20488C9[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C39S20488C129S20488C11__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C13__9S20488C129S20488C11__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C169S20488C11__8S20488C9[3]),  3,3},
  {&(_tg__ZTV8S20488C39S20488C11__A1__8S20488C9[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C39S20488C11__A2__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C13__9S20488C11__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C15__9S20488C11__8S20488C9[4]),  4,4},
  {&(_tg__ZTV9S20488C16__9S20488C11__8S20488C9[3]),  3,3},
  {&(_tg__ZTV8S20488C3__A1__9S20488C11__8S20488C9[5]),  5,5},
  {&(_tg__ZTV9S20488C18__8S20488C9[3]),  3,3},
  {&(_ZTV8S20488C9[30]),  30,62},
  {&(_ZTV8S20488C9[34]),  34,62},
  {&(_ZTV8S20488C9[19]),  19,62},
  {&(_ZTV8S20488C9[24]),  24,62},
  {&(_ZTV8S20488C9[27]),  27,62},
  {&(_ZTV8S20488C9[44]),  44,62},
  {&(_ZTV8S20488C9[50]),  50,62},
  {&(_ZTV8S20488C9[57]),  57,62},
  {&(_ZTV8S20488C9[62]),  62,62},
  {&(_tg__ZTV9S20488C13__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C15__8S20488C9[4]),  4,4},
  {&(_tg__ZTV8S20488C69S20488C15__A1__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C19__8S20488C9[8]),  8,10},
  {&(_tg__ZTV9S20488C159S20488C19__A1__8S20488C9[4]),  4,4},
  {&(_tg__ZTV8S20488C69S20488C159S20488C19__A3__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C209S20488C19__8S20488C9[4]),  4,5},
  {&(_tg__ZTV8S20488C69S20488C209S20488C19__A4__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C20__9S20488C19__8S20488C9[4]),  4,5},
  {&(_tg__ZTV9S20488C21__9S20488C19__8S20488C9[6]),  6,8},
  {&(_tg__ZTV8S20488C6__A2__9S20488C19__8S20488C9[3]),  3,3},
  {&(_tg__ZTV9S20488C21__8S20488C9[5]),  5,7},
  {&(_tg__ZTV8S20488C6__9S20488C21__8S20488C9[3]),  3,3},
  {&(_tg__ZTV8S20488C6__A5__8S20488C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20488C9[];
extern  VTBL_ENTRY _ZTV8S20488C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C9[];
static VTBL_ENTRY alt_thunk_names80[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20488C19D0Ev,_ZThn20_N9S20488C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20488C19D1Ev,_ZThn20_N9S20488C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20488C9D0Ev,_ZTv0_n24_N8S20488C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20488C9D0Ev,_ZThn96_N8S20488C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20488C9D1Ev,_ZTv0_n24_N8S20488C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn152_N8S20488C9D1Ev,_ZThn96_N8S20488C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20488C9D0Ev,_ZTv0_n36_N8S20488C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20488C9D0Ev,_ZThn76_N8S20488C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20488C9D1Ev,_ZTv0_n36_N8S20488C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S20488C9D1Ev,_ZThn76_N8S20488C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20488C9 = {  "S20488C9", // class name
  bases_S20488C9, 41,
  &(vtc_S20488C9[0]), // expected_vtbl_contents
  &(vtt_S20488C9[0]), // expected_vtt_contents
  ABISELECT(176,108), // object size
  NSPAIRA(_ZTI8S20488C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20488C9),62, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20488C9),37, //virtual table table var
  18, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names80,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20488C1  : virtual S20488C2 , virtual S20488C9 , S20488C18 {
  ::S10296C15_nt s20488c1f0;
  virtual  ~S20488C1(); // _ZN8S20488C1D2Ev
  S20488C1(); // tgen
};
//SIG(1 S20488C1) C1{ VBC2{ VBC3{ BC4{ m} BC5{ BC4} BC6{ VBC4 Fi} VBC7{ m Fi} VBC8{ m Fi:0 Fp} FC5} Fi} VBC9{ VBC10{ m Fi} BC11{ BC12{ VBC13{ VBC14{ m} BC4 BC7 BC5 BC8} VBC7 BC3 vd Fs} VBC15{ VBC4 BC6 VBC5 BC7} BC16{ VBC17{ m} Fl} BC3} BC18{ VBC17} BC7 VBC19{ BC15 VBC8 BC20{ VBC8 VBC4 BC6 v1} VBC21{ BC22{ m} VBC6 VBC14 vd}}} BC18 vd FC23{}}


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

static void Test_S20488C1()
{
  extern Class_Descriptor cd_S20488C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(29,35)];
    init_test(&cd_S20488C1, buf);
    S20488C1 *dp, &lv = *(dp=new (buf) S20488C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,136), "sizeof(S20488C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20488C1)");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*), ABISELECT(32,16), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*), ABISELECT(44,24), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C5*)(S20488C3*), ABISELECT(44,24), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*), 0, "S20488C1");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), 0, "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C15*), 0, "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C15 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C15*), 0, "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C3*)(S20488C11*)(S20488C9*), 0, "S20488C1");
    /*is_ambiguous_... S20488C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C15*)(S20488C19*), 0, "S20488C1");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C15*)(S20488C19*), 0, "S20488C1");
    check_base_class_offset(lv, (S9624C48*)(S20488C20*)(S20488C19*), 0, "S20488C1");
    check_base_class_offset(lv, (S9624C48*)(S20488C6*)(S20488C20*)(S20488C19*), 0, "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C6*), 0, "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C6*)(S20488C3*), ABISELECT(32,16), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*), ABISELECT(48,28), "S20488C1");
    /*is_ambiguous_... S20488C12::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(48,28), "S20488C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(48,28), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(48,28), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20488C3*), ABISELECT(56,32), "S20488C1");
    check_base_class_offset(lv, (S20489C8*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(56,32), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(56,32), "S20488C1");
    check_base_class_offset(lv, (S20489C8*)(S20488C19*), ABISELECT(56,32), "S20488C1");
    check_base_class_offset(lv, (S20489C8*)(S20488C20*)(S20488C19*), ABISELECT(56,32), "S20488C1");
    check_base_class_offset(lv, (S20488C3*)(S20488C2*), ABISELECT(32,16), "S20488C1");
    check_base_class_offset(lv, (S20488C2*), ABISELECT(16,8), "S20488C1");
    check_base_class_offset(lv, (S1540C9_nt*)(S20488C9*), ABISELECT(124,76), "S20488C1");
    check_base_class_offset(lv, (S9624C39*)(S20488C13*), 0, "S20488C1");
    check_base_class_offset(lv, (S9624C39*)(S20488C21*), 0, "S20488C1");
    /*is_ambiguous_... S20488C13::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C13*), ABISELECT(128,80), "S20488C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C13*), ABISELECT(136,84), "S20488C1");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C13*), ABISELECT(140,88), "S20488C1");
    check_base_class_offset(lv, (S20488C5*)(S20488C13*), ABISELECT(140,88), "S20488C1");
    check_base_class_offset(lv, (S20489C8*)(S20488C13*), ABISELECT(144,88), "S20488C1");
    check_base_class_offset(lv, (S20488C13*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(128,80), "S20488C1");
    /*is_ambiguous_... S20488C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(64,36), "S20488C1");
    check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(76,44), "S20488C1");
    check_base_class_offset(lv, (S20488C5*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(76,44), "S20488C1");
    check_base_class_offset(lv, (S20488C6*)(S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(64,36), "S20488C1");
    check_base_class_offset(lv, (S20488C3*)(S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(64,36), "S20488C1");
    check_base_class_offset(lv, (S20488C12*)(S20488C11*)(S20488C9*), ABISELECT(64,36), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C15 */ AMB_check_base_class_offset(lv, (S20488C6*)(S20488C15*), ABISELECT(152,92), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*), ABISELECT(168,104), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C15 */ AMB_check_base_class_offset(lv, (S20488C5*)(S20488C15*), ABISELECT(168,104), "S20488C1");
    check_base_class_offset(lv, (S20488C5*)(S20488C15*)(S20488C19*), ABISELECT(168,104), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C15 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C15*), ABISELECT(164,100), "S20488C1");
    check_base_class_offset(lv, (S20488C15*)(S20488C11*)(S20488C9*), ABISELECT(152,92), "S20488C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20488C16*)(S20488C11*)(S20488C9*), 0, "S20488C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20488C18*)(S20488C9*), 0, "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C18 */ AMB_check_base_class_offset(lv, (S9624C19_nt*)(S20488C18*), 0, "S20488C1");
    check_base_class_offset(lv, (S20488C16*)(S20488C11*)(S20488C9*), ABISELECT(80,48), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(96,56), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20488C5*)(S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(108,64), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C5*)(S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(108,64), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C6*)(S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(96,56), "S20488C1");
    /*is_ambiguous_... S20488C11::S20488C3 */ AMB_check_base_class_offset(lv, (S20488C3*)(S20488C11*)(S20488C9*), ABISELECT(96,56), "S20488C1");
    check_base_class_offset(lv, (S20488C11*)(S20488C9*), ABISELECT(64,36), "S20488C1");
    check_base_class_offset(lv, (S20488C18*)(S20488C9*), ABISELECT(112,68), "S20488C1");
    /*is_ambiguous_... S20488C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20488C9*), ABISELECT(120,72), "S20488C1");
    check_base_class_offset(lv, (S20488C6*)(S20488C15*)(S20488C19*), ABISELECT(168,104), "S20488C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20488C15*)(S20488C19*), ABISELECT(180,112), "S20488C1");
    check_base_class_offset(lv, (S20488C15*)(S20488C19*), ABISELECT(168,104), "S20488C1");
    check_base_class_offset(lv, (S20488C6*)(S20488C20*)(S20488C19*), ABISELECT(184,116), "S20488C1");
    check_base_class_offset(lv, (S20488C20*)(S20488C19*), ABISELECT(184,116), "S20488C1");
    check_base_class_offset(lv, (S662C14*)(S20488C21*), ABISELECT(200,124), "S20488C1");
    check_base_class_offset(lv, (S20488C6*)(S20488C21*), ABISELECT(208,128), "S20488C1");
    check_base_class_offset(lv, (S20488C21*)(S20488C19*), ABISELECT(200,124), "S20488C1");
    check_base_class_offset(lv, (S20488C19*)(S20488C9*), ABISELECT(168,104), "S20488C1");
    check_base_class_offset(lv, (S20488C9*), ABISELECT(64,36), "S20488C1");
    /*is_ambiguous_... S20488C1::S20488C18 */ AMB_check_base_class_offset(lv, (S20488C18*), 0, "S20488C1");
    check_field_offset(lv, s20488c1f0, ABISELECT(8,4), "S20488C1.s20488c1f0");
    test_class_info(&lv, &cd_S20488C1);
    dp->~S20488C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20488C1(Test_S20488C1, "S20488C1", ABISELECT(224,136));

#else // __cplusplus

extern void _ZN8S20488C1C1Ev();
extern void _ZN8S20488C1D2Ev();
Name_Map name_map_S20488C1[] = {
  NSPAIR(_ZN8S20488C1C1Ev),
  NSPAIR(_ZN8S20488C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
extern Class_Descriptor cd_S20488C2;
extern VTBL_ENTRY _ZTI8S20488C2[];
extern  VTBL_ENTRY _ZTV8S20488C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C2[];
extern Class_Descriptor cd_S1540C9_nt;
extern VTBL_ENTRY _ZTI10S1540C9_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20488C13;
extern VTBL_ENTRY _ZTI9S20488C13[];
extern  VTBL_ENTRY _ZTV9S20488C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
extern Class_Descriptor cd_S20488C12;
extern VTBL_ENTRY _ZTI9S20488C12[];
extern  VTBL_ENTRY _ZTV9S20488C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C12[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C15;
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20488C16;
extern VTBL_ENTRY _ZTI9S20488C16[];
extern  VTBL_ENTRY _ZTV9S20488C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C16[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20488C5;
extern VTBL_ENTRY _ZTI8S20488C5[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C3;
extern VTBL_ENTRY _ZTI8S20488C3[];
extern  VTBL_ENTRY _ZTV8S20488C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C3[];
extern Class_Descriptor cd_S20488C11;
extern VTBL_ENTRY _ZTI9S20488C11[];
extern  VTBL_ENTRY _ZTV9S20488C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C11[];
extern Class_Descriptor cd_S20488C18;
extern VTBL_ENTRY _ZTI9S20488C18[];
extern  VTBL_ENTRY _ZTV9S20488C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C18[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20488C15;
extern VTBL_ENTRY _ZTI9S20488C15[];
extern  VTBL_ENTRY _ZTV9S20488C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C15[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C20;
extern VTBL_ENTRY _ZTI9S20488C20[];
extern  VTBL_ENTRY _ZTV9S20488C20[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C20[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S20488C6;
extern VTBL_ENTRY _ZTI8S20488C6[];
extern  VTBL_ENTRY _ZTV8S20488C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C6[];
extern Class_Descriptor cd_S20488C21;
extern VTBL_ENTRY _ZTI9S20488C21[];
extern  VTBL_ENTRY _ZTV9S20488C21[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C21[];
extern Class_Descriptor cd_S20488C19;
extern VTBL_ENTRY _ZTI9S20488C19[];
extern  VTBL_ENTRY _ZTV9S20488C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C19[];
extern Class_Descriptor cd_S20488C9;
extern VTBL_ENTRY _ZTI8S20488C9[];
extern  VTBL_ENTRY _ZTV8S20488C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C9[];
extern Class_Descriptor cd_S20488C18;
extern VTBL_ENTRY _ZTI9S20488C18[];
extern  VTBL_ENTRY _ZTV9S20488C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20488C18[];
static Base_Class bases_S20488C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20488C5,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20488C6,    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
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20488C3,    ABISELECT(32,16), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20488C2,    ABISELECT(16,8), //bcp->offset
    19, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S1540C9_nt,    ABISELECT(124,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(136,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(140,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
    14, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(140,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
    16, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20488C13,    ABISELECT(128,80), //bcp->offset
    58, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    42, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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
    21, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(76,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
    21, //immediately_derived
  0, 0},
  {&cd_S20488C6,    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
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S20488C3,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20488C12,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(152,92), //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
    27, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(168,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
    25, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(168,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
    27, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(164,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
    27, //immediately_derived
  0, 0},
  {&cd_S20488C15,    ABISELECT(152,92), //bcp->offset
    61, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    43, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    35, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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, 1},
  {&cd_S20488C16,    ABISELECT(80,48), //bcp->offset
    47, //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
    17, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    34, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(108,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
    32, //immediately_derived
  0, 0},
  {&cd_S20488C5,    ABISELECT(108,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
    34, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(96,56), //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
    18, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S20488C3,    ABISELECT(96,56), //bcp->offset
    50, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    35, //immediately_derived
  0, 0},
  {&cd_S20488C11,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20488C18,    ABISELECT(112,68), //bcp->offset
    55, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    21, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    47, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(168,104), //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
    9, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(180,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
    40, //immediately_derived
  0, 0},
  {&cd_S20488C15,    ABISELECT(168,104), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    46, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(184,116), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    49, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    42, //immediately_derived
  0, 0},
  {&cd_S20488C20,    ABISELECT(184,116), //bcp->offset
    77, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    46, //immediately_derived
  0, 0},
  {&cd_S662C14,    ABISELECT(200,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
    45, //immediately_derived
  0, 0},
  {&cd_S20488C6,    ABISELECT(208,128), //bcp->offset
    90, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    45, //immediately_derived
  0, 1},
  {&cd_S20488C21,    ABISELECT(200,124), //bcp->offset
    82, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    53, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    46, //immediately_derived
  0, 1},
  {&cd_S20488C19,    ABISELECT(168,104), //bcp->offset
    65, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    47, //immediately_derived
  0, 1},
  {&cd_S20488C9,    ABISELECT(64,36), //bcp->offset
    30, //bcp->virtual_function_table_offset
    15, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20488C18,    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
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20488C1[];
extern void _ZN8S20488C1D1Ev();
extern void _ZN8S20488C1D0Ev();
extern void ABISELECT(_ZTv0_n120_N8S20488C1D1Ev,_ZTv0_n60_N8S20488C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20488C1D1Ev,_ZThn36_N8S20488C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n120_N8S20488C1D0Ev,_ZTv0_n60_N8S20488C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20488C1D0Ev,_ZThn36_N8S20488C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20488C1D1Ev,_ZTv0_n36_N8S20488C1D1Ev)();
extern void ABISELECT(_ZThn168_N8S20488C1D1Ev,_ZThn104_N8S20488C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20488C1D0Ev,_ZTv0_n36_N8S20488C1D0Ev)();
extern void ABISELECT(_ZThn168_N8S20488C1D0Ev,_ZThn104_N8S20488C1D0Ev)() __attribute__((weak));
extern void _ZN9S20488C202v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20488C1D1Ev,_ZTv0_n24_N8S20488C1D1Ev)();
extern void ABISELECT(_ZThn200_N8S20488C1D1Ev,_ZThn124_N8S20488C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20488C1D0Ev,_ZTv0_n24_N8S20488C1D0Ev)();
extern void ABISELECT(_ZThn200_N8S20488C1D0Ev,_ZThn124_N8S20488C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20488C1[] = {
  ABISELECT(208,128),
  ABISELECT(200,124),
  ABISELECT(168,104),
  ABISELECT(168,104),
  ABISELECT(152,92),
  0,
  ABISELECT(128,80),
  ABISELECT(124,76),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(48,28),
  0,
  ABISELECT(32,16),
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  (VTBL_ENTRY)&_ZN8S20488C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20488C1D0Ev,
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(-64,-36),
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(104,68),
  ABISELECT(60,40),
  ABISELECT(-64,-36),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-64,-36),
  ABISELECT(64,44),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20488C1D1Ev,_ZTv0_n60_N8S20488C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n120_N8S20488C1D0Ev,_ZTv0_n60_N8S20488C1D0Ev),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(-40,-24),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(16,12),
  ABISELECT(-152,-92),
  ABISELECT(-152,-92),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  ABISELECT(16,12),
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-112,-72),
  0,
  ABISELECT(-168,-104),
  ABISELECT(-168,-104),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20488C1D1Ev,_ZTv0_n36_N8S20488C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20488C1D0Ev,_ZTv0_n36_N8S20488C1D0Ev),
  ABISELECT(-128,-84),
  ABISELECT(-184,-116),
  ABISELECT(-184,-116),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(8,4),
  ABISELECT(-200,-124),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20488C1D1Ev,_ZTv0_n24_N8S20488C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20488C1D0Ev,_ZTv0_n24_N8S20488C1D0Ev),
  ABISELECT(-208,-128),
  ABISELECT(-208,-128),
  (VTBL_ENTRY)&(_ZTI8S20488C1[0]),
};
extern VTBL_ENTRY _ZTV8S20488C1[];
static  VTBL_ENTRY _tg__ZTV9S20488C18__A1__8S20488C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C18[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C2__8S20488C1[] = {
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C3__8S20488C2__8S20488C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20488C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C3__8S20488C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C3__8S20488C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN8S20488C9D1Ev();
extern void _ZN8S20488C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20488C9__8S20488C1[] = {
  ABISELECT(144,92),
  ABISELECT(136,88),
  ABISELECT(104,68),
  ABISELECT(60,40),
  ABISELECT(-64,-36),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-64,-36),
  ABISELECT(64,44),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&_ZN8S20488C9D1Ev,
  (VTBL_ENTRY)&_ZN8S20488C9D0Ev,
};
extern void _ZN9S20488C11D1Ev();
extern void _ZN9S20488C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-64,-36),
  ABISELECT(64,44),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
  (VTBL_ENTRY)&_ZN9S20488C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C11D0Ev,
};
extern void _ZN9S20488C12D1Ev();
extern void _ZN9S20488C12D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C129S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(64,44),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
  (VTBL_ENTRY)&_ZN9S20488C12D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C12D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C39S20488C129S20488C118S20488C9__A1__8S20488C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C39S20488C129S20488C118S20488C9__A1__8S20488C1[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C129S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20488C12[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C169S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C16[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C39S20488C118S20488C9__A2__8S20488C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C3[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C68S20488C39S20488C118S20488C9__A3__8S20488C1[] = {
  ABISELECT(-96,-56),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__9S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C15__9S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(16,12),
  ABISELECT(-152,-92),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C16__9S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C3__A1__9S20488C118S20488C9__8S20488C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20488C11[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C188S20488C9__8S20488C1[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C18[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__8S20488C9__8S20488C1[] = {
  ABISELECT(-128,-80),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C15__8S20488C9__8S20488C1[] = {
  ABISELECT(16,12),
  ABISELECT(-152,-92),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C169S20488C11__8S20488C9__8S20488C1[] = {
  ABISELECT(-80,-48),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C39S20488C11__A1__8S20488C9__8S20488C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(-48,-28),
  ABISELECT(-96,-56),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C18__8S20488C9__8S20488C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
extern void ABISELECT(_ZTv0_n72_N8S20488C9D1Ev,_ZTv0_n36_N8S20488C9D1Ev)();
extern void ABISELECT(_ZThn104_N8S20488C9D1Ev,_ZThn68_N8S20488C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S20488C9D0Ev,_ZTv0_n36_N8S20488C9D0Ev)();
extern void ABISELECT(_ZThn104_N8S20488C9D0Ev,_ZThn68_N8S20488C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20488C19__8S20488C9__8S20488C1[] = {
  ABISELECT(16,12),
  ABISELECT(-104,-68),
  ABISELECT(-168,-104),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-112,-72),
  0,
  ABISELECT(-168,-104),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20488C9D1Ev,_ZTv0_n36_N8S20488C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S20488C9D0Ev,_ZTv0_n36_N8S20488C9D0Ev),
};
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C209S20488C19__8S20488C9__8S20488C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-184,-116),
  ABISELECT(-120,-80),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S20488C9D1Ev,_ZTv0_n24_N8S20488C9D1Ev)();
extern void ABISELECT(_ZThn136_N8S20488C9D1Ev,_ZThn88_N8S20488C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20488C9D0Ev,_ZTv0_n24_N8S20488C9D0Ev)();
extern void ABISELECT(_ZThn136_N8S20488C9D0Ev,_ZThn88_N8S20488C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20488C21__8S20488C9__8S20488C1[] = {
  ABISELECT(-136,-88),
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(8,4),
  ABISELECT(-136,-88),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20488C9D1Ev,_ZTv0_n24_N8S20488C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20488C9D0Ev,_ZTv0_n24_N8S20488C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__A5__8S20488C9__8S20488C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI8S20488C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C13__8S20488C1[] = {
  ABISELECT(-128,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20488C15__8S20488C1[] = {
  ABISELECT(16,12),
  ABISELECT(-152,-92),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C15__A2__8S20488C1[] = {
  ABISELECT(-152,-92),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C19D1Ev();
extern void _ZN9S20488C19D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C19__8S20488C1[] = {
  ABISELECT(-168,-104),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(-112,-72),
  0,
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&_ZN9S20488C19D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C19D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20488C159S20488C19__A1__8S20488C1[] = {
  0,
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C15[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C159S20488C19__A4__8S20488C1[] = {
  ABISELECT(-168,-104),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C209S20488C19__8S20488C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-184,-116),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C20[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C69S20488C209S20488C19__A5__8S20488C1[] = {
  ABISELECT(-184,-116),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
extern void _ZN9S20488C202v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C20__9S20488C19__8S20488C1[] = {
  ABISELECT(-128,-84),
  ABISELECT(-184,-116),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&_ZN9S20488C202v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev)();
extern void ABISELECT(_ZThn32_N9S20488C19D1Ev,_ZThn20_N9S20488C19D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev)();
extern void ABISELECT(_ZThn32_N9S20488C19D0Ev,_ZThn20_N9S20488C19D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20488C21__9S20488C19__8S20488C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(8,4),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__A2__9S20488C19__8S20488C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20488C19[0]),
};
extern void _ZN9S20488C21D1Ev();
extern void _ZN9S20488C21D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20488C21__8S20488C1[] = {
  ABISELECT(-200,-124),
  ABISELECT(-200,-124),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
  (VTBL_ENTRY)&_ZN9S20488C21D1Ev,
  (VTBL_ENTRY)&_ZN9S20488C21D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__9S20488C21__8S20488C1[] = {
  ABISELECT(-208,-128),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20488C21[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20488C6__A6__8S20488C1[] = {
  ABISELECT(-208,-128),
  0,
  (VTBL_ENTRY)&(_ZTI8S20488C6[0]),
};
static  VTT_ENTRY vtt_S20488C1[] = {
  {&(_ZTV8S20488C1[17]),  17,93},
  {&(_tg__ZTV9S20488C18__A1__8S20488C1[3]),  3,3},
  {&(_ZTV8S20488C1[25]),  25,93},
  {&(_ZTV8S20488C1[30]),  30,93},
  {&(_ZTV8S20488C1[45]),  45,93},
  {&(_ZTV8S20488C1[61]),  61,93},
  {&(_ZTV8S20488C1[65]),  65,93},
  {&(_ZTV8S20488C1[50]),  50,93},
  {&(_ZTV8S20488C1[55]),  55,93},
  {&(_ZTV8S20488C1[58]),  58,93},
  {&(_ZTV8S20488C1[75]),  75,93},
  {&(_ZTV8S20488C1[81]),  81,93},
  {&(_ZTV8S20488C1[88]),  88,93},
  {&(_ZTV8S20488C1[93]),  93,93},
  {&(_tg__ZTV8S20488C2__8S20488C1[6]),  6,6},
  {&(_tg__ZTV8S20488C3__8S20488C2__8S20488C1[5]),  5,5},
  {&(_tg__ZTV8S20488C3__8S20488C1[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C3__8S20488C1[3]),  3,3},
  {&(_tg__ZTV8S20488C9__8S20488C1[14]),  14,16},
  {&(_tg__ZTV9S20488C118S20488C9__8S20488C1[10]),  10,12},
  {&(_tg__ZTV9S20488C129S20488C118S20488C9__8S20488C1[7]),  7,9},
  {&(_tg__ZTV8S20488C39S20488C129S20488C118S20488C9__A1__8S20488C1[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C39S20488C129S20488C118S20488C9__A1__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C13__9S20488C129S20488C118S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C169S20488C118S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV8S20488C39S20488C118S20488C9__A2__8S20488C1[5]),  5,5},
  {&(_tg__ZTV8S20488C68S20488C39S20488C118S20488C9__A3__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C13__9S20488C118S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C15__9S20488C118S20488C9__8S20488C1[4]),  4,4},
  {&(_tg__ZTV9S20488C16__9S20488C118S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV8S20488C3__A1__9S20488C118S20488C9__8S20488C1[5]),  5,5},
  {&(_tg__ZTV9S20488C188S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C13__8S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C15__8S20488C9__8S20488C1[4]),  4,4},
  {&(_tg__ZTV9S20488C169S20488C11__8S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV8S20488C39S20488C11__A1__8S20488C9__8S20488C1[5]),  5,5},
  {&(_tg__ZTV9S20488C18__8S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C19__8S20488C9__8S20488C1[10]),  10,12},
  {&(_tg__ZTV9S20488C209S20488C19__8S20488C9__8S20488C1[4]),  4,5},
  {&(_tg__ZTV9S20488C21__8S20488C9__8S20488C1[6]),  6,8},
  {&(_tg__ZTV8S20488C6__A5__8S20488C9__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C13__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C15__8S20488C1[4]),  4,4},
  {&(_tg__ZTV8S20488C69S20488C15__A2__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C19__8S20488C1[8]),  8,10},
  {&(_tg__ZTV9S20488C159S20488C19__A1__8S20488C1[4]),  4,4},
  {&(_tg__ZTV8S20488C69S20488C159S20488C19__A4__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C209S20488C19__8S20488C1[4]),  4,5},
  {&(_tg__ZTV8S20488C69S20488C209S20488C19__A5__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C20__9S20488C19__8S20488C1[4]),  4,5},
  {&(_tg__ZTV9S20488C21__9S20488C19__8S20488C1[6]),  6,8},
  {&(_tg__ZTV8S20488C6__A2__9S20488C19__8S20488C1[3]),  3,3},
  {&(_tg__ZTV9S20488C21__8S20488C1[5]),  5,7},
  {&(_tg__ZTV8S20488C6__9S20488C21__8S20488C1[3]),  3,3},
  {&(_tg__ZTV8S20488C6__A6__8S20488C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20488C1[];
extern  VTBL_ENTRY _ZTV8S20488C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20488C1[];
static VTBL_ENTRY alt_thunk_names81[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20488C19D0Ev,_ZTv0_n24_N9S20488C19D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20488C19D0Ev,_ZThn20_N9S20488C19D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20488C19D1Ev,_ZTv0_n24_N9S20488C19D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N9S20488C19D1Ev,_ZThn20_N9S20488C19D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20488C9D0Ev,_ZTv0_n24_N8S20488C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20488C9D0Ev,_ZThn88_N8S20488C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20488C9D1Ev,_ZTv0_n24_N8S20488C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S20488C9D1Ev,_ZThn88_N8S20488C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20488C9D0Ev,_ZTv0_n36_N8S20488C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20488C9D0Ev,_ZThn68_N8S20488C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20488C9D1Ev,_ZTv0_n36_N8S20488C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N8S20488C9D1Ev,_ZThn68_N8S20488C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20488C1D0Ev,_ZTv0_n24_N8S20488C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20488C1D0Ev,_ZThn124_N8S20488C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20488C1D1Ev,_ZTv0_n24_N8S20488C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N8S20488C1D1Ev,_ZThn124_N8S20488C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20488C1D0Ev,_ZTv0_n36_N8S20488C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20488C1D0Ev,_ZThn104_N8S20488C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S20488C1D1Ev,_ZTv0_n36_N8S20488C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn168_N8S20488C1D1Ev,_ZThn104_N8S20488C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20488C1D0Ev,_ZTv0_n60_N8S20488C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20488C1D0Ev,_ZThn36_N8S20488C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n120_N8S20488C1D1Ev,_ZTv0_n60_N8S20488C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20488C1D1Ev,_ZThn36_N8S20488C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20488C1 = {  "S20488C1", // class name
  bases_S20488C1, 49,
  &(vtc_S20488C1[0]), // expected_vtbl_contents
  &(vtt_S20488C1[0]), // expected_vtt_contents
  ABISELECT(224,136), // object size
  NSPAIRA(_ZTI8S20488C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20488C1),93, //virtual function table var
  17, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20488C1),55, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names81,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2140C4  {
  virtual  ~S2140C4(); // _ZN7S2140C4D1Ev
  virtual void  v24(); // _ZN7S2140C43v24Ev
  S2140C4(); // tgen
};
//SIG(-1 S2140C4) C1{ vd v1}


 S2140C4 ::~S2140C4(){ note_dtor("S2140C4", this);}
void  S2140C4 ::v24(){vfunc_called(this, "_ZN7S2140C43v24Ev");}
S2140C4 ::S2140C4(){ note_ctor("S2140C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S2140C4C1Ev();
extern void _ZN7S2140C4D1Ev();
Name_Map name_map_S2140C4[] = {
  NSPAIR(_ZN7S2140C4C1Ev),
  NSPAIR(_ZN7S2140C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2140C4[];
extern void _ZN7S2140C4D1Ev();
extern void _ZN7S2140C4D0Ev();
extern void _ZN7S2140C43v24Ev();
static  VTBL_ENTRY vtc_S2140C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2140C4[0]),
  (VTBL_ENTRY)&_ZN7S2140C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2140C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2140C43v24Ev,
};
extern VTBL_ENTRY _ZTI7S2140C4[];
extern  VTBL_ENTRY _ZTV7S2140C4[];
Class_Descriptor cd_S2140C4 = {  "S2140C4", // class name
  0,0,//no base classes
  &(vtc_S2140C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2140C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2140C4),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  S2140C3_nt  : S2140C4 {
  void *s2140c3f0;
  virtual void  v25(); // _ZN10S2140C3_nt3v25Ev
  virtual void  v26(); // _ZN10S2140C3_nt3v26Ev
  virtual void  v27(); // _ZN10S2140C3_nt3v27Ev
  virtual void  v28(); // _ZN10S2140C3_nt3v28Ev
  virtual void  v29(); // _ZN10S2140C3_nt3v29Ev
  virtual void  v30(); // _ZN10S2140C3_nt3v30Ev
  virtual void  v31(); // _ZN10S2140C3_nt3v31Ev
  ~S2140C3_nt(); // tgen
  S2140C3_nt(); // tgen
};
//SIG(-1 S2140C3_nt) C1{ BC2{ vd v8} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S2140C3_nt ::v25(){vfunc_called(this, "_ZN10S2140C3_nt3v25Ev");}
void  S2140C3_nt ::v26(){vfunc_called(this, "_ZN10S2140C3_nt3v26Ev");}
void  S2140C3_nt ::v27(){vfunc_called(this, "_ZN10S2140C3_nt3v27Ev");}
void  S2140C3_nt ::v28(){vfunc_called(this, "_ZN10S2140C3_nt3v28Ev");}
void  S2140C3_nt ::v29(){vfunc_called(this, "_ZN10S2140C3_nt3v29Ev");}
void  S2140C3_nt ::v30(){vfunc_called(this, "_ZN10S2140C3_nt3v30Ev");}
void  S2140C3_nt ::v31(){vfunc_called(this, "_ZN10S2140C3_nt3v31Ev");}
S2140C3_nt ::~S2140C3_nt(){ note_dtor("S2140C3_nt", this);} // tgen
S2140C3_nt ::S2140C3_nt(){ note_ctor("S2140C3_nt", this);} // tgen

//skip512 S2140C3_nt

#else // __cplusplus

extern void _ZN10S2140C3_ntC1Ev();
extern void _ZN10S2140C3_ntD1Ev();
Name_Map name_map_S2140C3_nt[] = {
  NSPAIR(_ZN10S2140C3_ntC1Ev),
  NSPAIR(_ZN10S2140C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2140C4;
extern VTBL_ENTRY _ZTI7S2140C4[];
extern  VTBL_ENTRY _ZTV7S2140C4[];
static Base_Class bases_S2140C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2140C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2140C3_nt[];
extern void _ZN10S2140C3_ntD1Ev();
extern void _ZN10S2140C3_ntD0Ev();
extern void _ZN7S2140C43v24Ev();
extern void _ZN10S2140C3_nt3v25Ev();
extern void _ZN10S2140C3_nt3v26Ev();
extern void _ZN10S2140C3_nt3v27Ev();
extern void _ZN10S2140C3_nt3v28Ev();
extern void _ZN10S2140C3_nt3v29Ev();
extern void _ZN10S2140C3_nt3v30Ev();
extern void _ZN10S2140C3_nt3v31Ev();
static  VTBL_ENTRY vtc_S2140C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2140C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S2140C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S2140C43v24Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v31Ev,
};
extern VTBL_ENTRY _ZTI10S2140C3_nt[];
VTBL_ENTRY *P__ZTI10S2140C3_nt = _ZTI10S2140C3_nt; 
extern  VTBL_ENTRY _ZTV10S2140C3_nt[];
Class_Descriptor cd_S2140C3_nt = {  "S2140C3_nt", // class name
  bases_S2140C3_nt, 1,
  &(vtc_S2140C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S2140C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S2140C3_nt),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  S2140C6_nt  {
  void  mf2140c6(); // _ZN10S2140C6_nt8mf2140c6Ev
  virtual  ~S2140C6_nt(); // _ZN10S2140C6_ntD1Ev
  S2140C6_nt(); // tgen
};
//SIG(-1 S2140C6_nt) C1{ vd m}


void  S2140C6_nt ::mf2140c6(){}
 S2140C6_nt ::~S2140C6_nt(){ note_dtor("S2140C6_nt", this);}
S2140C6_nt ::S2140C6_nt(){ note_ctor("S2140C6_nt", this);} // tgen

//skip512 S2140C6_nt

#else // __cplusplus

extern void _ZN10S2140C6_ntC1Ev();
extern void _ZN10S2140C6_ntD1Ev();
Name_Map name_map_S2140C6_nt[] = {
  NSPAIR(_ZN10S2140C6_ntC1Ev),
  NSPAIR(_ZN10S2140C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S2140C6_nt[];
extern void _ZN10S2140C6_ntD1Ev();
extern void _ZN10S2140C6_ntD0Ev();
static  VTBL_ENTRY vtc_S2140C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2140C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S2140C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2140C6_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S2140C6_nt[];
VTBL_ENTRY *P__ZTI10S2140C6_nt = _ZTI10S2140C6_nt; 
extern  VTBL_ENTRY _ZTV10S2140C6_nt[];
Class_Descriptor cd_S2140C6_nt = {  "S2140C6_nt", // class name
  0,0,//no base classes
  &(vtc_S2140C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S2140C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S2140C6_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  S2140C5_nt  : S2140C6_nt {
  int s2140c5f0;
  virtual  ~S2140C5_nt(); // _ZN10S2140C5_ntD1Ev
  S2140C5_nt(); // tgen
};
//SIG(-1 S2140C5_nt) C1{ BC2{ vd m} vd Fi}


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

//skip512 S2140C5_nt

#else // __cplusplus

extern void _ZN10S2140C5_ntC1Ev();
extern void _ZN10S2140C5_ntD1Ev();
Name_Map name_map_S2140C5_nt[] = {
  NSPAIR(_ZN10S2140C5_ntC1Ev),
  NSPAIR(_ZN10S2140C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2140C6_nt;
extern VTBL_ENTRY _ZTI10S2140C6_nt[];
extern  VTBL_ENTRY _ZTV10S2140C6_nt[];
static Base_Class bases_S2140C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2140C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S2140C5_nt[];
extern void _ZN10S2140C5_ntD1Ev();
extern void _ZN10S2140C5_ntD0Ev();
static  VTBL_ENTRY vtc_S2140C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S2140C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S2140C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S2140C5_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S2140C5_nt[];
VTBL_ENTRY *P__ZTI10S2140C5_nt = _ZTI10S2140C5_nt; 
extern  VTBL_ENTRY _ZTV10S2140C5_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2140C2  : S2140C3_nt {
  short s2140c2f0;
  char s2140c2f1[17];
  ::S2140C5_nt s2140c2f2;
  int s2140c2f3[2];
  virtual  ~S2140C2(); // _ZN7S2140C2D1Ev
  virtual void  v32(); // _ZN7S2140C23v32Ev
  virtual void  v33(); // _ZN7S2140C23v33Ev
  virtual void  v34(); // _ZN7S2140C23v34Ev
  virtual void  v35(); // _ZN7S2140C23v35Ev
  virtual void  v36(); // _ZN7S2140C23v36Ev
  virtual void  v37(); // _ZN7S2140C23v37Ev
  virtual void  v38(); // _ZN7S2140C23v38Ev
  virtual void  v39(); // _ZN7S2140C23v39Ev
  virtual void  v40(); // _ZN7S2140C23v40Ev
  virtual void  v41(); // _ZN7S2140C23v41Ev
  virtual void  v42(); // _ZN7S2140C23v42Ev
  virtual void  v43(); // _ZN7S2140C23v43Ev
  virtual void  v44(); // _ZN7S2140C23v44Ev
  virtual void  v45(); // _ZN7S2140C23v45Ev
  virtual void  v46(); // _ZN7S2140C23v46Ev
  virtual void  v47(); // _ZN7S2140C23v47Ev
  virtual void  v48(); // _ZN7S2140C23v48Ev
  virtual void  v49(); // _ZN7S2140C23v49Ev
  virtual void  v50(); // _ZN7S2140C23v50Ev
  virtual void  v51(); // _ZN7S2140C23v51Ev
  virtual void  v52(); // _ZN7S2140C23v52Ev
  virtual void  v53(); // _ZN7S2140C23v53Ev
  virtual void  v54(); // _ZN7S2140C23v54Ev
  virtual void  v55(); // _ZN7S2140C23v55Ev
  S2140C2(); // tgen
};
//SIG(-1 S2140C2) C1{ BC2{ BC3{ vd v25} v26 v27 v28 v29 v30 v31 v32 Fp} 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 Fs Fc[17] FC4{ BC5{ vd m} vd Fi} Fi[2]}


 S2140C2 ::~S2140C2(){ note_dtor("S2140C2", this);}
void  S2140C2 ::v32(){vfunc_called(this, "_ZN7S2140C23v32Ev");}
void  S2140C2 ::v33(){vfunc_called(this, "_ZN7S2140C23v33Ev");}
void  S2140C2 ::v34(){vfunc_called(this, "_ZN7S2140C23v34Ev");}
void  S2140C2 ::v35(){vfunc_called(this, "_ZN7S2140C23v35Ev");}
void  S2140C2 ::v36(){vfunc_called(this, "_ZN7S2140C23v36Ev");}
void  S2140C2 ::v37(){vfunc_called(this, "_ZN7S2140C23v37Ev");}
void  S2140C2 ::v38(){vfunc_called(this, "_ZN7S2140C23v38Ev");}
void  S2140C2 ::v39(){vfunc_called(this, "_ZN7S2140C23v39Ev");}
void  S2140C2 ::v40(){vfunc_called(this, "_ZN7S2140C23v40Ev");}
void  S2140C2 ::v41(){vfunc_called(this, "_ZN7S2140C23v41Ev");}
void  S2140C2 ::v42(){vfunc_called(this, "_ZN7S2140C23v42Ev");}
void  S2140C2 ::v43(){vfunc_called(this, "_ZN7S2140C23v43Ev");}
void  S2140C2 ::v44(){vfunc_called(this, "_ZN7S2140C23v44Ev");}
void  S2140C2 ::v45(){vfunc_called(this, "_ZN7S2140C23v45Ev");}
void  S2140C2 ::v46(){vfunc_called(this, "_ZN7S2140C23v46Ev");}
void  S2140C2 ::v47(){vfunc_called(this, "_ZN7S2140C23v47Ev");}
void  S2140C2 ::v48(){vfunc_called(this, "_ZN7S2140C23v48Ev");}
void  S2140C2 ::v49(){vfunc_called(this, "_ZN7S2140C23v49Ev");}
void  S2140C2 ::v50(){vfunc_called(this, "_ZN7S2140C23v50Ev");}
void  S2140C2 ::v51(){vfunc_called(this, "_ZN7S2140C23v51Ev");}
void  S2140C2 ::v52(){vfunc_called(this, "_ZN7S2140C23v52Ev");}
void  S2140C2 ::v53(){vfunc_called(this, "_ZN7S2140C23v53Ev");}
void  S2140C2 ::v54(){vfunc_called(this, "_ZN7S2140C23v54Ev");}
void  S2140C2 ::v55(){vfunc_called(this, "_ZN7S2140C23v55Ev");}
S2140C2 ::S2140C2(){ note_ctor("S2140C2", this);} // tgen

static void Test_S2140C2()
{
  extern Class_Descriptor cd_S2140C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2140C2, buf);
    S2140C2 *dp, &lv = *(dp=new (buf) S2140C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2140C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2140C2)");
    check_base_class_offset(lv, (S2140C4*)(S2140C3_nt*), 0, "S2140C2");
    check_base_class_offset(lv, (S2140C3_nt*), 0, "S2140C2");
    check_field_offset(lv, s2140c2f0, ABISELECT(16,8), "S2140C2.s2140c2f0");
    check_field_offset(lv, s2140c2f1, ABISELECT(18,10), "S2140C2.s2140c2f1");
    check_field_offset(lv, s2140c2f2, ABISELECT(40,28), "S2140C2.s2140c2f2");
    check_field_offset(lv, s2140c2f3, ABISELECT(56,36), "S2140C2.s2140c2f3");
    test_class_info(&lv, &cd_S2140C2);
    dp->~S2140C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2140C2(Test_S2140C2, "S2140C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2140C2C1Ev();
extern void _ZN7S2140C2D1Ev();
Name_Map name_map_S2140C2[] = {
  NSPAIR(_ZN7S2140C2C1Ev),
  NSPAIR(_ZN7S2140C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2140C4;
extern VTBL_ENTRY _ZTI7S2140C4[];
extern  VTBL_ENTRY _ZTV7S2140C4[];
extern Class_Descriptor cd_S2140C3_nt;
extern VTBL_ENTRY _ZTI10S2140C3_nt[];
extern  VTBL_ENTRY _ZTV10S2140C3_nt[];
static Base_Class bases_S2140C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2140C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2140C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2140C2[];
extern void _ZN7S2140C2D1Ev();
extern void _ZN7S2140C2D0Ev();
extern void _ZN7S2140C43v24Ev();
extern void _ZN10S2140C3_nt3v25Ev();
extern void _ZN10S2140C3_nt3v26Ev();
extern void _ZN10S2140C3_nt3v27Ev();
extern void _ZN10S2140C3_nt3v28Ev();
extern void _ZN10S2140C3_nt3v29Ev();
extern void _ZN10S2140C3_nt3v30Ev();
extern void _ZN10S2140C3_nt3v31Ev();
extern void _ZN7S2140C23v32Ev();
extern void _ZN7S2140C23v33Ev();
extern void _ZN7S2140C23v34Ev();
extern void _ZN7S2140C23v35Ev();
extern void _ZN7S2140C23v36Ev();
extern void _ZN7S2140C23v37Ev();
extern void _ZN7S2140C23v38Ev();
extern void _ZN7S2140C23v39Ev();
extern void _ZN7S2140C23v40Ev();
extern void _ZN7S2140C23v41Ev();
extern void _ZN7S2140C23v42Ev();
extern void _ZN7S2140C23v43Ev();
extern void _ZN7S2140C23v44Ev();
extern void _ZN7S2140C23v45Ev();
extern void _ZN7S2140C23v46Ev();
extern void _ZN7S2140C23v47Ev();
extern void _ZN7S2140C23v48Ev();
extern void _ZN7S2140C23v49Ev();
extern void _ZN7S2140C23v50Ev();
extern void _ZN7S2140C23v51Ev();
extern void _ZN7S2140C23v52Ev();
extern void _ZN7S2140C23v53Ev();
extern void _ZN7S2140C23v54Ev();
extern void _ZN7S2140C23v55Ev();
static  VTBL_ENTRY vtc_S2140C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2140C2[0]),
  (VTBL_ENTRY)&_ZN7S2140C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2140C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2140C43v24Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v32Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v33Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v34Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v35Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v36Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v37Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v38Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v39Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v40Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v41Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v42Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v43Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v44Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v45Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v46Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v47Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v48Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v49Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v50Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v51Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v52Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v53Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v54Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v55Ev,
};
extern VTBL_ENTRY _ZTI7S2140C2[];
extern  VTBL_ENTRY _ZTV7S2140C2[];
Class_Descriptor cd_S2140C2 = {  "S2140C2", // class name
  bases_S2140C2, 2,
  &(vtc_S2140C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2140C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2140C2),36, //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  S2140C1  : S2140C2 {
  virtual  ~S2140C1(); // _ZN7S2140C1D1Ev
  virtual void  v1(); // _ZN7S2140C12v1Ev
  virtual void  v2(); // _ZN7S2140C12v2Ev
  virtual void  v3(); // _ZN7S2140C12v3Ev
  virtual void  v4(); // _ZN7S2140C12v4Ev
  virtual void  v5(); // _ZN7S2140C12v5Ev
  virtual void  v6(); // _ZN7S2140C12v6Ev
  virtual void  v7(); // _ZN7S2140C12v7Ev
  virtual void  v8(); // _ZN7S2140C12v8Ev
  virtual void  v9(); // _ZN7S2140C12v9Ev
  virtual void  v10(); // _ZN7S2140C13v10Ev
  virtual void  v11(); // _ZN7S2140C13v11Ev
  virtual void  v12(); // _ZN7S2140C13v12Ev
  virtual void  v13(); // _ZN7S2140C13v13Ev
  virtual void  v14(); // _ZN7S2140C13v14Ev
  virtual void  v15(); // _ZN7S2140C13v15Ev
  virtual void  v16(); // _ZN7S2140C13v16Ev
  virtual void  v17(); // _ZN7S2140C13v17Ev
  virtual void  v18(); // _ZN7S2140C13v18Ev
  virtual void  v19(); // _ZN7S2140C13v19Ev
  virtual void  v20(); // _ZN7S2140C13v20Ev
  virtual void  v21(); // _ZN7S2140C13v21Ev
  virtual void  v22(); // _ZN7S2140C13v22Ev
  virtual void  v23(); // _ZN7S2140C13v23Ev
  S2140C1(); // tgen
};
//SIG(1 S2140C1) C1{ BC2{ BC3{ BC4{ vd v24} v25 v26 v27 v28 v29 v30 v31 Fp} vd v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 v52 v53 v54 v55 Fs Fc[17] FC5{ BC6{ vd m} vd Fi} Fi[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}


 S2140C1 ::~S2140C1(){ note_dtor("S2140C1", this);}
void  S2140C1 ::v1(){vfunc_called(this, "_ZN7S2140C12v1Ev");}
void  S2140C1 ::v2(){vfunc_called(this, "_ZN7S2140C12v2Ev");}
void  S2140C1 ::v3(){vfunc_called(this, "_ZN7S2140C12v3Ev");}
void  S2140C1 ::v4(){vfunc_called(this, "_ZN7S2140C12v4Ev");}
void  S2140C1 ::v5(){vfunc_called(this, "_ZN7S2140C12v5Ev");}
void  S2140C1 ::v6(){vfunc_called(this, "_ZN7S2140C12v6Ev");}
void  S2140C1 ::v7(){vfunc_called(this, "_ZN7S2140C12v7Ev");}
void  S2140C1 ::v8(){vfunc_called(this, "_ZN7S2140C12v8Ev");}
void  S2140C1 ::v9(){vfunc_called(this, "_ZN7S2140C12v9Ev");}
void  S2140C1 ::v10(){vfunc_called(this, "_ZN7S2140C13v10Ev");}
void  S2140C1 ::v11(){vfunc_called(this, "_ZN7S2140C13v11Ev");}
void  S2140C1 ::v12(){vfunc_called(this, "_ZN7S2140C13v12Ev");}
void  S2140C1 ::v13(){vfunc_called(this, "_ZN7S2140C13v13Ev");}
void  S2140C1 ::v14(){vfunc_called(this, "_ZN7S2140C13v14Ev");}
void  S2140C1 ::v15(){vfunc_called(this, "_ZN7S2140C13v15Ev");}
void  S2140C1 ::v16(){vfunc_called(this, "_ZN7S2140C13v16Ev");}
void  S2140C1 ::v17(){vfunc_called(this, "_ZN7S2140C13v17Ev");}
void  S2140C1 ::v18(){vfunc_called(this, "_ZN7S2140C13v18Ev");}
void  S2140C1 ::v19(){vfunc_called(this, "_ZN7S2140C13v19Ev");}
void  S2140C1 ::v20(){vfunc_called(this, "_ZN7S2140C13v20Ev");}
void  S2140C1 ::v21(){vfunc_called(this, "_ZN7S2140C13v21Ev");}
void  S2140C1 ::v22(){vfunc_called(this, "_ZN7S2140C13v22Ev");}
void  S2140C1 ::v23(){vfunc_called(this, "_ZN7S2140C13v23Ev");}
S2140C1 ::S2140C1(){ note_ctor("S2140C1", this);} // tgen

static void Test_S2140C1()
{
  extern Class_Descriptor cd_S2140C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S2140C1, buf);
    S2140C1 *dp, &lv = *(dp=new (buf) S2140C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S2140C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2140C1)");
    check_base_class_offset(lv, (S2140C4*)(S2140C3_nt*)(S2140C2*), 0, "S2140C1");
    check_base_class_offset(lv, (S2140C3_nt*)(S2140C2*), 0, "S2140C1");
    check_base_class_offset(lv, (S2140C2*), 0, "S2140C1");
    test_class_info(&lv, &cd_S2140C1);
    dp->~S2140C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2140C1(Test_S2140C1, "S2140C1", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S2140C1C1Ev();
extern void _ZN7S2140C1D1Ev();
Name_Map name_map_S2140C1[] = {
  NSPAIR(_ZN7S2140C1C1Ev),
  NSPAIR(_ZN7S2140C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2140C4;
extern VTBL_ENTRY _ZTI7S2140C4[];
extern  VTBL_ENTRY _ZTV7S2140C4[];
extern Class_Descriptor cd_S2140C3_nt;
extern VTBL_ENTRY _ZTI10S2140C3_nt[];
extern  VTBL_ENTRY _ZTV10S2140C3_nt[];
extern Class_Descriptor cd_S2140C2;
extern VTBL_ENTRY _ZTI7S2140C2[];
extern  VTBL_ENTRY _ZTV7S2140C2[];
static Base_Class bases_S2140C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2140C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2140C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2140C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2140C1[];
extern void _ZN7S2140C1D1Ev();
extern void _ZN7S2140C1D0Ev();
extern void _ZN7S2140C43v24Ev();
extern void _ZN10S2140C3_nt3v25Ev();
extern void _ZN10S2140C3_nt3v26Ev();
extern void _ZN10S2140C3_nt3v27Ev();
extern void _ZN10S2140C3_nt3v28Ev();
extern void _ZN10S2140C3_nt3v29Ev();
extern void _ZN10S2140C3_nt3v30Ev();
extern void _ZN10S2140C3_nt3v31Ev();
extern void _ZN7S2140C23v32Ev();
extern void _ZN7S2140C23v33Ev();
extern void _ZN7S2140C23v34Ev();
extern void _ZN7S2140C23v35Ev();
extern void _ZN7S2140C23v36Ev();
extern void _ZN7S2140C23v37Ev();
extern void _ZN7S2140C23v38Ev();
extern void _ZN7S2140C23v39Ev();
extern void _ZN7S2140C23v40Ev();
extern void _ZN7S2140C23v41Ev();
extern void _ZN7S2140C23v42Ev();
extern void _ZN7S2140C23v43Ev();
extern void _ZN7S2140C23v44Ev();
extern void _ZN7S2140C23v45Ev();
extern void _ZN7S2140C23v46Ev();
extern void _ZN7S2140C23v47Ev();
extern void _ZN7S2140C23v48Ev();
extern void _ZN7S2140C23v49Ev();
extern void _ZN7S2140C23v50Ev();
extern void _ZN7S2140C23v51Ev();
extern void _ZN7S2140C23v52Ev();
extern void _ZN7S2140C23v53Ev();
extern void _ZN7S2140C23v54Ev();
extern void _ZN7S2140C23v55Ev();
extern void _ZN7S2140C12v1Ev();
extern void _ZN7S2140C12v2Ev();
extern void _ZN7S2140C12v3Ev();
extern void _ZN7S2140C12v4Ev();
extern void _ZN7S2140C12v5Ev();
extern void _ZN7S2140C12v6Ev();
extern void _ZN7S2140C12v7Ev();
extern void _ZN7S2140C12v8Ev();
extern void _ZN7S2140C12v9Ev();
extern void _ZN7S2140C13v10Ev();
extern void _ZN7S2140C13v11Ev();
extern void _ZN7S2140C13v12Ev();
extern void _ZN7S2140C13v13Ev();
extern void _ZN7S2140C13v14Ev();
extern void _ZN7S2140C13v15Ev();
extern void _ZN7S2140C13v16Ev();
extern void _ZN7S2140C13v17Ev();
extern void _ZN7S2140C13v18Ev();
extern void _ZN7S2140C13v19Ev();
extern void _ZN7S2140C13v20Ev();
extern void _ZN7S2140C13v21Ev();
extern void _ZN7S2140C13v22Ev();
extern void _ZN7S2140C13v23Ev();
static  VTBL_ENTRY vtc_S2140C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2140C1[0]),
  (VTBL_ENTRY)&_ZN7S2140C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2140C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2140C43v24Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S2140C3_nt3v31Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v32Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v33Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v34Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v35Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v36Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v37Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v38Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v39Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v40Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v41Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v42Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v43Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v44Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v45Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v46Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v47Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v48Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v49Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v50Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v51Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v52Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v53Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v54Ev,
  (VTBL_ENTRY)&_ZN7S2140C23v55Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2140C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v15Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v16Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v17Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v18Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v19Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v20Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v21Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v22Ev,
  (VTBL_ENTRY)&_ZN7S2140C13v23Ev,
};
extern VTBL_ENTRY _ZTI7S2140C1[];
extern  VTBL_ENTRY _ZTV7S2140C1[];
Class_Descriptor cd_S2140C1 = {  "S2140C1", // class name
  bases_S2140C1, 3,
  &(vtc_S2140C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S2140C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2140C1),59, //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  S19101C6  {
  short s19101c6f0;
  virtual  ~S19101C6(); // _ZN8S19101C6D1Ev
  virtual void  v31(); // _ZN8S19101C63v31Ev
  virtual void  v32(); // _ZN8S19101C63v32Ev
  virtual void  v33(); // _ZN8S19101C63v33Ev
  virtual void  v34(); // _ZN8S19101C63v34Ev
  virtual void  v35(); // _ZN8S19101C63v35Ev
  virtual void  v36(); // _ZN8S19101C63v36Ev
  S19101C6(); // tgen
};
//SIG(1 S19101C6) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S19101C6 ::~S19101C6(){ note_dtor("S19101C6", this);}
void  S19101C6 ::v31(){vfunc_called(this, "_ZN8S19101C63v31Ev");}
void  S19101C6 ::v32(){vfunc_called(this, "_ZN8S19101C63v32Ev");}
void  S19101C6 ::v33(){vfunc_called(this, "_ZN8S19101C63v33Ev");}
void  S19101C6 ::v34(){vfunc_called(this, "_ZN8S19101C63v34Ev");}
void  S19101C6 ::v35(){vfunc_called(this, "_ZN8S19101C63v35Ev");}
void  S19101C6 ::v36(){vfunc_called(this, "_ZN8S19101C63v36Ev");}
S19101C6 ::S19101C6(){ note_ctor("S19101C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19101C6C1Ev();
extern void _ZN8S19101C6D1Ev();
Name_Map name_map_S19101C6[] = {
  NSPAIR(_ZN8S19101C6C1Ev),
  NSPAIR(_ZN8S19101C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19101C6[];
extern void _ZN8S19101C6D1Ev();
extern void _ZN8S19101C6D0Ev();
extern void _ZN8S19101C63v31Ev();
extern void _ZN8S19101C63v32Ev();
extern void _ZN8S19101C63v33Ev();
extern void _ZN8S19101C63v34Ev();
extern void _ZN8S19101C63v35Ev();
extern void _ZN8S19101C63v36Ev();
static  VTBL_ENTRY vtc_S19101C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C6[0]),
  (VTBL_ENTRY)&_ZN8S19101C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C63v31Ev,
  (VTBL_ENTRY)&_ZN8S19101C63v32Ev,
  (VTBL_ENTRY)&_ZN8S19101C63v33Ev,
  (VTBL_ENTRY)&_ZN8S19101C63v34Ev,
  (VTBL_ENTRY)&_ZN8S19101C63v35Ev,
  (VTBL_ENTRY)&_ZN8S19101C63v36Ev,
};
extern VTBL_ENTRY _ZTI8S19101C6[];
extern  VTBL_ENTRY _ZTV8S19101C6[];
Class_Descriptor cd_S19101C6 = {  "S19101C6", // class name
  0,0,//no base classes
  &(vtc_S19101C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19101C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19101C6),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C5  {
  ::S19101C6 s19101c5f0[4];
  virtual  ~S19101C5(); // _ZN8S19101C5D1Ev
  virtual void  v3(); // _ZN8S19101C52v3Ev
  virtual void  v4(); // _ZN8S19101C52v4Ev
  virtual void  v5(); // _ZN8S19101C52v5Ev
  virtual void  v6(); // _ZN8S19101C52v6Ev
  virtual void  v7(); // _ZN8S19101C52v7Ev
  virtual void  v8(); // _ZN8S19101C52v8Ev
  virtual void  v9(); // _ZN8S19101C52v9Ev
  S19101C5(); // tgen
};
//SIG(-1 S19101C5) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ vd v8 v9 v10 v11 v12 v13 Fs}[4]}


 S19101C5 ::~S19101C5(){ note_dtor("S19101C5", this);}
void  S19101C5 ::v3(){vfunc_called(this, "_ZN8S19101C52v3Ev");}
void  S19101C5 ::v4(){vfunc_called(this, "_ZN8S19101C52v4Ev");}
void  S19101C5 ::v5(){vfunc_called(this, "_ZN8S19101C52v5Ev");}
void  S19101C5 ::v6(){vfunc_called(this, "_ZN8S19101C52v6Ev");}
void  S19101C5 ::v7(){vfunc_called(this, "_ZN8S19101C52v7Ev");}
void  S19101C5 ::v8(){vfunc_called(this, "_ZN8S19101C52v8Ev");}
void  S19101C5 ::v9(){vfunc_called(this, "_ZN8S19101C52v9Ev");}
S19101C5 ::S19101C5(){ note_ctor("S19101C5", this);} // tgen

static void Test_S19101C5()
{
  extern Class_Descriptor cd_S19101C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S19101C5, buf);
    S19101C5 *dp, &lv = *(dp=new (buf) S19101C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S19101C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19101C5)");
    check_field_offset(lv, s19101c5f0, ABISELECT(8,4), "S19101C5.s19101c5f0");
    test_class_info(&lv, &cd_S19101C5);
    dp->~S19101C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C5(Test_S19101C5, "S19101C5", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S19101C5C1Ev();
extern void _ZN8S19101C5D1Ev();
Name_Map name_map_S19101C5[] = {
  NSPAIR(_ZN8S19101C5C1Ev),
  NSPAIR(_ZN8S19101C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19101C5[];
extern void _ZN8S19101C5D1Ev();
extern void _ZN8S19101C5D0Ev();
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY vtc_S19101C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C5[0]),
  (VTBL_ENTRY)&_ZN8S19101C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern VTBL_ENTRY _ZTI8S19101C5[];
extern  VTBL_ENTRY _ZTV8S19101C5[];
Class_Descriptor cd_S19101C5 = {  "S19101C5", // class name
  0,0,//no base classes
  &(vtc_S19101C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S19101C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19101C5),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C8_nt  {
  int s19101c8f0;
  virtual void  v10(); // _ZN11S19101C8_nt3v10Ev
  virtual void  v11(); // _ZN11S19101C8_nt3v11Ev
  virtual void  v12(); // _ZN11S19101C8_nt3v12Ev
  virtual void  v13(); // _ZN11S19101C8_nt3v13Ev
  virtual void  v14(); // _ZN11S19101C8_nt3v14Ev
  ~S19101C8_nt(); // tgen
  S19101C8_nt(); // tgen
};
//SIG(-1 S19101C8_nt) C1{ v1 v2 v3 v4 v5 Fi}


void  S19101C8_nt ::v10(){vfunc_called(this, "_ZN11S19101C8_nt3v10Ev");}
void  S19101C8_nt ::v11(){vfunc_called(this, "_ZN11S19101C8_nt3v11Ev");}
void  S19101C8_nt ::v12(){vfunc_called(this, "_ZN11S19101C8_nt3v12Ev");}
void  S19101C8_nt ::v13(){vfunc_called(this, "_ZN11S19101C8_nt3v13Ev");}
void  S19101C8_nt ::v14(){vfunc_called(this, "_ZN11S19101C8_nt3v14Ev");}
S19101C8_nt ::~S19101C8_nt(){ note_dtor("S19101C8_nt", this);} // tgen
S19101C8_nt ::S19101C8_nt(){ note_ctor("S19101C8_nt", this);} // tgen

//skip512 S19101C8_nt

#else // __cplusplus

extern void _ZN11S19101C8_ntC1Ev();
extern void _ZN11S19101C8_ntD1Ev();
Name_Map name_map_S19101C8_nt[] = {
  NSPAIR(_ZN11S19101C8_ntC1Ev),
  NSPAIR(_ZN11S19101C8_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
static  VTBL_ENTRY vtc_S19101C8_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S19101C8_nt[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
VTBL_ENTRY *P__ZTI11S19101C8_nt = _ZTI11S19101C8_nt; 
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
Class_Descriptor cd_S19101C8_nt = {  "S19101C8_nt", // class name
  0,0,//no base classes
  &(vtc_S19101C8_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S19101C8_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S19101C8_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  S19101C9  : S19101C8_nt {
  ::S10296C15_nt s19101c9f0;
  virtual  ~S19101C9(); // _ZN8S19101C9D1Ev
  virtual void  v28(); // _ZN8S19101C93v28Ev
  virtual void  v29(); // _ZN8S19101C93v29Ev
  virtual void  v30(); // _ZN8S19101C93v30Ev
  S19101C9(); // tgen
};
//SIG(-1 S19101C9) C1{ BC2{ v4 v5 v6 v7 v8 Fi} vd v1 v2 v3 FC3{}}


 S19101C9 ::~S19101C9(){ note_dtor("S19101C9", this);}
void  S19101C9 ::v28(){vfunc_called(this, "_ZN8S19101C93v28Ev");}
void  S19101C9 ::v29(){vfunc_called(this, "_ZN8S19101C93v29Ev");}
void  S19101C9 ::v30(){vfunc_called(this, "_ZN8S19101C93v30Ev");}
S19101C9 ::S19101C9(){ note_ctor("S19101C9", this);} // tgen

static void Test_S19101C9()
{
  extern Class_Descriptor cd_S19101C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19101C9, buf);
    S19101C9 *dp, &lv = *(dp=new (buf) S19101C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19101C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19101C9)");
    check_base_class_offset(lv, (S19101C8_nt*), 0, "S19101C9");
    check_field_offset(lv, s19101c9f0, ABISELECT(12,8), "S19101C9.s19101c9f0");
    test_class_info(&lv, &cd_S19101C9);
    dp->~S19101C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C9(Test_S19101C9, "S19101C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19101C9C1Ev();
extern void _ZN8S19101C9D1Ev();
Name_Map name_map_S19101C9[] = {
  NSPAIR(_ZN8S19101C9C1Ev),
  NSPAIR(_ZN8S19101C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C8_nt;
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
static Base_Class bases_S19101C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19101C9[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C9D1Ev();
extern void _ZN8S19101C9D0Ev();
extern void _ZN8S19101C93v28Ev();
extern void _ZN8S19101C93v29Ev();
extern void _ZN8S19101C93v30Ev();
static  VTBL_ENTRY vtc_S19101C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C9[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C9D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C93v28Ev,
  (VTBL_ENTRY)&_ZN8S19101C93v29Ev,
  (VTBL_ENTRY)&_ZN8S19101C93v30Ev,
};
extern VTBL_ENTRY _ZTI8S19101C9[];
extern  VTBL_ENTRY _ZTV8S19101C9[];
Class_Descriptor cd_S19101C9 = {  "S19101C9", // class name
  bases_S19101C9, 1,
  &(vtc_S19101C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19101C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19101C9),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C7  : S19101C8_nt {
  ::S19101C9 s19101c7f0;
  virtual  ~S19101C7(); // _ZN8S19101C7D1Ev
  virtual void  v15(); // _ZN8S19101C73v15Ev
  virtual void  v16(); // _ZN8S19101C73v16Ev
  S19101C7(); // tgen
};
//SIG(-1 S19101C7) C1{ BC2{ v3 v4 v5 v6 v7 Fi} vd v1 v2 FC3{ BC2 vd v8 v9 v10 FC4{}}}


 S19101C7 ::~S19101C7(){ note_dtor("S19101C7", this);}
void  S19101C7 ::v15(){vfunc_called(this, "_ZN8S19101C73v15Ev");}
void  S19101C7 ::v16(){vfunc_called(this, "_ZN8S19101C73v16Ev");}
S19101C7 ::S19101C7(){ note_ctor("S19101C7", this);} // tgen

static void Test_S19101C7()
{
  extern Class_Descriptor cd_S19101C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19101C7, buf);
    S19101C7 *dp, &lv = *(dp=new (buf) S19101C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19101C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19101C7)");
    check_base_class_offset(lv, (S19101C8_nt*), 0, "S19101C7");
    check_field_offset(lv, s19101c7f0, ABISELECT(16,8), "S19101C7.s19101c7f0");
    test_class_info(&lv, &cd_S19101C7);
    dp->~S19101C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C7(Test_S19101C7, "S19101C7", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19101C7C1Ev();
extern void _ZN8S19101C7D1Ev();
Name_Map name_map_S19101C7[] = {
  NSPAIR(_ZN8S19101C7C1Ev),
  NSPAIR(_ZN8S19101C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C8_nt;
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
static Base_Class bases_S19101C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19101C7[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C7D1Ev();
extern void _ZN8S19101C7D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
static  VTBL_ENTRY vtc_S19101C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C7[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C7D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
};
extern VTBL_ENTRY _ZTI8S19101C7[];
extern  VTBL_ENTRY _ZTV8S19101C7[];
Class_Descriptor cd_S19101C7 = {  "S19101C7", // class name
  bases_S19101C7, 1,
  &(vtc_S19101C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19101C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19101C7),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  S19101C4  : virtual S19101C5 , S19101C7 {
  int s19101c4f0[2];
  long s19101c4f1;
  virtual  ~S19101C4(); // _ZN8S19101C4D2Ev
  virtual void  v17(); // _ZN8S19101C43v17Ev
  virtual void  v18(); // _ZN8S19101C43v18Ev
  virtual void  v19(); // _ZN8S19101C43v19Ev
  S19101C4(); // tgen
};
//SIG(-1 S19101C4) C1{ VBC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ vd v21 v22 v23 v24 v25 v26 Fs}[4]} BC4{ BC5{ v11 v12 v13 v14 v15 Fi} vd v16 v17 FC6{ BC5 vd v18 v19 v20 FC7{}}} vd v1 v2 v3 Fi[2] Fl}


 S19101C4 ::~S19101C4(){ note_dtor("S19101C4", this);}
void  S19101C4 ::v17(){vfunc_called(this, "_ZN8S19101C43v17Ev");}
void  S19101C4 ::v18(){vfunc_called(this, "_ZN8S19101C43v18Ev");}
void  S19101C4 ::v19(){vfunc_called(this, "_ZN8S19101C43v19Ev");}
S19101C4 ::S19101C4(){ note_ctor("S19101C4", this);} // tgen

static void Test_S19101C4()
{
  extern Class_Descriptor cd_S19101C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S19101C4, buf);
    S19101C4 *dp, &lv = *(dp=new (buf) S19101C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S19101C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19101C4)");
    check_base_class_offset(lv, (S19101C5*), ABISELECT(48,32), "S19101C4");
    check_base_class_offset(lv, (S19101C8_nt*)(S19101C7*), 0, "S19101C4");
    check_base_class_offset(lv, (S19101C7*), 0, "S19101C4");
    check_field_offset(lv, s19101c4f0, ABISELECT(32,20), "S19101C4.s19101c4f0");
    check_field_offset(lv, s19101c4f1, ABISELECT(40,28), "S19101C4.s19101c4f1");
    test_class_info(&lv, &cd_S19101C4);
    dp->~S19101C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C4(Test_S19101C4, "S19101C4", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN8S19101C4C1Ev();
extern void _ZN8S19101C4D2Ev();
Name_Map name_map_S19101C4[] = {
  NSPAIR(_ZN8S19101C4C1Ev),
  NSPAIR(_ZN8S19101C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C5;
extern VTBL_ENTRY _ZTI8S19101C5[];
extern  VTBL_ENTRY _ZTV8S19101C5[];
extern Class_Descriptor cd_S19101C8_nt;
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
extern Class_Descriptor cd_S19101C7;
extern VTBL_ENTRY _ZTI8S19101C7[];
extern  VTBL_ENTRY _ZTV8S19101C7[];
static Base_Class bases_S19101C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C5,    ABISELECT(48,32), //bcp->offset
    15, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19101C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19101C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S19101C4[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C4D1Ev();
extern void _ZN8S19101C4D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev)();
extern void ABISELECT(_ZThn48_N8S19101C4D1Ev,_ZThn32_N8S19101C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev)();
extern void ABISELECT(_ZThn48_N8S19101C4D0Ev,_ZThn32_N8S19101C4D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY vtc_S19101C4[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S19101C4[];
static  VTT_ENTRY vtt_S19101C4[] = {
  {&(_ZTV8S19101C4[3]),  3,34},
  {&(_ZTV8S19101C4[25]),  25,34},
};
extern VTBL_ENTRY _ZTI8S19101C4[];
extern  VTBL_ENTRY _ZTV8S19101C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C4[];
static VTBL_ENTRY alt_thunk_names82[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19101C4D0Ev,_ZThn32_N8S19101C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19101C4D1Ev,_ZThn32_N8S19101C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19101C4 = {  "S19101C4", // class name
  bases_S19101C4, 3,
  &(vtc_S19101C4[0]), // expected_vtbl_contents
  &(vtt_S19101C4[0]), // expected_vtt_contents
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI8S19101C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19101C4),34, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19101C4),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names82,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C12  {
  virtual void  v20(); // _ZN9S19101C123v20Ev
  ~S19101C12(); // tgen
  S19101C12(); // tgen
};
//SIG(-1 S19101C12) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN9S19101C12C1Ev();
extern void _ZN9S19101C12D1Ev();
Name_Map name_map_S19101C12[] = {
  NSPAIR(_ZN9S19101C12C1Ev),
  NSPAIR(_ZN9S19101C12D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19101C12[];
extern void _ZN9S19101C123v20Ev();
static  VTBL_ENTRY vtc_S19101C12[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19101C12[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
};
extern VTBL_ENTRY _ZTI9S19101C12[];
extern  VTBL_ENTRY _ZTV9S19101C12[];
Class_Descriptor cd_S19101C12 = {  "S19101C12", // class name
  0,0,//no base classes
  &(vtc_S19101C12[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19101C12),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19101C12),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  S19101C11_nt  : virtual S19101C12 {
  virtual void  v21(); // _ZN12S19101C11_nt3v21Ev
  ~S19101C11_nt(); // tgen
  S19101C11_nt(); // tgen
};
//SIG(-1 S19101C11_nt) C1{ VBC2{ v2} v1}


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

//skip512 S19101C11_nt

#else // __cplusplus

extern void _ZN12S19101C11_ntC1Ev();
extern void _ZN12S19101C11_ntD1Ev();
Name_Map name_map_S19101C11_nt[] = {
  NSPAIR(_ZN12S19101C11_ntC1Ev),
  NSPAIR(_ZN12S19101C11_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C12;
extern VTBL_ENTRY _ZTI9S19101C12[];
extern  VTBL_ENTRY _ZTV9S19101C12[];
static Base_Class bases_S19101C11_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C12,    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 _ZTI12S19101C11_nt[];
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY vtc_S19101C11_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19101C11_nt[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
extern VTBL_ENTRY _ZTV12S19101C11_nt[];
static  VTT_ENTRY vtt_S19101C11_nt[] = {
  {&(_ZTV12S19101C11_nt[4]),  4,6},
  {&(_ZTV12S19101C11_nt[4]),  4,6},
};
extern VTBL_ENTRY _ZTI12S19101C11_nt[];
VTBL_ENTRY *P__ZTI12S19101C11_nt = _ZTI12S19101C11_nt; 
extern  VTBL_ENTRY _ZTV12S19101C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19101C11_nt[];
Class_Descriptor cd_S19101C11_nt = {  "S19101C11_nt", // class name
  bases_S19101C11_nt, 1,
  &(vtc_S19101C11_nt[0]), // expected_vtbl_contents
  &(vtt_S19101C11_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI12S19101C11_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV12S19101C11_nt),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT12S19101C11_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C3  : S19101C4 , S19101C11_nt {
  ::S19101C5 s19101c3f0;
  char s19101c3f1[4];
  ::S10296C15_nt s19101c3f2;
  virtual  ~S19101C3(); // _ZN8S19101C3D2Ev
  virtual void  v22(); // _ZN8S19101C33v22Ev
  virtual void  v23(); // _ZN8S19101C33v23Ev
  virtual void  v24(); // _ZN8S19101C33v24Ev
  virtual void  v25(); // _ZN8S19101C33v25Ev
  S19101C3(); // tgen
};
//SIG(-1 S19101C3) C1{ BC2{ VBC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ vd v27 v28 v29 v30 v31 v32 Fs}[4]} BC5{ BC6{ v12 v13 v14 v15 v16 Fi} vd v17 v18 FC7{ BC6 vd v24 v25 v26 FC8{}}} vd v19 v20 v21 Fi[2] Fl} BC9{ VBC10{ v22} v23} vd v1 v2 v3 v4 FC3 Fc[4] FC8}


 S19101C3 ::~S19101C3(){ note_dtor("S19101C3", this);}
void  S19101C3 ::v22(){vfunc_called(this, "_ZN8S19101C33v22Ev");}
void  S19101C3 ::v23(){vfunc_called(this, "_ZN8S19101C33v23Ev");}
void  S19101C3 ::v24(){vfunc_called(this, "_ZN8S19101C33v24Ev");}
void  S19101C3 ::v25(){vfunc_called(this, "_ZN8S19101C33v25Ev");}
S19101C3 ::S19101C3(){ note_ctor("S19101C3", this);} // tgen

static void Test_S19101C3()
{
  extern Class_Descriptor cd_S19101C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,30)];
    init_test(&cd_S19101C3, buf);
    S19101C3 *dp, &lv = *(dp=new (buf) S19101C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S19101C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19101C3)");
    check_base_class_offset(lv, (S19101C5*)(S19101C4*), ABISELECT(136,80), "S19101C3");
    check_base_class_offset(lv, (S19101C8_nt*)(S19101C7*)(S19101C4*), 0, "S19101C3");
    check_base_class_offset(lv, (S19101C7*)(S19101C4*), 0, "S19101C3");
    check_base_class_offset(lv, (S19101C4*), 0, "S19101C3");
    check_base_class_offset(lv, (S19101C12*)(S19101C11_nt*), ABISELECT(48,32), "S19101C3");
    check_base_class_offset(lv, (S19101C11_nt*), ABISELECT(48,32), "S19101C3");
    check_field_offset(lv, s19101c3f0, ABISELECT(56,36), "S19101C3.s19101c3f0");
    check_field_offset(lv, s19101c3f1, ABISELECT(128,72), "S19101C3.s19101c3f1");
    check_field_offset(lv, s19101c3f2, ABISELECT(132,76), "S19101C3.s19101c3f2");
    test_class_info(&lv, &cd_S19101C3);
    dp->~S19101C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C3(Test_S19101C3, "S19101C3", ABISELECT(208,116));

#else // __cplusplus

extern void _ZN8S19101C3C1Ev();
extern void _ZN8S19101C3D2Ev();
Name_Map name_map_S19101C3[] = {
  NSPAIR(_ZN8S19101C3C1Ev),
  NSPAIR(_ZN8S19101C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C5;
extern VTBL_ENTRY _ZTI8S19101C5[];
extern  VTBL_ENTRY _ZTV8S19101C5[];
extern Class_Descriptor cd_S19101C8_nt;
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
extern Class_Descriptor cd_S19101C7;
extern VTBL_ENTRY _ZTI8S19101C7[];
extern  VTBL_ENTRY _ZTV8S19101C7[];
extern Class_Descriptor cd_S19101C4;
extern VTBL_ENTRY _ZTI8S19101C4[];
extern  VTBL_ENTRY _ZTV8S19101C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C4[];
extern Class_Descriptor cd_S19101C12;
extern VTBL_ENTRY _ZTI9S19101C12[];
extern  VTBL_ENTRY _ZTV9S19101C12[];
extern Class_Descriptor cd_S19101C11_nt;
extern VTBL_ENTRY _ZTI12S19101C11_nt[];
extern  VTBL_ENTRY _ZTV12S19101C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19101C11_nt[];
static Base_Class bases_S19101C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C5,    ABISELECT(136,80), //bcp->offset
    26, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19101C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19101C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19101C4,    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_S19101C12,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19101C11_nt,    ABISELECT(48,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19101C3[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C3D1Ev();
extern void _ZN8S19101C3D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void _ZN8S19101C33v22Ev();
extern void _ZN8S19101C33v23Ev();
extern void _ZN8S19101C33v24Ev();
extern void _ZN8S19101C33v25Ev();
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
extern void ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C3D1Ev,_ZThn80_N8S19101C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C3D0Ev,_ZThn80_N8S19101C3D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY vtc_S19101C3[] = {
  ABISELECT(48,32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v25Ev,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S19101C3[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C4D1Ev();
extern void _ZN8S19101C4D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C4__8S19101C3[] = {
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C4D1Ev,_ZThn80_N8S19101C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C4D0Ev,_ZThn80_N8S19101C4D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C5__8S19101C4__8S19101C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY _tg__ZTV12S19101C11_nt__8S19101C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19101C11_nt[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
static  VTT_ENTRY vtt_S19101C3[] = {
  {&(_ZTV8S19101C3[4]),  4,45},
  {&(_tg__ZTV8S19101C4__8S19101C3[3]),  3,15},
  {&(_tg__ZTV8S19101C5__8S19101C4__8S19101C3[10]),  10,19},
  {&(_tg__ZTV12S19101C11_nt__8S19101C3[4]),  4,6},
  {&(_tg__ZTV12S19101C11_nt__8S19101C3[4]),  4,6},
  {&(_ZTV8S19101C3[36]),  36,45},
  {&(_ZTV8S19101C3[24]),  24,45},
  {&(_ZTV8S19101C3[24]),  24,45},
};
extern VTBL_ENTRY _ZTI8S19101C3[];
extern  VTBL_ENTRY _ZTV8S19101C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C3[];
static VTBL_ENTRY alt_thunk_names83[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C4D0Ev,_ZThn80_N8S19101C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C4D1Ev,_ZThn80_N8S19101C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C3D0Ev,_ZThn80_N8S19101C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C3D1Ev,_ZThn80_N8S19101C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19101C3 = {  "S19101C3", // class name
  bases_S19101C3, 6,
  &(vtc_S19101C3[0]), // expected_vtbl_contents
  &(vtt_S19101C3[0]), // expected_vtt_contents
  ABISELECT(208,116), // object size
  NSPAIRA(_ZTI8S19101C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19101C3),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19101C3),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names83,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C2  : S19101C3 {
  virtual void  v26(); // _ZN8S19101C23v26Ev
  virtual void  v27(); // _ZN8S19101C23v27Ev
  ~S19101C2(); // tgen
  S19101C2(); // tgen
};
//SIG(-1 S19101C2) C1{ BC2{ BC3{ VBC4{ vd v3 v4 v5 v6 v7 v8 v9 FC5{ vd v29 v30 v31 v32 v33 v34 Fs}[4]} BC6{ BC7{ v10 v11 v12 v13 v14 Fi} vd v15 v16 FC8{ BC7 vd v26 v27 v28 FC9{}}} vd v17 v18 v19 Fi[2] Fl} BC10{ VBC11{ v20} v21} vd v22 v23 v24 v25 FC4 Fc[4] FC9} v1 v2}


void  S19101C2 ::v26(){vfunc_called(this, "_ZN8S19101C23v26Ev");}
void  S19101C2 ::v27(){vfunc_called(this, "_ZN8S19101C23v27Ev");}
S19101C2 ::~S19101C2(){ note_dtor("S19101C2", this);} // tgen
S19101C2 ::S19101C2(){ note_ctor("S19101C2", this);} // tgen

static void Test_S19101C2()
{
  extern Class_Descriptor cd_S19101C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,30)];
    init_test(&cd_S19101C2, buf);
    S19101C2 *dp, &lv = *(dp=new (buf) S19101C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S19101C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19101C2)");
    check_base_class_offset(lv, (S19101C5*)(S19101C4*)(S19101C3*), ABISELECT(136,80), "S19101C2");
    check_base_class_offset(lv, (S19101C8_nt*)(S19101C7*)(S19101C4*)(S19101C3*), 0, "S19101C2");
    check_base_class_offset(lv, (S19101C7*)(S19101C4*)(S19101C3*), 0, "S19101C2");
    check_base_class_offset(lv, (S19101C4*)(S19101C3*), 0, "S19101C2");
    check_base_class_offset(lv, (S19101C12*)(S19101C11_nt*)(S19101C3*), ABISELECT(48,32), "S19101C2");
    check_base_class_offset(lv, (S19101C11_nt*)(S19101C3*), ABISELECT(48,32), "S19101C2");
    check_base_class_offset(lv, (S19101C3*), 0, "S19101C2");
    test_class_info(&lv, &cd_S19101C2);
    dp->~S19101C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C2(Test_S19101C2, "S19101C2", ABISELECT(208,116));

#else // __cplusplus

extern void _ZN8S19101C2C1Ev();
extern void _ZN8S19101C2D1Ev();
Name_Map name_map_S19101C2[] = {
  NSPAIR(_ZN8S19101C2C1Ev),
  NSPAIR(_ZN8S19101C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C5;
extern VTBL_ENTRY _ZTI8S19101C5[];
extern  VTBL_ENTRY _ZTV8S19101C5[];
extern Class_Descriptor cd_S19101C8_nt;
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
extern Class_Descriptor cd_S19101C7;
extern VTBL_ENTRY _ZTI8S19101C7[];
extern  VTBL_ENTRY _ZTV8S19101C7[];
extern Class_Descriptor cd_S19101C4;
extern VTBL_ENTRY _ZTI8S19101C4[];
extern  VTBL_ENTRY _ZTV8S19101C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C4[];
extern Class_Descriptor cd_S19101C12;
extern VTBL_ENTRY _ZTI9S19101C12[];
extern  VTBL_ENTRY _ZTV9S19101C12[];
extern Class_Descriptor cd_S19101C11_nt;
extern VTBL_ENTRY _ZTI12S19101C11_nt[];
extern  VTBL_ENTRY _ZTV12S19101C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19101C11_nt[];
extern Class_Descriptor cd_S19101C3;
extern VTBL_ENTRY _ZTI8S19101C3[];
extern  VTBL_ENTRY _ZTV8S19101C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C3[];
static Base_Class bases_S19101C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C5,    ABISELECT(136,80), //bcp->offset
    28, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19101C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19101C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19101C4,    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
    6, //immediately_derived
  0, 0},
  {&cd_S19101C12,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19101C11_nt,    ABISELECT(48,32), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19101C3,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S19101C2[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C2D1Ev();
extern void _ZN8S19101C2D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void _ZN8S19101C33v22Ev();
extern void _ZN8S19101C33v23Ev();
extern void _ZN8S19101C33v24Ev();
extern void _ZN8S19101C33v25Ev();
extern void _ZN8S19101C23v26Ev();
extern void _ZN8S19101C23v27Ev();
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
extern void ABISELECT(_ZTv0_n24_N8S19101C2D1Ev,_ZTv0_n12_N8S19101C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C2D1Ev,_ZThn80_N8S19101C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C2D0Ev,_ZTv0_n12_N8S19101C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C2D0Ev,_ZThn80_N8S19101C2D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY vtc_S19101C2[] = {
  ABISELECT(48,32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v25Ev,
  (VTBL_ENTRY)&_ZN8S19101C23v26Ev,
  (VTBL_ENTRY)&_ZN8S19101C23v27Ev,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C2D1Ev,_ZTv0_n12_N8S19101C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C2D0Ev,_ZTv0_n12_N8S19101C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S19101C2[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C3D1Ev();
extern void _ZN8S19101C3D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void _ZN8S19101C33v22Ev();
extern void _ZN8S19101C33v23Ev();
extern void _ZN8S19101C33v24Ev();
extern void _ZN8S19101C33v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C3__8S19101C2[] = {
  ABISELECT(48,32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v25Ev,
};
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C4D1Ev();
extern void _ZN8S19101C4D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C48S19101C3__8S19101C2[] = {
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C4D1Ev,_ZThn80_N8S19101C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C4D0Ev,_ZThn80_N8S19101C4D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C5__8S19101C48S19101C3__8S19101C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY _tg__ZTV12S19101C11_nt8S19101C3__8S19101C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI12S19101C11_nt[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C3D1Ev,_ZThn80_N8S19101C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C3D0Ev,_ZThn80_N8S19101C3D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C5__8S19101C3__8S19101C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY _tg__ZTV12S19101C11_nt__8S19101C3__8S19101C2[] = {
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
static  VTT_ENTRY vtt_S19101C2[] = {
  {&(_ZTV8S19101C2[4]),  4,47},
  {&(_tg__ZTV8S19101C3__8S19101C2[4]),  4,20},
  {&(_tg__ZTV8S19101C48S19101C3__8S19101C2[3]),  3,15},
  {&(_tg__ZTV8S19101C5__8S19101C48S19101C3__8S19101C2[10]),  10,19},
  {&(_tg__ZTV12S19101C11_nt8S19101C3__8S19101C2[4]),  4,6},
  {&(_tg__ZTV12S19101C11_nt8S19101C3__8S19101C2[4]),  4,6},
  {&(_tg__ZTV8S19101C5__8S19101C3__8S19101C2[10]),  10,19},
  {&(_tg__ZTV12S19101C11_nt__8S19101C3__8S19101C2[4]),  4,6},
  {&(_tg__ZTV12S19101C11_nt__8S19101C3__8S19101C2[4]),  4,6},
  {&(_ZTV8S19101C2[38]),  38,47},
  {&(_ZTV8S19101C2[26]),  26,47},
  {&(_ZTV8S19101C2[26]),  26,47},
};
extern VTBL_ENTRY _ZTI8S19101C2[];
extern  VTBL_ENTRY _ZTV8S19101C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C2[];
static VTBL_ENTRY alt_thunk_names84[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C3D0Ev,_ZThn80_N8S19101C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C3D1Ev,_ZThn80_N8S19101C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C4D0Ev,_ZThn80_N8S19101C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C4D1Ev,_ZThn80_N8S19101C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C2D0Ev,_ZTv0_n12_N8S19101C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C2D0Ev,_ZThn80_N8S19101C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C2D1Ev,_ZTv0_n12_N8S19101C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C2D1Ev,_ZThn80_N8S19101C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19101C2 = {  "S19101C2", // class name
  bases_S19101C2, 7,
  &(vtc_S19101C2[0]), // expected_vtbl_contents
  &(vtt_S19101C2[0]), // expected_vtt_contents
  ABISELECT(208,116), // object size
  NSPAIRA(_ZTI8S19101C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19101C2),47, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19101C2),12, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names84,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19101C1  : virtual S19101C2 {
  int s19101c1f0;
  void *s19101c1f1;
  long double s19101c1f2;
  char s19101c1f3[5];
  virtual  ~S19101C1(); // _ZN8S19101C1D2Ev
  virtual void  v1(); // _ZN8S19101C12v1Ev
  virtual void  v2(); // _ZN8S19101C12v2Ev
  S19101C1(); // tgen
};
//SIG(1 S19101C1) C1{ VBC2{ BC3{ BC4{ VBC5{ vd v3 v4 v5 v6 v7 v8 v9 FC6{ vd v31 v32 v33 v34 v35 v36 Fs}[4]} BC7{ BC8{ v10 v11 v12 v13 v14 Fi} vd v15 v16 FC9{ BC8 vd v28 v29 v30 FC10{}}} vd v17 v18 v19 Fi[2] Fl} BC11{ VBC12{ v20} v21} vd v22 v23 v24 v25 FC5 Fc[4] FC10} v26 v27} vd v1 v2 Fi Fp FD Fc[5]}


 S19101C1 ::~S19101C1(){ note_dtor("S19101C1", this);}
void  S19101C1 ::v1(){vfunc_called(this, "_ZN8S19101C12v1Ev");}
void  S19101C1 ::v2(){vfunc_called(this, "_ZN8S19101C12v2Ev");}
S19101C1 ::S19101C1(){ note_ctor("S19101C1", this);} // tgen

static void Test_S19101C1()
{
  extern Class_Descriptor cd_S19101C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(18,38)];
    init_test(&cd_S19101C1, buf);
    S19101C1 *dp, &lv = *(dp=new (buf) S19101C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(272,148), "sizeof(S19101C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19101C1)");
    check_base_class_offset(lv, (S19101C5*)(S19101C4*)(S19101C3*)(S19101C2*), ABISELECT(192,112), "S19101C1");
    check_base_class_offset(lv, (S19101C8_nt*)(S19101C7*)(S19101C4*)(S19101C3*)(S19101C2*), ABISELECT(56,32), "S19101C1");
    check_base_class_offset(lv, (S19101C7*)(S19101C4*)(S19101C3*)(S19101C2*), ABISELECT(56,32), "S19101C1");
    check_base_class_offset(lv, (S19101C4*)(S19101C3*)(S19101C2*), ABISELECT(56,32), "S19101C1");
    check_base_class_offset(lv, (S19101C12*)(S19101C11_nt*)(S19101C3*)(S19101C2*), 0, "S19101C1");
    check_base_class_offset(lv, (S19101C11_nt*)(S19101C3*)(S19101C2*), ABISELECT(104,64), "S19101C1");
    check_base_class_offset(lv, (S19101C3*)(S19101C2*), ABISELECT(56,32), "S19101C1");
    check_base_class_offset(lv, (S19101C2*), ABISELECT(56,32), "S19101C1");
    check_field_offset(lv, s19101c1f0, ABISELECT(8,4), "S19101C1.s19101c1f0");
    check_field_offset(lv, s19101c1f1, ABISELECT(16,8), "S19101C1.s19101c1f1");
    check_field_offset(lv, s19101c1f2, ABISELECT(32,12), "S19101C1.s19101c1f2");
    check_field_offset(lv, s19101c1f3, ABISELECT(48,24), "S19101C1.s19101c1f3");
    test_class_info(&lv, &cd_S19101C1);
    dp->~S19101C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19101C1(Test_S19101C1, "S19101C1", ABISELECT(272,148));

#else // __cplusplus

extern void _ZN8S19101C1C1Ev();
extern void _ZN8S19101C1D2Ev();
Name_Map name_map_S19101C1[] = {
  NSPAIR(_ZN8S19101C1C1Ev),
  NSPAIR(_ZN8S19101C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19101C5;
extern VTBL_ENTRY _ZTI8S19101C5[];
extern  VTBL_ENTRY _ZTV8S19101C5[];
extern Class_Descriptor cd_S19101C8_nt;
extern VTBL_ENTRY _ZTI11S19101C8_nt[];
extern  VTBL_ENTRY _ZTV11S19101C8_nt[];
extern Class_Descriptor cd_S19101C7;
extern VTBL_ENTRY _ZTI8S19101C7[];
extern  VTBL_ENTRY _ZTV8S19101C7[];
extern Class_Descriptor cd_S19101C4;
extern VTBL_ENTRY _ZTI8S19101C4[];
extern  VTBL_ENTRY _ZTV8S19101C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C4[];
extern Class_Descriptor cd_S19101C12;
extern VTBL_ENTRY _ZTI9S19101C12[];
extern  VTBL_ENTRY _ZTV9S19101C12[];
extern Class_Descriptor cd_S19101C11_nt;
extern VTBL_ENTRY _ZTI12S19101C11_nt[];
extern  VTBL_ENTRY _ZTV12S19101C11_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT12S19101C11_nt[];
extern Class_Descriptor cd_S19101C3;
extern VTBL_ENTRY _ZTI8S19101C3[];
extern  VTBL_ENTRY _ZTV8S19101C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C3[];
extern Class_Descriptor cd_S19101C2;
extern VTBL_ENTRY _ZTI8S19101C2[];
extern  VTBL_ENTRY _ZTV8S19101C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C2[];
static Base_Class bases_S19101C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19101C5,    ABISELECT(192,112), //bcp->offset
    57, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S19101C8_nt,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19101C7,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19101C4,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19101C12,    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
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S19101C11_nt,    ABISELECT(104,64), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19101C3,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19101C2,    ABISELECT(56,32), //bcp->offset
    11, //bcp->virtual_function_table_offset
    22, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19101C1[];
extern void _ZN9S19101C123v20Ev();
extern void _ZN8S19101C1D1Ev();
extern void _ZN8S19101C1D0Ev();
extern void _ZN8S19101C12v1Ev();
extern void _ZN8S19101C12v2Ev();
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void ABISELECT(_ZTv0_n80_N8S19101C1D1Ev,_ZTv0_n40_N8S19101C1D1Ev)();
extern void ABISELECT(_ZThn56_N8S19101C1D1Ev,_ZThn32_N8S19101C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S19101C1D0Ev,_ZTv0_n40_N8S19101C1D0Ev)();
extern void ABISELECT(_ZThn56_N8S19101C1D0Ev,_ZThn32_N8S19101C1D0Ev)() __attribute__((weak));
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void _ZN8S19101C33v22Ev();
extern void _ZN8S19101C33v23Ev();
extern void _ZN8S19101C33v24Ev();
extern void _ZN8S19101C33v25Ev();
extern void _ZN8S19101C23v26Ev();
extern void _ZN8S19101C23v27Ev();
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
extern void ABISELECT(_ZTv0_n24_N8S19101C1D1Ev,_ZTv0_n12_N8S19101C1D1Ev)();
extern void ABISELECT(_ZThn192_N8S19101C1D1Ev,_ZThn112_N8S19101C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C1D0Ev,_ZTv0_n12_N8S19101C1D0Ev)();
extern void ABISELECT(_ZThn192_N8S19101C1D0Ev,_ZThn112_N8S19101C1D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY vtc_S19101C1[] = {
  0,
  ABISELECT(192,112),
  ABISELECT(56,32),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C1[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN8S19101C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19101C12v2Ev,
  0,
  0,
  ABISELECT(48,32),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(136,80),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C1[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19101C1D1Ev,_ZTv0_n40_N8S19101C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S19101C1D0Ev,_ZTv0_n40_N8S19101C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v25Ev,
  (VTBL_ENTRY)&_ZN8S19101C23v26Ev,
  (VTBL_ENTRY)&_ZN8S19101C23v27Ev,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S19101C1[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-192,-112),
  ABISELECT(-192,-112),
  (VTBL_ENTRY)&(_ZTI8S19101C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C1D1Ev,_ZTv0_n12_N8S19101C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C1D0Ev,_ZTv0_n12_N8S19101C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern VTBL_ENTRY _ZTV8S19101C1[];
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C2D1Ev();
extern void _ZN8S19101C2D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void _ZN8S19101C33v22Ev();
extern void _ZN8S19101C33v23Ev();
extern void _ZN8S19101C33v24Ev();
extern void _ZN8S19101C33v25Ev();
extern void _ZN8S19101C23v26Ev();
extern void _ZN8S19101C23v27Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C2__8S19101C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v25Ev,
  (VTBL_ENTRY)&_ZN8S19101C23v26Ev,
  (VTBL_ENTRY)&_ZN8S19101C23v27Ev,
};
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C3D1Ev();
extern void _ZN8S19101C3D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
extern void _ZN8S19101C33v22Ev();
extern void _ZN8S19101C33v23Ev();
extern void _ZN8S19101C33v24Ev();
extern void _ZN8S19101C33v25Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C38S19101C2__8S19101C1[] = {
  ABISELECT(-56,-32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v22Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v23Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v24Ev,
  (VTBL_ENTRY)&_ZN8S19101C33v25Ev,
};
extern void _ZN11S19101C8_nt3v10Ev();
extern void _ZN11S19101C8_nt3v11Ev();
extern void _ZN11S19101C8_nt3v12Ev();
extern void _ZN11S19101C8_nt3v13Ev();
extern void _ZN11S19101C8_nt3v14Ev();
extern void _ZN8S19101C4D1Ev();
extern void _ZN8S19101C4D0Ev();
extern void _ZN8S19101C73v15Ev();
extern void _ZN8S19101C73v16Ev();
extern void _ZN8S19101C43v17Ev();
extern void _ZN8S19101C43v18Ev();
extern void _ZN8S19101C43v19Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C48S19101C38S19101C2__8S19101C1[] = {
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S19101C8_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19101C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v15Ev,
  (VTBL_ENTRY)&_ZN8S19101C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v17Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v18Ev,
  (VTBL_ENTRY)&_ZN8S19101C43v19Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C4D1Ev,_ZThn80_N8S19101C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C4D0Ev,_ZThn80_N8S19101C4D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C5__8S19101C48S19101C38S19101C2__8S19101C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY _tg__ZTV12S19101C11_nt8S19101C38S19101C2__8S19101C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI12S19101C11_nt[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
extern void _ZN9S19101C123v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19101C12__12S19101C11_nt8S19101C38S19101C2__8S19101C1[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI12S19101C11_nt[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C3D1Ev,_ZThn80_N8S19101C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C3D0Ev,_ZThn80_N8S19101C3D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C5__8S19101C38S19101C2__8S19101C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY _tg__ZTV12S19101C11_nt__8S19101C38S19101C2__8S19101C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
extern void _ZN9S19101C123v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19101C12__8S19101C38S19101C2__8S19101C1[] = {
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19101C3[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19101C2D1Ev,_ZTv0_n12_N8S19101C2D1Ev)();
extern void ABISELECT(_ZThn136_N8S19101C2D1Ev,_ZThn80_N8S19101C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19101C2D0Ev,_ZTv0_n12_N8S19101C2D0Ev)();
extern void ABISELECT(_ZThn136_N8S19101C2D0Ev,_ZThn80_N8S19101C2D0Ev)() __attribute__((weak));
extern void _ZN8S19101C52v3Ev();
extern void _ZN8S19101C52v4Ev();
extern void _ZN8S19101C52v5Ev();
extern void _ZN8S19101C52v6Ev();
extern void _ZN8S19101C52v7Ev();
extern void _ZN8S19101C52v8Ev();
extern void _ZN8S19101C52v9Ev();
static  VTBL_ENTRY _tg__ZTV8S19101C5__8S19101C2__8S19101C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C2D1Ev,_ZTv0_n12_N8S19101C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19101C2D0Ev,_ZTv0_n12_N8S19101C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19101C52v3Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v4Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v5Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v6Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v7Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19101C52v9Ev,
};
extern void _ZN9S19101C123v20Ev();
extern void _ZN12S19101C11_nt3v21Ev();
static  VTBL_ENTRY _tg__ZTV12S19101C11_nt8S19101C3__8S19101C2__8S19101C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
  (VTBL_ENTRY)&_ZN12S19101C11_nt3v21Ev,
};
extern void _ZN9S19101C123v20Ev();
static  VTBL_ENTRY _tg__ZTV9S19101C12__8S19101C2__8S19101C1[] = {
  0,
  ABISELECT(56,32),
  (VTBL_ENTRY)&(_ZTI8S19101C2[0]),
  (VTBL_ENTRY)&_ZN9S19101C123v20Ev,
};
static  VTT_ENTRY vtt_S19101C1[] = {
  {&(_ZTV8S19101C1[6]),  6,76},
  {&(_ZTV8S19101C1[33]),  33,76},
  {&(_ZTV8S19101C1[67]),  67,76},
  {&(_ZTV8S19101C1[55]),  55,76},
  {&(_ZTV8S19101C1[6]),  6,76},
  {&(_tg__ZTV8S19101C2__8S19101C1[4]),  4,22},
  {&(_tg__ZTV8S19101C38S19101C2__8S19101C1[4]),  4,20},
  {&(_tg__ZTV8S19101C48S19101C38S19101C2__8S19101C1[3]),  3,15},
  {&(_tg__ZTV8S19101C5__8S19101C48S19101C38S19101C2__8S19101C1[10]),  10,19},
  {&(_tg__ZTV12S19101C11_nt8S19101C38S19101C2__8S19101C1[4]),  4,6},
  {&(_tg__ZTV9S19101C12__12S19101C11_nt8S19101C38S19101C2__8S19101C1[3]),  3,4},
  {&(_tg__ZTV8S19101C5__8S19101C38S19101C2__8S19101C1[10]),  10,19},
  {&(_tg__ZTV12S19101C11_nt__8S19101C38S19101C2__8S19101C1[4]),  4,6},
  {&(_tg__ZTV9S19101C12__8S19101C38S19101C2__8S19101C1[3]),  3,4},
  {&(_tg__ZTV8S19101C5__8S19101C2__8S19101C1[10]),  10,19},
  {&(_tg__ZTV12S19101C11_nt8S19101C3__8S19101C2__8S19101C1[4]),  4,6},
  {&(_tg__ZTV9S19101C12__8S19101C2__8S19101C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19101C1[];
extern  VTBL_ENTRY _ZTV8S19101C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19101C1[];
static VTBL_ENTRY alt_thunk_names85[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C2D0Ev,_ZTv0_n12_N8S19101C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C2D0Ev,_ZThn80_N8S19101C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C2D1Ev,_ZTv0_n12_N8S19101C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C2D1Ev,_ZThn80_N8S19101C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C3D0Ev,_ZTv0_n12_N8S19101C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C3D0Ev,_ZThn80_N8S19101C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C3D1Ev,_ZTv0_n12_N8S19101C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C3D1Ev,_ZThn80_N8S19101C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D0Ev,_ZTv0_n12_N8S19101C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C4D0Ev,_ZThn80_N8S19101C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C4D1Ev,_ZTv0_n12_N8S19101C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N8S19101C4D1Ev,_ZThn80_N8S19101C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C1D0Ev,_ZTv0_n12_N8S19101C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19101C1D0Ev,_ZThn112_N8S19101C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19101C1D1Ev,_ZTv0_n12_N8S19101C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N8S19101C1D1Ev,_ZThn112_N8S19101C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19101C1D0Ev,_ZTv0_n40_N8S19101C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19101C1D0Ev,_ZThn32_N8S19101C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S19101C1D1Ev,_ZTv0_n40_N8S19101C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N8S19101C1D1Ev,_ZThn32_N8S19101C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19101C1 = {  "S19101C1", // class name
  bases_S19101C1, 8,
  &(vtc_S19101C1[0]), // expected_vtbl_contents
  &(vtt_S19101C1[0]), // expected_vtt_contents
  ABISELECT(272,148), // object size
  NSPAIRA(_ZTI8S19101C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19101C1),76, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19101C1),17, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names85,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C7  : S9624C39 {
  ::S9624C48 s3769c7f0;
  ::S9624C39 s3769c7f1;
};
//SIG(-1 S3769C7) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S3769C7()
{
  extern Class_Descriptor cd_S3769C7;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S3769C7, buf);
    S3769C7 &lv = *(new (buf) S3769C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S3769C7)");
    check2(__alignof__(lv), 1, "__alignof__(S3769C7)");
    check_base_class_offset(lv, (S9624C39*), 0, "S3769C7");
    check_field_offset(lv, s3769c7f0, 0, "S3769C7.s3769c7f0");
    check_field_offset(lv, s3769c7f1, 1, "S3769C7.s3769c7f1");
    test_class_info(&lv, &cd_S3769C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C7(Test_S3769C7, "S3769C7", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S3769C9  : S9624C48 , virtual S20948C7_nt {
  virtual  ~S3769C9(); // _ZN7S3769C9D2Ev
  S3769C9(); // tgen
};
//SIG(-1 S3769C9) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S3769C9()
{
  extern Class_Descriptor cd_S3769C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3769C9, buf);
    S3769C9 *dp, &lv = *(dp=new (buf) S3769C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S3769C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C9)");
    check_base_class_offset(lv, (S9624C48*), 0, "S3769C9");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S3769C9");
    test_class_info(&lv, &cd_S3769C9);
    dp->~S3769C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C9(Test_S3769C9, "S3769C9", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S3769C9C1Ev();
extern void _ZN7S3769C9D2Ev();
Name_Map name_map_S3769C9[] = {
  NSPAIR(_ZN7S3769C9C1Ev),
  NSPAIR(_ZN7S3769C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S3769C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3769C9[];
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn16_N7S3769C9D1Ev,_ZThn4_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn16_N7S3769C9D0Ev,_ZThn4_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C9[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
extern VTBL_ENTRY _ZTV7S3769C9[];
static  VTT_ENTRY vtt_S3769C9[] = {
  {&(_ZTV7S3769C9[3]),  3,10},
  {&(_ZTV7S3769C9[8]),  8,10},
};
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
static VTBL_ENTRY alt_thunk_names86[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3769C9D0Ev,_ZThn4_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3769C9D1Ev,_ZThn4_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C9 = {  "S3769C9", // class name
  bases_S3769C9, 2,
  &(vtc_S3769C9[0]), // expected_vtbl_contents
  &(vtt_S3769C9[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S3769C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3769C9),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3769C9),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names86,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C11  {
  virtual void  v1(); // _ZN8S3769C112v1Ev
  ~S3769C11(); // tgen
  S3769C11(); // tgen
};
//SIG(-1 S3769C11) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S3769C11C1Ev();
extern void _ZN8S3769C11D1Ev();
Name_Map name_map_S3769C11[] = {
  NSPAIR(_ZN8S3769C11C1Ev),
  NSPAIR(_ZN8S3769C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S3769C11[];
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY vtc_S3769C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C11[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
Class_Descriptor cd_S3769C11 = {  "S3769C11", // class name
  0,0,//no base classes
  &(vtc_S3769C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S3769C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S3769C11),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  S3769C5  : S9624C48 , S3769C7 , virtual S3769C9 , virtual S3769C11 {
  void *s3769c5f0;
  ~S3769C5(); // tgen
  S3769C5(); // tgen
};
//SIG(-1 S3769C5) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S3769C5()
{
  extern Class_Descriptor cd_S3769C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S3769C5, buf);
    S3769C5 *dp, &lv = *(dp=new (buf) S3769C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S3769C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C5)");
    /*is_ambiguous_... S3769C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S3769C5");
    check_base_class_offset(lv, (S9624C39*)(S3769C7*), ABISELECT(9,5), "S3769C5");
    check_base_class_offset(lv, (S3769C7*), ABISELECT(9,5), "S3769C5");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*), 0, "S3769C5");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(32,12), "S3769C5");
    check_base_class_offset(lv, (S3769C9*), 0, "S3769C5");
    check_base_class_offset(lv, (S3769C11*), ABISELECT(64,28), "S3769C5");
    check_field_offset(lv, s3769c5f0, ABISELECT(16,8), "S3769C5.s3769c5f0");
    test_class_info(&lv, &cd_S3769C5);
    dp->~S3769C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C5(Test_S3769C5, "S3769C5", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN7S3769C5C1Ev();
extern void _ZN7S3769C5D1Ev();
Name_Map name_map_S3769C5[] = {
  NSPAIR(_ZN7S3769C5C1Ev),
  NSPAIR(_ZN7S3769C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
static Base_Class bases_S3769C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S3769C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3769C11,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S3769C5[];
extern void _ZN7S3769C5D1Ev();
extern void _ZN7S3769C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZThn32_N7S3769C5D1Ev,_ZThn12_N7S3769C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
extern void ABISELECT(_ZThn32_N7S3769C5D0Ev,_ZThn12_N7S3769C5D0Ev)() __attribute__((weak));
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY vtc_S3769C5[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN7S3769C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C5D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern VTBL_ENTRY _ZTV7S3769C5[];
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C5[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S3769C9D1Ev,_ZThn12_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S3769C9D0Ev,_ZThn12_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__7S3769C5[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
static  VTT_ENTRY vtt_S3769C5[] = {
  {&(_ZTV7S3769C5[6]),  6,17},
  {&(_ZTV7S3769C5[6]),  6,17},
  {&(_ZTV7S3769C5[11]),  11,17},
  {&(_ZTV7S3769C5[16]),  16,17},
  {&(_tg__ZTV7S3769C9__7S3769C5[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__7S3769C5[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
static VTBL_ENTRY alt_thunk_names87[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C9D0Ev,_ZThn12_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C9D1Ev,_ZThn12_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C5D0Ev,_ZThn12_N7S3769C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C5D1Ev,_ZThn12_N7S3769C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C5 = {  "S3769C5", // class name
  bases_S3769C5, 7,
  &(vtc_S3769C5[0]), // expected_vtbl_contents
  &(vtt_S3769C5[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI7S3769C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3769C5),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3769C5),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names87,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C13  : virtual S3769C11 {
  virtual  ~S3769C13(); // _ZN8S3769C13D2Ev
  S3769C13(); // tgen
};
//SIG(-1 S3769C13) C1{ VBC2{ v1} vd}


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

static void Test_S3769C13()
{
  extern Class_Descriptor cd_S3769C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S3769C13, buf);
    S3769C13 *dp, &lv = *(dp=new (buf) S3769C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S3769C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3769C13)");
    check_base_class_offset(lv, (S3769C11*), 0, "S3769C13");
    test_class_info(&lv, &cd_S3769C13);
    dp->~S3769C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C13(Test_S3769C13, "S3769C13", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S3769C13C1Ev();
extern void _ZN8S3769C13D2Ev();
Name_Map name_map_S3769C13[] = {
  NSPAIR(_ZN8S3769C13C1Ev),
  NSPAIR(_ZN8S3769C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
static Base_Class bases_S3769C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3769C11,    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 _ZTI8S3769C13[];
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY vtc_S3769C13[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern VTBL_ENTRY _ZTV8S3769C13[];
static  VTT_ENTRY vtt_S3769C13[] = {
  {&(_ZTV8S3769C13[4]),  4,7},
  {&(_ZTV8S3769C13[4]),  4,7},
};
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
Class_Descriptor cd_S3769C13 = {  "S3769C13", // class name
  bases_S3769C13, 1,
  &(vtc_S3769C13[0]), // expected_vtbl_contents
  &(vtt_S3769C13[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S3769C13),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3769C13),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C13),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  S3769C12  : S3769C13 , virtual S9624C48 {
  ::S20948C8 s3769c12f0;
  virtual  ~S3769C12(); // _ZN8S3769C12D2Ev
  S3769C12(); // tgen
};
//SIG(-1 S3769C12) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S3769C12()
{
  extern Class_Descriptor cd_S3769C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3769C12, buf);
    S3769C12 *dp, &lv = *(dp=new (buf) S3769C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3769C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3769C12)");
    check_base_class_offset(lv, (S3769C11*)(S3769C13*), 0, "S3769C12");
    check_base_class_offset(lv, (S3769C13*), 0, "S3769C12");
    check_base_class_offset(lv, (S9624C48*), 0, "S3769C12");
    check_field_offset(lv, s3769c12f0, ABISELECT(8,4), "S3769C12.s3769c12f0");
    test_class_info(&lv, &cd_S3769C12);
    dp->~S3769C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C12(Test_S3769C12, "S3769C12", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S3769C12C1Ev();
extern void _ZN8S3769C12D2Ev();
Name_Map name_map_S3769C12[] = {
  NSPAIR(_ZN8S3769C12C1Ev),
  NSPAIR(_ZN8S3769C12D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S3769C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3769C11,    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_S3769C13,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S3769C12[];
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY vtc_S3769C12[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern VTBL_ENTRY _ZTV8S3769C12[];
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C13__8S3769C12[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
static  VTT_ENTRY vtt_S3769C12[] = {
  {&(_ZTV8S3769C12[5]),  5,8},
  {&(_tg__ZTV8S3769C13__8S3769C12[4]),  4,7},
  {&(_tg__ZTV8S3769C13__8S3769C12[4]),  4,7},
  {&(_ZTV8S3769C12[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
Class_Descriptor cd_S3769C12 = {  "S3769C12", // class name
  bases_S3769C12, 3,
  &(vtc_S3769C12[0]), // expected_vtbl_contents
  &(vtt_S3769C12[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S3769C12),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3769C12),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C12),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C4  : S3769C5 , S3769C7 , S20948C7_nt , S3769C12 {
  ~S3769C4(); // tgen
  S3769C4(); // tgen
};
//SIG(-1 S3769C4) C1{ BC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} BC4 BC7 BC9{ BC10{ VBC8 vd} VBC3 vd FC11{ m Fc[7]}}}


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

static void Test_S3769C4()
{
  extern Class_Descriptor cd_S3769C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,17)];
    init_test(&cd_S3769C4, buf);
    S3769C4 *dp, &lv = *(dp=new (buf) S3769C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S3769C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C4)");
    /*is_ambiguous_... S3769C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C5*), ABISELECT(8,4), "S3769C4");
    check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C5*), ABISELECT(9,5), "S3769C4");
    check_base_class_offset(lv, (S3769C7*)(S3769C5*), ABISELECT(9,5), "S3769C4");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*), 0, "S3769C4");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(80,44), "S3769C4");
    check_base_class_offset(lv, (S3769C9*)(S3769C5*), 0, "S3769C4");
    check_base_class_offset(lv, (S3769C11*)(S3769C5*), ABISELECT(64,32), "S3769C4");
    check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*), ABISELECT(64,32), "S3769C4");
    check_base_class_offset(lv, (S3769C5*), 0, "S3769C4");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*), ABISELECT(24,12), "S3769C4");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S3769C7*), ABISELECT(24,12), "S3769C4");
    /*is_ambiguous_... S3769C4::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,16), "S3769C4");
    check_base_class_offset(lv, (S3769C13*)(S3769C12*), ABISELECT(64,32), "S3769C4");
    check_base_class_offset(lv, (S9624C48*)(S3769C12*), ABISELECT(112,60), "S3769C4");
    check_base_class_offset(lv, (S3769C12*), ABISELECT(64,32), "S3769C4");
    test_class_info(&lv, &cd_S3769C4);
    dp->~S3769C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C4(Test_S3769C4, "S3769C4", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN7S3769C4C1Ev();
extern void _ZN7S3769C4D1Ev();
Name_Map name_map_S3769C4[] = {
  NSPAIR(_ZN7S3769C4C1Ev),
  NSPAIR(_ZN7S3769C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S3769C5;
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
static Base_Class bases_S3769C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(80,44), //bcp->offset
    21, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S3769C9,    0, //bcp->offset
    -1, //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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3769C11,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S3769C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S3769C7,    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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3769C13,    ABISELECT(64,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S3769C12,    ABISELECT(64,32), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3769C4[];
extern void _ZN7S3769C4D1Ev();
extern void _ZN7S3769C4D0Ev();
extern void ABISELECT(_ZThn32_N7S3769C4D1Ev,_ZThn16_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn32_N7S3769C4D0Ev,_ZThn16_N7S3769C4D0Ev)();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C4D1Ev,_ZThn44_N7S3769C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C4D0Ev,_ZThn44_N7S3769C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C4[] = {
  ABISELECT(112,60),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN7S3769C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C4D0Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3769C4D1Ev,_ZThn16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S3769C4D0Ev,_ZThn16_N7S3769C4D0Ev),
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev),
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev),
};
extern VTBL_ENTRY _ZTV7S3769C4[];
extern void _ZN7S3769C5D1Ev();
extern void _ZN7S3769C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C5__7S3769C4[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN7S3769C5D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C5D1Ev,_ZThn44_N7S3769C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C5D0Ev,_ZThn44_N7S3769C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C5__7S3769C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C5__7S3769C4[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C12__7S3769C4[] = {
  ABISELECT(48,28),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C12__7S3769C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C4[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C9D1Ev,_ZThn44_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C9D0Ev,_ZThn44_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__7S3769C4[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
static  VTT_ENTRY vtt_S3769C4[] = {
  {&(_ZTV7S3769C4[7]),  7,26},
  {&(_tg__ZTV7S3769C5__7S3769C4[6]),  6,8},
  {&(_tg__ZTV7S3769C5__7S3769C4[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__7S3769C5__7S3769C4[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C5__7S3769C4[3]),  3,4},
  {&(_tg__ZTV8S3769C12__7S3769C4[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C12__7S3769C4[4]),  4,7},
  {&(_tg__ZTV8S3769C138S3769C12__7S3769C4[4]),  4,7},
  {&(_tg__ZTV8S3769C12__7S3769C4[5]),  5,8},
  {&(_ZTV7S3769C4[7]),  7,26},
  {&(_ZTV7S3769C4[24]),  24,26},
  {&(_ZTV7S3769C4[18]),  18,26},
  {&(_ZTV7S3769C4[18]),  18,26},
  {&(_tg__ZTV7S3769C9__7S3769C4[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__7S3769C4[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S3769C4[];
extern  VTBL_ENTRY _ZTV7S3769C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C4[];
static VTBL_ENTRY alt_thunk_names88[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C9D0Ev,_ZThn44_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C9D1Ev,_ZThn44_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C5D0Ev,_ZThn44_N7S3769C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C5D1Ev,_ZThn44_N7S3769C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C4D0Ev,_ZThn44_N7S3769C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C4D1Ev,_ZThn44_N7S3769C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C4 = {  "S3769C4", // class name
  bases_S3769C4, 14,
  &(vtc_S3769C4[0]), // expected_vtbl_contents
  &(vtt_S3769C4[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI7S3769C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S3769C4),26, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3769C4),15, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names88,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C16  : S3769C9 , S20948C8 , S3769C11 , virtual S9624C48 {
  ~S3769C16(); // tgen
  S3769C16(); // tgen
};
//SIG(-1 S3769C16) C1{ BC2{ BC3{ m} VBC4{ vd m FD} vd} BC5{ m Fc[7]} BC6{ v1} VBC3}


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

static void Test_S3769C16()
{
  extern Class_Descriptor cd_S3769C16;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,10)];
    init_test(&cd_S3769C16, buf);
    S3769C16 *dp, &lv = *(dp=new (buf) S3769C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,36), "sizeof(S3769C16)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C16)");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*), 0, "S3769C16");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(32,16), "S3769C16");
    check_base_class_offset(lv, (S3769C9*), 0, "S3769C16");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S3769C16");
    check_base_class_offset(lv, (S3769C11*), ABISELECT(16,12), "S3769C16");
    /*is_ambiguous_... S3769C16::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(64,32), "S3769C16");
    test_class_info(&lv, &cd_S3769C16);
    dp->~S3769C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C16(Test_S3769C16, "S3769C16", ABISELECT(80,36));

#else // __cplusplus

extern void _ZN8S3769C16C1Ev();
extern void _ZN8S3769C16D1Ev();
Name_Map name_map_S3769C16[] = {
  NSPAIR(_ZN8S3769C16C1Ev),
  NSPAIR(_ZN8S3769C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S3769C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3769C9,    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_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S3769C11,    ABISELECT(16,12), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S3769C16[];
extern void _ZN8S3769C16D1Ev();
extern void _ZN8S3769C16D0Ev();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S3769C16D1Ev,_ZThn16_N8S3769C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S3769C16D0Ev,_ZThn16_N8S3769C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C16[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&_ZN8S3769C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C16D0Ev,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev),
};
extern VTBL_ENTRY _ZTV8S3769C16[];
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__8S3769C16[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S3769C9D1Ev,_ZThn16_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S3769C9D0Ev,_ZThn16_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__8S3769C16[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
static  VTT_ENTRY vtt_S3769C16[] = {
  {&(_ZTV8S3769C16[4]),  4,14},
  {&(_tg__ZTV7S3769C9__8S3769C16[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__8S3769C16[3]),  3,5},
  {&(_ZTV8S3769C16[12]),  12,14},
};
extern VTBL_ENTRY _ZTI8S3769C16[];
extern  VTBL_ENTRY _ZTV8S3769C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C16[];
static VTBL_ENTRY alt_thunk_names89[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C9D0Ev,_ZThn16_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C9D1Ev,_ZThn16_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3769C16D0Ev,_ZThn16_N8S3769C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3769C16D1Ev,_ZThn16_N8S3769C16D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C16 = {  "S3769C16", // class name
  bases_S3769C16, 6,
  &(vtc_S3769C16[0]), // expected_vtbl_contents
  &(vtt_S3769C16[0]), // expected_vtt_contents
  ABISELECT(80,36), // object size
  NSPAIRA(_ZTI8S3769C16),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S3769C16),14, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C16),4, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names89,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C17  : S3769C11 , virtual S9624C39 {
  int s3769c17f0:23;
  virtual  ~S3769C17(); // _ZN8S3769C17D2Ev
  S3769C17(); // tgen
};
//SIG(-1 S3769C17) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S3769C17()
{
  extern Class_Descriptor cd_S3769C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S3769C17, buf);
    S3769C17 *dp, &lv = *(dp=new (buf) S3769C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S3769C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3769C17)");
    check_base_class_offset(lv, (S3769C11*), 0, "S3769C17");
    check_base_class_offset(lv, (S9624C39*), 0, "S3769C17");
    set_bf_and_test(lv, s3769c17f0, ABISELECT(8,4), 0, 23, 1, "S3769C17");
    set_bf_and_test(lv, s3769c17f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S3769C17");
    test_class_info(&lv, &cd_S3769C17);
    dp->~S3769C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C17(Test_S3769C17, "S3769C17", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S3769C17C1Ev();
extern void _ZN8S3769C17D2Ev();
Name_Map name_map_S3769C17[] = {
  NSPAIR(_ZN8S3769C17C1Ev),
  NSPAIR(_ZN8S3769C17D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S3769C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3769C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S3769C17[];
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C17D1Ev();
extern void _ZN8S3769C17D0Ev();
static  VTBL_ENTRY vtc_S3769C17[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C17[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D0Ev,
};
extern VTBL_ENTRY _ZTV8S3769C17[];
static  VTT_ENTRY vtt_S3769C17[] = {
  {&(_ZTV8S3769C17[3]),  3,6},
};
extern VTBL_ENTRY _ZTI8S3769C17[];
extern  VTBL_ENTRY _ZTV8S3769C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C17[];
Class_Descriptor cd_S3769C17 = {  "S3769C17", // class name
  bases_S3769C17, 2,
  &(vtc_S3769C17[0]), // expected_vtbl_contents
  &(vtt_S3769C17[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S3769C17),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S3769C17),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C17),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  S3769C18  : S20948C8 , virtual S3769C9 , virtual S9624C48 {
  virtual  ~S3769C18(); // _ZN8S3769C18D2Ev
  S3769C18(); // tgen
};
//SIG(-1 S3769C18) C1{ BC2{ m Fc[7]} VBC3{ BC4{ m} VBC5{ vd m FD} vd} VBC4 vd}


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

static void Test_S3769C18()
{
  extern Class_Descriptor cd_S3769C18;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,9)];
    init_test(&cd_S3769C18, buf);
    S3769C18 *dp, &lv = *(dp=new (buf) S3769C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S3769C18)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C18)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S3769C18");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*), 0, "S3769C18");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(16,12), "S3769C18");
    check_base_class_offset(lv, (S3769C9*), 0, "S3769C18");
    /*is_ambiguous_... S3769C18::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(48,28), "S3769C18");
    test_class_info(&lv, &cd_S3769C18);
    dp->~S3769C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C18(Test_S3769C18, "S3769C18", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN8S3769C18C1Ev();
extern void _ZN8S3769C18D2Ev();
Name_Map name_map_S3769C18[] = {
  NSPAIR(_ZN8S3769C18C1Ev),
  NSPAIR(_ZN8S3769C18D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S3769C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,12), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S3769C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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},
  {0}};
extern VTBL_ENTRY _ZTI8S3769C18[];
extern void _ZN8S3769C18D1Ev();
extern void _ZN8S3769C18D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev)();
extern void ABISELECT(_ZThn16_N8S3769C18D1Ev,_ZThn12_N8S3769C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev)();
extern void ABISELECT(_ZThn16_N8S3769C18D0Ev,_ZThn12_N8S3769C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C18[] = {
  ABISELECT(48,28),
  0,
  0,
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&_ZN8S3769C18D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C18D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev),
};
extern VTBL_ENTRY _ZTV8S3769C18[];
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__8S3769C18[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn16_N7S3769C9D1Ev,_ZThn12_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn16_N7S3769C9D0Ev,_ZThn12_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__8S3769C18[] = {
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
static  VTT_ENTRY vtt_S3769C18[] = {
  {&(_ZTV8S3769C18[6]),  6,13},
  {&(_ZTV8S3769C18[6]),  6,13},
  {&(_ZTV8S3769C18[11]),  11,13},
  {&(_tg__ZTV7S3769C9__8S3769C18[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__8S3769C18[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3769C18[];
extern  VTBL_ENTRY _ZTV8S3769C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C18[];
static VTBL_ENTRY alt_thunk_names90[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3769C9D0Ev,_ZThn12_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S3769C9D1Ev,_ZThn12_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C18D0Ev,_ZThn12_N8S3769C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C18D1Ev,_ZThn12_N8S3769C18D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C18 = {  "S3769C18", // class name
  bases_S3769C18, 5,
  &(vtc_S3769C18[0]), // expected_vtbl_contents
  &(vtt_S3769C18[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI8S3769C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S3769C18),13, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C18),5, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names90,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C15  : virtual S3769C16 , virtual S3769C17 , virtual S3769C11 , S3769C18 , S3769C4 {
  virtual  ~S3769C15(); // _ZN8S3769C15D2Ev
  S3769C15(); // tgen
};
//SIG(-1 S3769C15) C1{ VBC2{ BC3{ BC4{ m} VBC5{ vd m FD} vd} BC6{ m Fc[7]} BC7{ v1} VBC4} VBC8{ BC7 VBC9{ m} vd Fi:23} VBC7 BC10{ BC6 VBC3 VBC4 vd} BC11{ BC12{ BC4 BC13{ BC9 FC4 FC9} VBC3 VBC7 Fp} BC13 BC5 BC14{ BC15{ VBC7 vd} VBC4 vd FC6}} vd}


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

static void Test_S3769C15()
{
  extern Class_Descriptor cd_S3769C15;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,25)];
    init_test(&cd_S3769C15, buf);
    S3769C15 *dp, &lv = *(dp=new (buf) S3769C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,96), "sizeof(S3769C15)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C15)");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*)(S3769C16*), ABISELECT(96,56), "S3769C15");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*)(S3769C16*), ABISELECT(128,72), "S3769C15");
    /*is_ambiguous_... S3769C15::S3769C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(128,72), "S3769C15");
    check_base_class_offset(lv, (S3769C9*)(S3769C16*), ABISELECT(96,56), "S3769C15");
    check_base_class_offset(lv, (S20948C8*)(S3769C16*), ABISELECT(104,60), "S3769C15");
    check_base_class_offset(lv, (S3769C11*)(S3769C16*), ABISELECT(112,68), "S3769C15");
    /*is_ambiguous_... S3769C16::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C16*), ABISELECT(160,88), "S3769C15");
    /*is_ambiguous_... S3769C18::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C18*), ABISELECT(160,88), "S3769C15");
    check_base_class_offset(lv, (S9624C48*)(S3769C12*)(S3769C4*), ABISELECT(160,88), "S3769C15");
    check_base_class_offset(lv, (S3769C16*), ABISELECT(96,56), "S3769C15");
    check_base_class_offset(lv, (S3769C11*)(S3769C17*), ABISELECT(160,88), "S3769C15");
    check_base_class_offset(lv, (S9624C39*)(S3769C17*), 0, "S3769C15");
    check_base_class_offset(lv, (S3769C17*), ABISELECT(160,88), "S3769C15");
    /*is_ambiguous_... S3769C15::S3769C11 */ AMB_check_base_class_offset(lv, (S3769C11*), ABISELECT(80,44), "S3769C15");
    check_base_class_offset(lv, (S3769C11*)(S3769C5*)(S3769C4*), ABISELECT(80,44), "S3769C15");
    check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*)(S3769C4*), ABISELECT(80,44), "S3769C15");
    check_base_class_offset(lv, (S20948C8*)(S3769C18*), ABISELECT(8,4), "S3769C15");
    /*is_ambiguous_... S3769C15::S3769C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C9*), 0, "S3769C15");
    check_base_class_offset(lv, (S3769C9*)(S3769C18*), 0, "S3769C15");
    check_base_class_offset(lv, (S3769C9*)(S3769C5*)(S3769C4*), 0, "S3769C15");
    check_base_class_offset(lv, (S3769C18*), 0, "S3769C15");
    /*is_ambiguous_... S3769C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C5*)(S3769C4*), ABISELECT(24,16), "S3769C15");
    check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C5*)(S3769C4*), ABISELECT(25,17), "S3769C15");
    check_base_class_offset(lv, (S3769C7*)(S3769C5*)(S3769C4*), ABISELECT(25,17), "S3769C15");
    check_base_class_offset(lv, (S3769C5*)(S3769C4*), ABISELECT(16,12), "S3769C15");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C4*), ABISELECT(40,24), "S3769C15");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C4*), ABISELECT(40,24), "S3769C15");
    /*is_ambiguous_... S3769C4::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C4*), ABISELECT(48,28), "S3769C15");
    check_base_class_offset(lv, (S3769C13*)(S3769C12*)(S3769C4*), ABISELECT(80,44), "S3769C15");
    check_base_class_offset(lv, (S3769C12*)(S3769C4*), ABISELECT(80,44), "S3769C15");
    check_base_class_offset(lv, (S3769C4*), ABISELECT(16,12), "S3769C15");
    test_class_info(&lv, &cd_S3769C15);
    dp->~S3769C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C15(Test_S3769C15, "S3769C15", ABISELECT(176,96));

#else // __cplusplus

extern void _ZN8S3769C15C1Ev();
extern void _ZN8S3769C15D2Ev();
Name_Map name_map_S3769C15[] = {
  NSPAIR(_ZN8S3769C15C1Ev),
  NSPAIR(_ZN8S3769C15D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C16;
extern VTBL_ENTRY _ZTI8S3769C16[];
extern  VTBL_ENTRY _ZTV8S3769C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C16[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C17;
extern VTBL_ENTRY _ZTI8S3769C17[];
extern  VTBL_ENTRY _ZTV8S3769C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C17[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S3769C18;
extern VTBL_ENTRY _ZTI8S3769C18[];
extern  VTBL_ENTRY _ZTV8S3769C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S3769C5;
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S3769C4;
extern VTBL_ENTRY _ZTI7S3769C4[];
extern  VTBL_ENTRY _ZTV7S3769C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C4[];
static Base_Class bases_S3769C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(128,72), //bcp->offset
    44, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3769C9,    ABISELECT(96,56), //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
    2, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S3769C11,    ABISELECT(112,68), //bcp->offset
    41, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    6, //immediately_derived
  0, 1},
  {&cd_S3769C16,    ABISELECT(96,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    18, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3769C11,    ABISELECT(160,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C17,    ABISELECT(160,88), //bcp->offset
    49, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3769C11,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S3769C18,    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
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    18, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(25,17), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S3769C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S3769C7,    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
    24, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3769C13,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S3769C12,    ABISELECT(80,44), //bcp->offset
    25, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S3769C4,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S3769C15[];
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void _ZN8S3769C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
extern void _ZN8S3769C15D0Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S3769C15D1Ev,_ZThn12_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S3769C15D0Ev,_ZThn12_N8S3769C15D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZThn48_N8S3769C15D1Ev,_ZThn28_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn48_N8S3769C15D0Ev,_ZThn28_N8S3769C15D0Ev)();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn80_N8S3769C15D1Ev,_ZThn44_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S3769C15D0Ev,_ZThn44_N8S3769C15D0Ev)();
extern void ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S3769C15D1Ev,_ZThn56_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S3769C15D0Ev,_ZThn56_N8S3769C15D0Ev)() __attribute__((weak));
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn128_N8S3769C15D1Ev,_ZThn72_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn128_N8S3769C15D0Ev,_ZThn72_N8S3769C15D0Ev)() __attribute__((weak));
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn160_N8S3769C15D1Ev,_ZThn88_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn160_N8S3769C15D0Ev,_ZThn88_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C15[] = {
  ABISELECT(80,44),
  0,
  ABISELECT(160,88),
  ABISELECT(96,56),
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(112,60),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3769C15D1Ev,_ZThn28_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N8S3769C15D0Ev,_ZThn28_N8S3769C15D0Ev),
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3769C15D1Ev,_ZThn44_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3769C15D0Ev,_ZThn44_N8S3769C15D0Ev),
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(64,32),
  ABISELECT(32,16),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev),
  ABISELECT(-160,-88),
  0,
  ABISELECT(-160,-88),
  ABISELECT(-160,-88),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev),
};
extern VTBL_ENTRY _ZTV8S3769C15[];
extern void ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev)();
extern void _ZN8S3769C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev)();
extern void _ZN8S3769C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C18__8S3769C15[] = {
  ABISELECT(160,88),
  0,
  0,
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev)();
extern void ABISELECT(_ZThn128_N8S3769C18D1Ev,_ZThn72_N8S3769C18D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev)();
extern void ABISELECT(_ZThn128_N8S3769C18D0Ev,_ZThn72_N8S3769C18D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C18__8S3769C15[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void _ZN7S3769C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
extern void _ZN7S3769C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C4__8S3769C15[] = {
  ABISELECT(144,76),
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void _ZN7S3769C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
extern void _ZN7S3769C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C57S3769C4__8S3769C15[] = {
  ABISELECT(64,32),
  ABISELECT(-16,-12),
  0,
  ABISELECT(112,60),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C57S3769C4__8S3769C15[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZThn112_N7S3769C5D1Ev,_ZThn60_N7S3769C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
extern void ABISELECT(_ZThn112_N7S3769C5D0Ev,_ZThn60_N7S3769C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C57S3769C4__8S3769C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C57S3769C4__8S3769C15[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C4__8S3769C15[] = {
  ABISELECT(80,44),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C127S3769C4__8S3769C15[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C4__8S3769C15[] = {
  ABISELECT(16,12),
  ABISELECT(128,72),
  ABISELECT(16,12),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn112_N7S3769C4D1Ev,_ZThn60_N7S3769C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev)();
extern void ABISELECT(_ZThn112_N7S3769C4D0Ev,_ZThn60_N7S3769C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C4__8S3769C15[] = {
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C12__7S3769C4__8S3769C15[] = {
  ABISELECT(80,44),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev),
};
extern void _ZN8S3769C16D1Ev();
extern void _ZN8S3769C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C16__8S3769C15[] = {
  ABISELECT(64,32),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&_ZN8S3769C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C16D0Ev,
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C98S3769C16__8S3769C15[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn32_N7S3769C9D1Ev,_ZThn16_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn32_N7S3769C9D0Ev,_ZThn16_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C98S3769C16__8S3769C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev)();
extern void ABISELECT(_ZThn32_N8S3769C16D1Ev,_ZThn16_N8S3769C16D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev)();
extern void ABISELECT(_ZThn32_N8S3769C16D0Ev,_ZThn16_N8S3769C16D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C16__8S3769C15[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C17D1Ev();
extern void _ZN8S3769C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C17__8S3769C15[] = {
  ABISELECT(-160,-88),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C17[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D0Ev,
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__A1__8S3769C15[] = {
  ABISELECT(128,72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn128_N7S3769C9D1Ev,_ZThn72_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn128_N7S3769C9D0Ev,_ZThn72_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__A1__8S3769C15[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
static  VTT_ENTRY vtt_S3769C15[] = {
  {&(_ZTV8S3769C15[10]),  10,57},
  {&(_tg__ZTV8S3769C18__8S3769C15[6]),  6,8},
  {&(_tg__ZTV8S3769C18__8S3769C15[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S3769C18__8S3769C15[3]),  3,5},
  {&(_tg__ZTV7S3769C4__8S3769C15[7]),  7,9},
  {&(_tg__ZTV7S3769C57S3769C4__8S3769C15[6]),  6,8},
  {&(_tg__ZTV7S3769C9__7S3769C57S3769C4__8S3769C15[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__7S3769C57S3769C4__8S3769C15[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C57S3769C4__8S3769C15[3]),  3,4},
  {&(_tg__ZTV8S3769C127S3769C4__8S3769C15[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C127S3769C4__8S3769C15[4]),  4,7},
  {&(_tg__ZTV8S3769C138S3769C127S3769C4__8S3769C15[4]),  4,7},
  {&(_tg__ZTV8S3769C127S3769C4__8S3769C15[5]),  5,8},
  {&(_tg__ZTV7S3769C9__7S3769C4__8S3769C15[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__7S3769C4__8S3769C15[3]),  3,5},
  {&(_tg__ZTV8S3769C12__7S3769C4__8S3769C15[5]),  5,8},
  {&(_tg__ZTV8S3769C12__7S3769C4__8S3769C15[5]),  5,8},
  {&(_ZTV8S3769C15[39]),  39,57},
  {&(_ZTV8S3769C15[47]),  47,57},
  {&(_ZTV8S3769C15[43]),  43,57},
  {&(_ZTV8S3769C15[54]),  54,57},
  {&(_ZTV8S3769C15[30]),  30,57},
  {&(_ZTV8S3769C15[10]),  10,57},
  {&(_ZTV8S3769C15[19]),  19,57},
  {&(_ZTV8S3769C15[30]),  30,57},
  {&(_tg__ZTV8S3769C16__8S3769C15[4]),  4,6},
  {&(_tg__ZTV7S3769C98S3769C16__8S3769C15[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C98S3769C16__8S3769C15[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S3769C16__8S3769C15[3]),  3,5},
  {&(_tg__ZTV8S3769C17__8S3769C15[3]),  3,6},
  {&(_tg__ZTV7S3769C9__A1__8S3769C15[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__A1__8S3769C15[3]),  3,5},
};
extern VTBL_ENTRY _ZTI8S3769C15[];
extern  VTBL_ENTRY _ZTV8S3769C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C15[];
static VTBL_ENTRY alt_thunk_names91[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3769C16D0Ev,_ZThn16_N8S3769C16D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S3769C16D1Ev,_ZThn16_N8S3769C16D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3769C9D0Ev,_ZThn72_N7S3769C9D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C9D0Ev,_ZThn16_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3769C9D1Ev,_ZThn72_N7S3769C9D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S3769C9D1Ev,_ZThn16_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3769C4D0Ev,_ZThn60_N7S3769C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3769C4D1Ev,_ZThn60_N7S3769C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3769C5D0Ev,_ZThn60_N7S3769C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S3769C5D1Ev,_ZThn60_N7S3769C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S3769C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S3769C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S3769C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S3769C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3769C18D0Ev,_ZThn72_N8S3769C18D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3769C18D1Ev,_ZThn72_N8S3769C18D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S3769C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S3769C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3769C15D0Ev,_ZThn72_N8S3769C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S3769C15D1Ev,_ZThn72_N8S3769C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3769C15D0Ev,_ZThn88_N8S3769C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3769C15D0Ev,_ZThn56_N8S3769C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn160_N8S3769C15D1Ev,_ZThn88_N8S3769C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3769C15D1Ev,_ZThn56_N8S3769C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C15D0Ev,_ZThn12_N8S3769C15D0Ev),
  (VTBL_ENTRY)_ZN8S3769C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C15D1Ev,_ZThn12_N8S3769C15D1Ev),
  (VTBL_ENTRY)_ZN8S3769C15D1Ev,
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C15 = {  "S3769C15", // class name
  bases_S3769C15, 25,
  &(vtc_S3769C15[0]), // expected_vtbl_contents
  &(vtt_S3769C15[0]), // expected_vtt_contents
  ABISELECT(176,96), // object size
  NSPAIRA(_ZTI8S3769C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S3769C15),57, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C15),32, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names91,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C2  : S19861C23_nt , virtual S3769C4 , S3769C12 , virtual S3769C15 , S9624C39 {
  short s3769c2f0;
  virtual  ~S3769C2(); // _ZN7S3769C2D2Ev
  S3769C2(); // tgen
};
//SIG(-1 S3769C2) C1{ BC2{ vd m Fi} VBC3{ BC4{ BC5{ m} BC6{ BC7{ m} FC5 FC7} VBC8{ BC5 VBC9{ vd m FD} vd} VBC10{ v1} Fp} BC6 BC9 BC11{ BC12{ VBC10 vd} VBC5 vd FC13{ m Fc[7]}}} BC11 VBC14{ VBC15{ BC8 BC13 BC10 VBC5} VBC16{ BC10 VBC7 vd Fi:23} VBC10 BC17{ BC13 VBC8 VBC5 vd} BC3 vd} BC7 vd Fs}


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

static void Test_S3769C2()
{
  extern Class_Descriptor cd_S3769C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,42)];
    init_test(&cd_S3769C2, buf);
    S3769C2 *dp, &lv = *(dp=new (buf) S3769C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,164), "sizeof(S3769C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C2)");
    check_base_class_offset(lv, (S19861C23_nt*), 0, "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C5*)(S3769C4*), ABISELECT(56,28), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C5*)(S3769C4*), ABISELECT(57,29), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C5*)(S3769C4*), ABISELECT(57,29), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C9*), ABISELECT(48,24), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(128,68), "S3769C2");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*)(S3769C16*), ABISELECT(128,68), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C9*)(S3769C5*)(S3769C4*), ABISELECT(48,24), "S3769C2");
    check_base_class_offset(lv, (S3769C9*)(S3769C18*)(S3769C15*), ABISELECT(48,24), "S3769C2");
    check_base_class_offset(lv, (S3769C9*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(48,24), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C5*)(S3769C4*), ABISELECT(112,56), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*)(S3769C4*), ABISELECT(112,56), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*), ABISELECT(112,56), "S3769C2");
    /*is_ambiguous_... S3769C15::S3769C11 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C15*), ABISELECT(112,56), "S3769C2");
    check_base_class_offset(lv, (S3769C11*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(112,56), "S3769C2");
    check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*)(S3769C4*)(S3769C15*), ABISELECT(112,56), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C5*)(S3769C4*), ABISELECT(48,24), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C4*), ABISELECT(72,36), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C4*), ABISELECT(72,36), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C4*), ABISELECT(80,40), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C13*)(S3769C12*)(S3769C4*), ABISELECT(112,56), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C12*)(S3769C4*), 0, "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C12*), 0, "S3769C2");
    /*is_ambiguous_... S3769C16::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C16*), 0, "S3769C2");
    /*is_ambiguous_... S3769C18::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C18*)(S3769C15*), 0, "S3769C2");
    check_base_class_offset(lv, (S9624C48*)(S3769C12*)(S3769C4*)(S3769C15*), 0, "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C12*)(S3769C4*), ABISELECT(112,56), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C4*), ABISELECT(48,24), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S3769C13*)(S3769C12*), ABISELECT(16,8), "S3769C2");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S3769C12*), ABISELECT(16,8), "S3769C2");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*)(S3769C16*), ABISELECT(256,140), "S3769C2");
    check_base_class_offset(lv, (S3769C9*)(S3769C16*), ABISELECT(256,140), "S3769C2");
    check_base_class_offset(lv, (S20948C8*)(S3769C16*), ABISELECT(264,144), "S3769C2");
    check_base_class_offset(lv, (S3769C11*)(S3769C16*), ABISELECT(272,152), "S3769C2");
    check_base_class_offset(lv, (S3769C16*)(S3769C15*), ABISELECT(256,140), "S3769C2");
    check_base_class_offset(lv, (S3769C11*)(S3769C17*), ABISELECT(280,156), "S3769C2");
    check_base_class_offset(lv, (S9624C39*)(S3769C17*), ABISELECT(291,163), "S3769C2");
    check_base_class_offset(lv, (S3769C17*)(S3769C15*), ABISELECT(280,156), "S3769C2");
    check_base_class_offset(lv, (S20948C8*)(S3769C18*)(S3769C15*), ABISELECT(168,88), "S3769C2");
    check_base_class_offset(lv, (S3769C18*)(S3769C15*), ABISELECT(160,84), "S3769C2");
    /*is_ambiguous_... S3769C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(184,100), "S3769C2");
    check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(185,101), "S3769C2");
    check_base_class_offset(lv, (S3769C7*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(185,101), "S3769C2");
    check_base_class_offset(lv, (S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(176,96), "S3769C2");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C4*)(S3769C15*), ABISELECT(200,108), "S3769C2");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C4*)(S3769C15*), ABISELECT(200,108), "S3769C2");
    /*is_ambiguous_... S3769C4::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C4*)(S3769C15*), ABISELECT(208,112), "S3769C2");
    check_base_class_offset(lv, (S3769C13*)(S3769C12*)(S3769C4*)(S3769C15*), ABISELECT(240,128), "S3769C2");
    check_base_class_offset(lv, (S3769C12*)(S3769C4*)(S3769C15*), ABISELECT(240,128), "S3769C2");
    check_base_class_offset(lv, (S3769C4*)(S3769C15*), ABISELECT(176,96), "S3769C2");
    check_base_class_offset(lv, (S3769C15*), ABISELECT(160,84), "S3769C2");
    /*is_ambiguous_... S3769C2::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S3769C2");
    check_field_offset(lv, s3769c2f0, ABISELECT(32,20), "S3769C2.s3769c2f0");
    test_class_info(&lv, &cd_S3769C2);
    dp->~S3769C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C2(Test_S3769C2, "S3769C2", ABISELECT(304,164));

#else // __cplusplus

extern void _ZN7S3769C2C1Ev();
extern void _ZN7S3769C2D2Ev();
Name_Map name_map_S3769C2[] = {
  NSPAIR(_ZN7S3769C2C1Ev),
  NSPAIR(_ZN7S3769C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S3769C5;
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S3769C4;
extern VTBL_ENTRY _ZTI7S3769C4[];
extern  VTBL_ENTRY _ZTV7S3769C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C4[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S3769C16;
extern VTBL_ENTRY _ZTI8S3769C16[];
extern  VTBL_ENTRY _ZTV8S3769C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C16[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C17;
extern VTBL_ENTRY _ZTI8S3769C17[];
extern  VTBL_ENTRY _ZTV8S3769C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C17[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3769C18;
extern VTBL_ENTRY _ZTI8S3769C18[];
extern  VTBL_ENTRY _ZTV8S3769C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S3769C5;
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S3769C4;
extern VTBL_ENTRY _ZTI7S3769C4[];
extern  VTBL_ENTRY _ZTV7S3769C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C4[];
extern Class_Descriptor cd_S3769C15;
extern VTBL_ENTRY _ZTI8S3769C15[];
extern  VTBL_ENTRY _ZTV8S3769C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C15[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S3769C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S9624C48,    ABISELECT(56,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    3, //immediately_derived
  0, 0},
  {&cd_S3769C7,    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
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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_S20948C7_nt,    ABISELECT(128,68), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3769C9,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3769C11,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3769C5,    ABISELECT(48,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(80,40), //bcp->offset
    30, //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
    15, //immediately_derived
  0, 0},
  {&cd_S3769C13,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C12,    ABISELECT(112,56), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3769C4,    ABISELECT(48,24), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S3769C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3769C12,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    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
    19, //immediately_derived
  0, 0},
  {&cd_S3769C9,    ABISELECT(256,140), //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
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(264,144), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3769C11,    ABISELECT(272,152), //bcp->offset
    88, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3769C16,    ABISELECT(256,140), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3769C11,    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
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(291,163), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3769C17,    ABISELECT(280,156), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    64, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20948C8,    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
    27, //immediately_derived
  0, 0},
  {&cd_S3769C18,    ABISELECT(160,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(185,101), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C7,    ABISELECT(185,101), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C5,    ABISELECT(176,96), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    33, //immediately_derived
  0, 0},
  {&cd_S3769C7,    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
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(208,112), //bcp->offset
    68, //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
    37, //immediately_derived
  0, 0},
  {&cd_S3769C13,    ABISELECT(240,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    45, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3769C12,    ABISELECT(240,128), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    44, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3769C4,    ABISELECT(176,96), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    39, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3769C15,    ABISELECT(160,84), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3769C2[];
extern void _ZN7S3769C2D1Ev();
extern void _ZN7S3769C2D0Ev();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn16_N7S3769C2D1Ev,_ZThn8_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S3769C2D0Ev,_ZThn8_N7S3769C2D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S3769C2D1Ev,_ZThn24_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S3769C2D0Ev,_ZThn24_N7S3769C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N7S3769C2D1Ev,_ZTvn16_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N7S3769C2D0Ev,_ZTvn16_n16_N7S3769C2D0Ev)();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTvn64_n32_N7S3769C2D1Ev,_ZTvn32_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N7S3769C2D0Ev,_ZTvn32_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C2D1Ev,_ZTv0_n12_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn128_N7S3769C2D1Ev,_ZThn68_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C2D0Ev,_ZTv0_n12_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn128_N7S3769C2D0Ev,_ZThn68_N7S3769C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn160_N7S3769C2D1Ev,_ZThn84_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn160_N7S3769C2D0Ev,_ZThn84_N7S3769C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S3769C2D1Ev,_ZThn96_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S3769C2D0Ev,_ZThn96_N7S3769C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N7S3769C2D1Ev,_ZTvn28_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S3769C2D0Ev,_ZTvn28_n16_N7S3769C2D0Ev)();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTvn80_n32_N7S3769C2D1Ev,_ZTvn44_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N7S3769C2D0Ev,_ZTvn44_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S3769C2D1Ev,_ZThn140_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S3769C2D0Ev,_ZThn140_N7S3769C2D0Ev)() __attribute__((weak));
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn280_N7S3769C2D1Ev,_ZThn156_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn280_N7S3769C2D0Ev,_ZThn156_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C2[] = {
  ABISELECT(291,163),
  ABISELECT(280,156),
  ABISELECT(256,140),
  ABISELECT(160,84),
  0,
  ABISELECT(112,56),
  ABISELECT(128,68),
  ABISELECT(48,24),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN7S3769C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C2D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(96,48),
  ABISELECT(96,48),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3769C2D1Ev,_ZThn8_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3769C2D0Ev,_ZThn8_N7S3769C2D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(64,32),
  0,
  ABISELECT(-48,-24),
  ABISELECT(80,44),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S3769C2D1Ev,_ZTvn16_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S3769C2D0Ev,_ZTvn16_n16_N7S3769C2D0Ev),
  ABISELECT(-112,-56),
  0,
  0,
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N7S3769C2D1Ev,_ZTvn32_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N7S3769C2D0Ev,_ZTvn32_n16_N7S3769C2D0Ev),
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C2D1Ev,_ZTv0_n12_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C2D0Ev,_ZTv0_n12_N7S3769C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(131,79),
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  ABISELECT(-160,-84),
  ABISELECT(-32,-16),
  ABISELECT(-160,-84),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev),
  ABISELECT(-176,-96),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  ABISELECT(-176,-96),
  ABISELECT(-48,-28),
  ABISELECT(-176,-96),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev),
  ABISELECT(-208,-112),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S3769C2D1Ev,_ZTvn28_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S3769C2D0Ev,_ZTvn28_n16_N7S3769C2D0Ev),
  ABISELECT(-240,-128),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-240,-128),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N7S3769C2D1Ev,_ZTvn44_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N7S3769C2D0Ev,_ZTvn44_n16_N7S3769C2D0Ev),
  ABISELECT(16,12),
  ABISELECT(-256,-140),
  ABISELECT(-256,-140),
  ABISELECT(-128,-72),
  ABISELECT(-256,-140),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev),
  ABISELECT(-272,-152),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  ABISELECT(-280,-156),
  0,
  ABISELECT(11,7),
  ABISELECT(-280,-156),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev),
};
extern VTBL_ENTRY _ZTV7S3769C2[];
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C12__A1__7S3769C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(96,48),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C12__A1__7S3769C2[] = {
  ABISELECT(96,48),
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C138S3769C12__A1__7S3769C2[] = {
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C12__A1__7S3769C2[] = {
  0,
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void _ZN7S3769C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
extern void _ZN7S3769C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C4__7S3769C2[] = {
  ABISELECT(-48,-24),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void _ZN7S3769C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
extern void _ZN7S3769C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C57S3769C4__7S3769C2[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C5D1Ev,_ZThn44_N7S3769C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C5D0Ev,_ZThn44_N7S3769C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C57S3769C4__7S3769C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C57S3769C4__7S3769C2[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C4__7S3769C2[] = {
  ABISELECT(-112,-56),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C127S3769C4__7S3769C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C4D1Ev,_ZThn44_N7S3769C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C4D0Ev,_ZThn44_N7S3769C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C4__7S3769C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C12__7S3769C4__7S3769C2[] = {
  ABISELECT(-112,-56),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev),
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C2[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C9D1Ev,_ZThn44_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C9D0Ev,_ZThn44_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__7S3769C2[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void _ZN8S3769C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
extern void _ZN8S3769C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C15__7S3769C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(131,79),
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev)();
extern void _ZN8S3769C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev)();
extern void _ZN8S3769C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C188S3769C15__7S3769C2[] = {
  ABISELECT(-160,-84),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__8S3769C188S3769C15__7S3769C2[] = {
  ABISELECT(112,60),
  ABISELECT(80,44),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C188S3769C15__7S3769C2[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void _ZN7S3769C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
extern void _ZN7S3769C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  0,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void _ZN7S3769C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
extern void _ZN7S3769C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C57S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  0,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C57S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C57S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C57S3769C48S3769C15__A1__7S3769C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C48S3769C15__A2__7S3769C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C2[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C2[] = {
  0,
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C127S3769C48S3769C15__A2__7S3769C2[] = {
  0,
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C48S3769C15__A1__7S3769C2[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C12__7S3769C48S3769C15__A1__7S3769C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S3769C15D1Ev,_ZThn56_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S3769C15D0Ev,_ZThn56_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C16__8S3769C15__7S3769C2[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-256,-140),
  ABISELECT(-128,-72),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C15__7S3769C2[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C118S3769C16__8S3769C15__7S3769C2[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn120_N8S3769C15D1Ev,_ZThn72_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn120_N8S3769C15D0Ev,_ZThn72_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C17__8S3769C15__7S3769C2[] = {
  ABISELECT(-120,-72),
  0,
  ABISELECT(11,7),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__A2__8S3769C15__7S3769C2[] = {
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__A1__8S3769C15__7S3769C2[] = {
  ABISELECT(112,60),
  ABISELECT(80,44),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S3769C15D1Ev,_ZThn12_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S3769C15D0Ev,_ZThn12_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C4__8S3769C15__7S3769C2[] = {
  ABISELECT(-176,-96),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn80_N8S3769C15D1Ev,_ZThn44_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S3769C15D0Ev,_ZThn44_N8S3769C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C4__8S3769C15__7S3769C2[] = {
  ABISELECT(-240,-128),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3769C15D1Ev,_ZThn44_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3769C15D0Ev,_ZThn44_N8S3769C15D0Ev),
};
extern void _ZN8S3769C16D1Ev();
extern void _ZN8S3769C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C16__7S3769C2[] = {
  ABISELECT(-256,-140),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&_ZN8S3769C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C16D0Ev,
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C98S3769C16__A1__7S3769C2[] = {
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C98S3769C16__A1__7S3769C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C16__7S3769C2[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C17D1Ev();
extern void _ZN8S3769C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C17__7S3769C2[] = {
  ABISELECT(11,7),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C17[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D0Ev,
};
static  VTT_ENTRY vtt_S3769C2[] = {
  {&(_ZTV7S3769C2[11]),  11,99},
  {&(_tg__ZTV8S3769C12__A1__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C12__A1__7S3769C2[4]),  4,7},
  {&(_tg__ZTV8S3769C11__8S3769C138S3769C12__A1__7S3769C2[3]),  3,4},
  {&(_tg__ZTV8S3769C11__8S3769C12__A1__7S3769C2[3]),  3,4},
  {&(_ZTV7S3769C2[28]),  28,99},
  {&(_ZTV7S3769C2[28]),  28,99},
  {&(_ZTV7S3769C2[45]),  45,99},
  {&(_ZTV7S3769C2[39]),  39,99},
  {&(_ZTV7S3769C2[32]),  32,99},
  {&(_ZTV7S3769C2[39]),  39,99},
  {&(_ZTV7S3769C2[18]),  18,99},
  {&(_ZTV7S3769C2[57]),  57,99},
  {&(_ZTV7S3769C2[86]),  86,99},
  {&(_ZTV7S3769C2[90]),  90,99},
  {&(_ZTV7S3769C2[96]),  96,99},
  {&(_ZTV7S3769C2[66]),  66,99},
  {&(_ZTV7S3769C2[70]),  70,99},
  {&(_ZTV7S3769C2[77]),  77,99},
  {&(_tg__ZTV7S3769C4__7S3769C2[7]),  7,9},
  {&(_tg__ZTV7S3769C57S3769C4__7S3769C2[6]),  6,8},
  {&(_tg__ZTV7S3769C57S3769C4__7S3769C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__7S3769C57S3769C4__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C57S3769C4__7S3769C2[3]),  3,4},
  {&(_tg__ZTV8S3769C127S3769C4__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C127S3769C4__7S3769C2[4]),  4,7},
  {&(_tg__ZTV8S3769C138S3769C127S3769C4__7S3769C2[4]),  4,7},
  {&(_tg__ZTV8S3769C127S3769C4__7S3769C2[5]),  5,8},
  {&(_tg__ZTV7S3769C4__7S3769C2[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__7S3769C4__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C12__7S3769C4__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C12__7S3769C4__7S3769C2[5]),  5,8},
  {&(_tg__ZTV7S3769C9__7S3769C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C15__7S3769C2[10]),  10,12},
  {&(_tg__ZTV8S3769C188S3769C15__7S3769C2[6]),  6,8},
  {&(_tg__ZTV7S3769C9__8S3769C188S3769C15__7S3769C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__8S3769C188S3769C15__7S3769C2[3]),  3,5},
  {&(_tg__ZTV7S3769C48S3769C15__A1__7S3769C2[7]),  7,9},
  {&(_tg__ZTV7S3769C57S3769C48S3769C15__A1__7S3769C2[6]),  6,8},
  {&(_tg__ZTV7S3769C9__7S3769C57S3769C48S3769C15__A1__7S3769C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__7S3769C57S3769C48S3769C15__A1__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C57S3769C48S3769C15__A1__7S3769C2[3]),  3,4},
  {&(_tg__ZTV8S3769C127S3769C48S3769C15__A2__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C2[4]),  4,7},
  {&(_tg__ZTV8S3769C11__8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C2[3]),  3,4},
  {&(_tg__ZTV8S3769C11__8S3769C127S3769C48S3769C15__A2__7S3769C2[3]),  3,4},
  {&(_tg__ZTV7S3769C9__7S3769C48S3769C15__A1__7S3769C2[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__7S3769C48S3769C15__A1__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C48S3769C15__A1__7S3769C2[3]),  3,4},
  {&(_tg__ZTV8S3769C12__7S3769C48S3769C15__A1__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C16__8S3769C15__7S3769C2[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S3769C15__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C118S3769C16__8S3769C15__7S3769C2[2]),  2,3},
  {&(_tg__ZTV8S3769C17__8S3769C15__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C11__A2__8S3769C15__7S3769C2[3]),  3,4},
  {&(_tg__ZTV7S3769C9__A1__8S3769C15__7S3769C2[4]),  4,6},
  {&(_tg__ZTV7S3769C4__8S3769C15__7S3769C2[7]),  7,9},
  {&(_tg__ZTV8S3769C127S3769C4__8S3769C15__7S3769C2[5]),  5,8},
  {&(_tg__ZTV8S3769C16__7S3769C2[4]),  4,6},
  {&(_tg__ZTV7S3769C98S3769C16__A1__7S3769C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C98S3769C16__A1__7S3769C2[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S3769C16__7S3769C2[3]),  3,5},
  {&(_tg__ZTV8S3769C17__7S3769C2[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S3769C2[];
extern  VTBL_ENTRY _ZTV7S3769C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C2[];
static VTBL_ENTRY alt_thunk_names92[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3769C15D0Ev,_ZThn72_N8S3769C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3769C15D0Ev,_ZThn56_N8S3769C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3769C15D1Ev,_ZThn72_N8S3769C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3769C15D1Ev,_ZThn56_N8S3769C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S3769C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S3769C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C15D0Ev,_ZThn12_N8S3769C15D0Ev),
  (VTBL_ENTRY)_ZN8S3769C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C15D1Ev,_ZThn12_N8S3769C15D1Ev),
  (VTBL_ENTRY)_ZN8S3769C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C9D0Ev,_ZThn44_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C9D1Ev,_ZThn44_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C4D0Ev,_ZThn44_N7S3769C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C4D1Ev,_ZThn44_N7S3769C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C5D0Ev,_ZThn44_N7S3769C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C5D1Ev,_ZThn44_N7S3769C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S3769C5D0Ev,
  (VTBL_ENTRY)_ZN7S3769C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S3769C5D1Ev,
  (VTBL_ENTRY)_ZN7S3769C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S3769C4D0Ev,
  (VTBL_ENTRY)_ZN7S3769C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S3769C4D1Ev,
  (VTBL_ENTRY)_ZN7S3769C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3769C2D0Ev,_ZThn156_N7S3769C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3769C2D0Ev,_ZThn140_N7S3769C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn280_N7S3769C2D1Ev,_ZThn156_N7S3769C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3769C2D1Ev,_ZThn140_N7S3769C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C2D0Ev,_ZTv0_n12_N7S3769C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3769C2D0Ev,_ZThn68_N7S3769C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C2D1Ev,_ZTv0_n12_N7S3769C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S3769C2D1Ev,_ZThn68_N7S3769C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3769C2D0Ev,_ZThn96_N7S3769C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3769C2D0Ev,_ZThn84_N7S3769C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3769C2D0Ev,_ZThn24_N7S3769C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3769C2D1Ev,_ZThn96_N7S3769C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn160_N7S3769C2D1Ev,_ZThn84_N7S3769C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S3769C2D1Ev,_ZThn24_N7S3769C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C2 = {  "S3769C2", // class name
  bases_S3769C2, 40,
  &(vtc_S3769C2[0]), // expected_vtbl_contents
  &(vtt_S3769C2[0]), // expected_vtt_contents
  ABISELECT(304,164), // object size
  NSPAIRA(_ZTI7S3769C2),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV7S3769C2),99, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3769C2),64, //virtual table table var
  23, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names92,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3769C19  : virtual S20948C8 {
  ~S3769C19(); // tgen
  S3769C19(); // tgen
};
//SIG(1 S3769C19) C1{ VBC2{ m Fc[7]}}


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

static void Test_S3769C19()
{
  extern Class_Descriptor cd_S3769C19;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3769C19, buf);
    S3769C19 *dp, &lv = *(dp=new (buf) S3769C19());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3769C19)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3769C19)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S3769C19");
    test_class_info(&lv, &cd_S3769C19);
    dp->~S3769C19();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C19(Test_S3769C19, "S3769C19", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S3769C19C1Ev();
extern void _ZN8S3769C19D1Ev();
Name_Map name_map_S3769C19[] = {
  NSPAIR(_ZN8S3769C19C1Ev),
  NSPAIR(_ZN8S3769C19D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S3769C19[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S3769C19[];
static  VTBL_ENTRY vtc_S3769C19[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C19[0]),
};
extern VTBL_ENTRY _ZTV8S3769C19[];
static  VTT_ENTRY vtt_S3769C19[] = {
  {&(_ZTV8S3769C19[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S3769C19[];
extern  VTBL_ENTRY _ZTV8S3769C19[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C19[];
Class_Descriptor cd_S3769C19 = {  "S3769C19", // class name
  bases_S3769C19, 1,
  &(vtc_S3769C19[0]), // expected_vtbl_contents
  &(vtt_S3769C19[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S3769C19),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S3769C19),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S3769C19),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  S3769C1  : S3769C2 {
  ::S3769C19 s3769c1f0[8];
  ~S3769C1(); // tgen
  S3769C1(); // tgen
};
//SIG(1 S3769C1) C1{ BC2{ BC3{ vd m Fi} VBC4{ BC5{ BC6{ m} BC7{ BC8{ m} FC6 FC8} VBC9{ BC6 VBC10{ vd m FD} vd} VBC11{ v1} Fp} BC7 BC10 BC12{ BC13{ VBC11 vd} VBC6 vd FC14{ m Fc[7]}}} BC12 VBC15{ VBC16{ BC9 BC14 BC11 VBC6} VBC17{ BC11 VBC8 vd Fi:23} VBC11 BC18{ BC14 VBC9 VBC6 vd} BC4 vd} BC8 vd Fs} FC19{ VBC14}[8]}


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

static void Test_S3769C1()
{
  extern Class_Descriptor cd_S3769C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(28,66)];
    init_test(&cd_S3769C1, buf);
    S3769C1 *dp, &lv = *(dp=new (buf) S3769C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(432,260), "sizeof(S3769C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3769C1)");
    check_base_class_offset(lv, (S19861C23_nt*)(S3769C2*), 0, "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C5*)(S3769C4*), ABISELECT(184,124), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C5*)(S3769C4*), ABISELECT(185,125), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C5*)(S3769C4*), ABISELECT(185,125), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C9 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C9*), ABISELECT(176,120), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C9 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*), ABISELECT(256,164), "S3769C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S3769C9*)(S3769C16*), ABISELECT(256,164), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C9*)(S3769C5*)(S3769C4*), ABISELECT(176,120), "S3769C1");
    check_base_class_offset(lv, (S3769C9*)(S3769C18*)(S3769C15*), ABISELECT(176,120), "S3769C1");
    check_base_class_offset(lv, (S3769C9*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(176,120), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C5*)(S3769C4*), ABISELECT(240,152), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*)(S3769C4*), ABISELECT(240,152), "S3769C1");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*)(S3769C2*), ABISELECT(240,152), "S3769C1");
    /*is_ambiguous_... S3769C15::S3769C11 */ AMB_check_base_class_offset(lv, (S3769C11*)(S3769C15*), ABISELECT(240,152), "S3769C1");
    check_base_class_offset(lv, (S3769C11*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(240,152), "S3769C1");
    check_base_class_offset(lv, (S3769C11*)(S3769C13*)(S3769C12*)(S3769C4*)(S3769C15*), ABISELECT(240,152), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C5*)(S3769C4*), ABISELECT(176,120), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C4*), ABISELECT(200,132), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C4*), ABISELECT(200,132), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C4*), ABISELECT(208,136), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C13*)(S3769C12*)(S3769C4*), ABISELECT(240,152), "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C12*)(S3769C4*), 0, "S3769C1");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C12*)(S3769C2*), 0, "S3769C1");
    /*is_ambiguous_... S3769C16::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C16*), 0, "S3769C1");
    /*is_ambiguous_... S3769C18::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C18*)(S3769C15*), 0, "S3769C1");
    check_base_class_offset(lv, (S9624C48*)(S3769C12*)(S3769C4*)(S3769C15*), 0, "S3769C1");
    /*is_ambiguous_... S3769C1::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C12*)(S3769C4*), ABISELECT(240,152), "S3769C1");
    /*is_ambiguous_... S3769C2::S3769C4 */ AMB_check_base_class_offset(lv, (S3769C4*)(S3769C2*), ABISELECT(176,120), "S3769C1");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S3769C13*)(S3769C12*)(S3769C2*), ABISELECT(16,8), "S3769C1");
    /*is_ambiguous_... S3769C2::S3769C12 */ AMB_check_base_class_offset(lv, (S3769C12*)(S3769C2*), ABISELECT(16,8), "S3769C1");
    check_base_class_offset(lv, (S9624C48*)(S3769C9*)(S3769C16*), ABISELECT(384,236), "S3769C1");
    check_base_class_offset(lv, (S3769C9*)(S3769C16*), ABISELECT(384,236), "S3769C1");
    check_base_class_offset(lv, (S20948C8*)(S3769C16*), ABISELECT(392,240), "S3769C1");
    check_base_class_offset(lv, (S3769C11*)(S3769C16*), ABISELECT(400,248), "S3769C1");
    check_base_class_offset(lv, (S3769C16*)(S3769C15*), ABISELECT(384,236), "S3769C1");
    check_base_class_offset(lv, (S3769C11*)(S3769C17*), ABISELECT(408,252), "S3769C1");
    check_base_class_offset(lv, (S9624C39*)(S3769C17*), ABISELECT(419,259), "S3769C1");
    check_base_class_offset(lv, (S3769C17*)(S3769C15*), ABISELECT(408,252), "S3769C1");
    check_base_class_offset(lv, (S20948C8*)(S3769C18*)(S3769C15*), ABISELECT(296,184), "S3769C1");
    check_base_class_offset(lv, (S3769C18*)(S3769C15*), ABISELECT(288,180), "S3769C1");
    /*is_ambiguous_... S3769C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(312,196), "S3769C1");
    check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(313,197), "S3769C1");
    check_base_class_offset(lv, (S3769C7*)(S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(313,197), "S3769C1");
    check_base_class_offset(lv, (S3769C5*)(S3769C4*)(S3769C15*), ABISELECT(304,192), "S3769C1");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C7*)(S3769C4*)(S3769C15*), ABISELECT(328,204), "S3769C1");
    /*is_ambiguous_... S3769C4::S3769C7 */ AMB_check_base_class_offset(lv, (S3769C7*)(S3769C4*)(S3769C15*), ABISELECT(328,204), "S3769C1");
    /*is_ambiguous_... S3769C4::S20948C7_nt */ AMB_check_base_class_offset(lv, (S20948C7_nt*)(S3769C4*)(S3769C15*), ABISELECT(336,208), "S3769C1");
    check_base_class_offset(lv, (S3769C13*)(S3769C12*)(S3769C4*)(S3769C15*), ABISELECT(368,224), "S3769C1");
    check_base_class_offset(lv, (S3769C12*)(S3769C4*)(S3769C15*), ABISELECT(368,224), "S3769C1");
    check_base_class_offset(lv, (S3769C4*)(S3769C15*), ABISELECT(304,192), "S3769C1");
    check_base_class_offset(lv, (S3769C15*)(S3769C2*), ABISELECT(288,180), "S3769C1");
    /*is_ambiguous_... S3769C2::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S3769C2*), 0, "S3769C1");
    check_base_class_offset(lv, (S3769C2*), 0, "S3769C1");
    check_field_offset(lv, s3769c1f0, ABISELECT(40,24), "S3769C1.s3769c1f0");
    test_class_info(&lv, &cd_S3769C1);
    dp->~S3769C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3769C1(Test_S3769C1, "S3769C1", ABISELECT(432,260));

#else // __cplusplus

extern void _ZN7S3769C1C1Ev();
extern void _ZN7S3769C1D1Ev();
Name_Map name_map_S3769C1[] = {
  NSPAIR(_ZN7S3769C1C1Ev),
  NSPAIR(_ZN7S3769C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S3769C5;
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S3769C4;
extern VTBL_ENTRY _ZTI7S3769C4[];
extern  VTBL_ENTRY _ZTV7S3769C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C4[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3769C9;
extern VTBL_ENTRY _ZTI7S3769C9[];
extern  VTBL_ENTRY _ZTV7S3769C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C9[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S3769C16;
extern VTBL_ENTRY _ZTI8S3769C16[];
extern  VTBL_ENTRY _ZTV8S3769C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C16[];
extern Class_Descriptor cd_S3769C11;
extern VTBL_ENTRY _ZTI8S3769C11[];
extern  VTBL_ENTRY _ZTV8S3769C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C17;
extern VTBL_ENTRY _ZTI8S3769C17[];
extern  VTBL_ENTRY _ZTV8S3769C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C17[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3769C18;
extern VTBL_ENTRY _ZTI8S3769C18[];
extern  VTBL_ENTRY _ZTV8S3769C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C18[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S3769C5;
extern VTBL_ENTRY _ZTI7S3769C5[];
extern  VTBL_ENTRY _ZTV7S3769C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C7;
extern VTBL_ENTRY _ZTI7S3769C7[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S3769C13;
extern VTBL_ENTRY _ZTI8S3769C13[];
extern  VTBL_ENTRY _ZTV8S3769C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C13[];
extern Class_Descriptor cd_S3769C12;
extern VTBL_ENTRY _ZTI8S3769C12[];
extern  VTBL_ENTRY _ZTV8S3769C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C12[];
extern Class_Descriptor cd_S3769C4;
extern VTBL_ENTRY _ZTI7S3769C4[];
extern  VTBL_ENTRY _ZTV7S3769C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C4[];
extern Class_Descriptor cd_S3769C15;
extern VTBL_ENTRY _ZTI8S3769C15[];
extern  VTBL_ENTRY _ZTV8S3769C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S3769C15[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S3769C2;
extern VTBL_ENTRY _ZTI7S3769C2[];
extern  VTBL_ENTRY _ZTV7S3769C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C2[];
static Base_Class bases_S3769C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    40, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(184,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
    8, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(185,125), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(185,125), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(256,164), //bcp->offset
    42, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S3769C9,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    48, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3769C11,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S3769C5,    ABISELECT(176,120), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    36, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(200,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
    10, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(200,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
    15, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(208,136), //bcp->offset
    30, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3769C13,    ABISELECT(240,152), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    41, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C12,    ABISELECT(240,152), //bcp->offset
    34, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    40, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S3769C4,    ABISELECT(176,120), //bcp->offset
    21, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    21, //bcp->index_in_construction_vtbl_array
    35, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S3769C13,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    22, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S3769C12,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    23, //init_seq
    40, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(384,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
    19, //immediately_derived
  0, 0},
  {&cd_S3769C9,    ABISELECT(384,236), //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
    9, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20948C8,    ABISELECT(392,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
    22, //immediately_derived
  0, 0},
  {&cd_S3769C11,    ABISELECT(400,248), //bcp->offset
    88, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    30, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S3769C16,    ABISELECT(384,236), //bcp->offset
    80, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    29, //bcp->index_in_construction_vtbl_array
    75, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S3769C11,    ABISELECT(408,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
    12, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(419,259), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 1},
  {&cd_S3769C17,    ABISELECT(408,252), //bcp->offset
    91, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    31, //bcp->index_in_construction_vtbl_array
    79, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    38, //immediately_derived
  0, 1},
  {&cd_S20948C8,    ABISELECT(296,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_S3769C18,    ABISELECT(288,180), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //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
    38, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(312,196), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    31, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(313,197), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C7,    ABISELECT(313,197), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C5,    ABISELECT(304,192), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    55, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(328,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
    33, //immediately_derived
  0, 0},
  {&cd_S3769C7,    ABISELECT(328,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
    37, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(336,208), //bcp->offset
    68, //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
    16, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3769C13,    ABISELECT(368,224), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    60, //bcp->base_subarray_index_in_construction_vtbl_array
    17, //init_seq
    36, //immediately_derived
  0, 0},
  {&cd_S3769C12,    ABISELECT(368,224), //bcp->offset
    72, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    34, //bcp->index_in_construction_vtbl_array
    59, //bcp->base_subarray_index_in_construction_vtbl_array
    18, //init_seq
    37, //immediately_derived
  0, 0},
  {&cd_S3769C4,    ABISELECT(304,192), //bcp->offset
    59, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    32, //bcp->index_in_construction_vtbl_array
    54, //bcp->base_subarray_index_in_construction_vtbl_array
    19, //init_seq
    38, //immediately_derived
  0, 0},
  {&cd_S3769C15,    ABISELECT(288,180), //bcp->offset
    47, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    50, //bcp->base_subarray_index_in_construction_vtbl_array
    20, //init_seq
    40, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S3769C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    24, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3769C1[];
extern void _ZN7S3769C1D1Ev();
extern void _ZN7S3769C1D0Ev();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn16_N7S3769C1D1Ev,_ZThn8_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S3769C1D0Ev,_ZThn8_N7S3769C1D0Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn176_N7S3769C1D1Ev,_ZThn120_N7S3769C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev)();
extern void ABISELECT(_ZThn176_N7S3769C1D0Ev,_ZThn120_N7S3769C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn32_n32_N7S3769C1D1Ev,_ZTvn16_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N7S3769C1D0Ev,_ZTvn16_n16_N7S3769C1D0Ev)();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTvn64_n32_N7S3769C1D1Ev,_ZTvn32_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N7S3769C1D0Ev,_ZTvn32_n16_N7S3769C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C1D1Ev,_ZTv0_n12_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn256_N7S3769C1D1Ev,_ZThn164_N7S3769C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C1D0Ev,_ZTv0_n12_N7S3769C1D0Ev)();
extern void ABISELECT(_ZThn256_N7S3769C1D0Ev,_ZThn164_N7S3769C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn288_N7S3769C1D1Ev,_ZThn180_N7S3769C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev)();
extern void ABISELECT(_ZThn288_N7S3769C1D0Ev,_ZThn180_N7S3769C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn304_N7S3769C1D1Ev,_ZThn192_N7S3769C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev)();
extern void ABISELECT(_ZThn304_N7S3769C1D0Ev,_ZThn192_N7S3769C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTvn48_n32_N7S3769C1D1Ev,_ZTvn28_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S3769C1D0Ev,_ZTvn28_n16_N7S3769C1D0Ev)();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTvn80_n32_N7S3769C1D1Ev,_ZTvn44_n16_N7S3769C1D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N7S3769C1D0Ev,_ZTvn44_n16_N7S3769C1D0Ev)();
extern void ABISELECT(_ZTv0_n40_N7S3769C1D1Ev,_ZTv0_n20_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn384_N7S3769C1D1Ev,_ZThn236_N7S3769C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3769C1D0Ev,_ZTv0_n20_N7S3769C1D0Ev)();
extern void ABISELECT(_ZThn384_N7S3769C1D0Ev,_ZThn236_N7S3769C1D0Ev)() __attribute__((weak));
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S3769C1D1Ev,_ZTv0_n20_N7S3769C1D1Ev)();
extern void ABISELECT(_ZThn408_N7S3769C1D1Ev,_ZThn252_N7S3769C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3769C1D0Ev,_ZTv0_n20_N7S3769C1D0Ev)();
extern void ABISELECT(_ZThn408_N7S3769C1D0Ev,_ZThn252_N7S3769C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S3769C1[] = {
  ABISELECT(419,259),
  ABISELECT(408,252),
  ABISELECT(384,236),
  ABISELECT(288,180),
  0,
  ABISELECT(240,152),
  ABISELECT(256,164),
  ABISELECT(176,120),
  ABISELECT(176,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&_ZN7S3769C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C1D0Ev,
  ABISELECT(-16,-8),
  ABISELECT(224,144),
  ABISELECT(224,144),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3769C1D1Ev,_ZThn8_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3769C1D0Ev,_ZThn8_N7S3769C1D0Ev),
  ABISELECT(-176,-120),
  ABISELECT(64,32),
  0,
  ABISELECT(-176,-120),
  ABISELECT(80,44),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev),
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S3769C1D1Ev,_ZTvn16_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S3769C1D0Ev,_ZTvn16_n16_N7S3769C1D0Ev),
  ABISELECT(-240,-152),
  0,
  0,
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N7S3769C1D1Ev,_ZTvn32_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N7S3769C1D0Ev,_ZTvn32_n16_N7S3769C1D0Ev),
  ABISELECT(-256,-164),
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C1D1Ev,_ZTv0_n12_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C1D0Ev,_ZTv0_n12_N7S3769C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(131,79),
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(-288,-180),
  ABISELECT(-112,-60),
  ABISELECT(-288,-180),
  ABISELECT(-32,-16),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev),
  ABISELECT(-304,-192),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  ABISELECT(-304,-192),
  ABISELECT(-48,-28),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev),
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S3769C1D1Ev,_ZTvn28_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S3769C1D0Ev,_ZTvn28_n16_N7S3769C1D0Ev),
  ABISELECT(-368,-224),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N7S3769C1D1Ev,_ZTvn44_n16_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N7S3769C1D0Ev,_ZTvn44_n16_N7S3769C1D0Ev),
  ABISELECT(16,12),
  ABISELECT(-384,-236),
  ABISELECT(-384,-236),
  ABISELECT(-128,-72),
  ABISELECT(-384,-236),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C1D1Ev,_ZTv0_n20_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C1D0Ev,_ZTv0_n20_N7S3769C1D0Ev),
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  ABISELECT(-408,-252),
  0,
  ABISELECT(11,7),
  ABISELECT(-408,-252),
  (VTBL_ENTRY)&(_ZTI7S3769C1[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C1D1Ev,_ZTv0_n20_N7S3769C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C1D0Ev,_ZTv0_n20_N7S3769C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S3769C1[];
extern void _ZN7S3769C2D1Ev();
extern void _ZN7S3769C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C2__7S3769C1[] = {
  ABISELECT(419,259),
  ABISELECT(408,252),
  ABISELECT(384,236),
  ABISELECT(288,180),
  0,
  ABISELECT(240,152),
  ABISELECT(256,164),
  ABISELECT(176,120),
  ABISELECT(176,120),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN7S3769C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C2D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C2__A1__7S3769C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(224,144),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C127S3769C2__A1__7S3769C1[] = {
  ABISELECT(224,144),
  ABISELECT(224,144),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C138S3769C127S3769C2__A1__7S3769C1[] = {
  0,
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C127S3769C2__A1__7S3769C1[] = {
  0,
  ABISELECT(-224,-144),
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn176_N7S3769C2D1Ev,_ZThn120_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn176_N7S3769C2D0Ev,_ZThn120_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C4__7S3769C2__7S3769C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(64,32),
  0,
  ABISELECT(-176,-120),
  ABISELECT(80,44),
  ABISELECT(-176,-120),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C2D1Ev,_ZTv0_n12_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn256_N7S3769C2D1Ev,_ZThn164_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C2D0Ev,_ZTv0_n12_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn256_N7S3769C2D0Ev,_ZThn164_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C2__7S3769C1[] = {
  ABISELECT(-256,-164),
  ABISELECT(-256,-164),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C2D1Ev,_ZTv0_n12_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C2D0Ev,_ZTv0_n12_N7S3769C2D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTvn64_n32_N7S3769C2D1Ev,_ZTvn32_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn64_n32_N7S3769C2D0Ev,_ZTvn32_n16_N7S3769C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C4__7S3769C2__7S3769C1[] = {
  ABISELECT(-240,-152),
  0,
  0,
  ABISELECT(-240,-152),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N7S3769C2D1Ev,_ZTvn32_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn64_n32_N7S3769C2D0Ev,_ZTvn32_n16_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTvn32_n32_N7S3769C2D1Ev,_ZTvn16_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn32_n32_N7S3769C2D0Ev,_ZTvn16_n16_N7S3769C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt7S3769C4__A1__7S3769C2__7S3769C1[] = {
  ABISELECT(-208,-136),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S3769C2D1Ev,_ZTvn16_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n32_N7S3769C2D0Ev,_ZTvn16_n16_N7S3769C2D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn16_N7S3769C2D1Ev,_ZThn8_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S3769C2D0Ev,_ZThn8_N7S3769C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C12__A1__7S3769C2__7S3769C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(224,144),
  ABISELECT(224,144),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3769C2D1Ev,_ZThn8_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S3769C2D0Ev,_ZThn8_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn288_N7S3769C2D1Ev,_ZThn180_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn288_N7S3769C2D0Ev,_ZThn180_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C15__7S3769C2__7S3769C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(131,79),
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(-288,-180),
  ABISELECT(-112,-60),
  ABISELECT(-288,-180),
  ABISELECT(-32,-16),
  ABISELECT(-288,-180),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn384_N7S3769C2D1Ev,_ZThn236_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn384_N7S3769C2D0Ev,_ZThn236_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C16__7S3769C2__7S3769C1[] = {
  ABISELECT(16,12),
  ABISELECT(-384,-236),
  ABISELECT(-384,-236),
  ABISELECT(-128,-72),
  ABISELECT(-384,-236),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C118S3769C16__A1__7S3769C2__7S3769C1[] = {
  ABISELECT(-400,-248),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn408_N7S3769C2D1Ev,_ZThn252_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn408_N7S3769C2D0Ev,_ZThn252_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C17__7S3769C2__7S3769C1[] = {
  ABISELECT(-408,-252),
  0,
  ABISELECT(11,7),
  ABISELECT(-408,-252),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZThn304_N7S3769C2D1Ev,_ZThn192_N7S3769C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev)();
extern void ABISELECT(_ZThn304_N7S3769C2D0Ev,_ZThn192_N7S3769C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C48S3769C15__A1__7S3769C2__7S3769C1[] = {
  ABISELECT(-304,-192),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  ABISELECT(-304,-192),
  ABISELECT(-48,-28),
  ABISELECT(-304,-192),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTvn48_n32_N7S3769C2D1Ev,_ZTvn28_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn48_n32_N7S3769C2D0Ev,_ZTvn28_n16_N7S3769C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt7S3769C48S3769C15__A2__7S3769C2__7S3769C1[] = {
  ABISELECT(-336,-208),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S3769C2D1Ev,_ZTvn28_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn48_n32_N7S3769C2D0Ev,_ZTvn28_n16_N7S3769C2D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTvn80_n32_N7S3769C2D1Ev,_ZTvn44_n16_N7S3769C2D1Ev)();
extern void ABISELECT(_ZTvn80_n32_N7S3769C2D0Ev,_ZTvn44_n16_N7S3769C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C48S3769C15__A2__7S3769C2__7S3769C1[] = {
  ABISELECT(-368,-224),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-368,-224),
  (VTBL_ENTRY)&(_ZTI7S3769C2[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N7S3769C2D1Ev,_ZTvn44_n16_N7S3769C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn80_n32_N7S3769C2D0Ev,_ZTvn44_n16_N7S3769C2D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void _ZN7S3769C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
extern void _ZN7S3769C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C4__7S3769C1[] = {
  ABISELECT(-176,-120),
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void _ZN7S3769C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
extern void _ZN7S3769C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C57S3769C4__7S3769C1[] = {
  ABISELECT(64,32),
  0,
  0,
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C5D1Ev,_ZThn44_N7S3769C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C5D0Ev,_ZThn44_N7S3769C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C57S3769C4__7S3769C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C57S3769C4__7S3769C1[] = {
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C4__7S3769C1[] = {
  ABISELECT(-240,-152),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C127S3769C4__7S3769C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C4D1Ev,_ZThn44_N7S3769C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C4D0Ev,_ZThn44_N7S3769C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C4__7S3769C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C12__7S3769C4__7S3769C1[] = {
  ABISELECT(-240,-152),
  0,
  0,
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev),
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C1[] = {
  ABISELECT(80,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZThn80_N7S3769C9D1Ev,_ZThn44_N7S3769C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
extern void ABISELECT(_ZThn80_N7S3769C9D0Ev,_ZThn44_N7S3769C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C9__7S3769C1[] = {
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void _ZN8S3769C15D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
extern void _ZN8S3769C15D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C15__7S3769C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(131,79),
  ABISELECT(120,72),
  ABISELECT(96,56),
  ABISELECT(-288,-180),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev)();
extern void _ZN8S3769C18D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev)();
extern void _ZN8S3769C18D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C188S3769C15__7S3769C1[] = {
  ABISELECT(-288,-180),
  ABISELECT(-112,-60),
  0,
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__8S3769C188S3769C15__7S3769C1[] = {
  ABISELECT(112,60),
  ABISELECT(80,44),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C188S3769C15__7S3769C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3769C18[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D1Ev,_ZTv0_n12_N8S3769C18D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C18D0Ev,_ZTv0_n12_N8S3769C18D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void _ZN7S3769C4D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
extern void _ZN7S3769C4D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(-304,-192),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  0,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void _ZN7S3769C5D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
extern void _ZN7S3769C5D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C57S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  0,
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C57S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C57S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C57S3769C48S3769C15__A1__7S3769C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S3769C5[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C12D1Ev();
extern void _ZN8S3769C12D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C48S3769C15__A2__7S3769C1[] = {
  ABISELECT(-368,-224),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C12D0Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C13D1Ev();
extern void _ZN8S3769C13D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C1[] = {
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C13D0Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C1[] = {
  0,
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S3769C13[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__8S3769C127S3769C48S3769C15__A2__7S3769C1[] = {
  0,
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S3769C12[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev)();
extern void ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__7S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(128,72),
  ABISELECT(80,44),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(48,28),
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__7S3769C48S3769C15__A1__7S3769C1[] = {
  0,
  ABISELECT(64,40),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C12__7S3769C48S3769C15__A1__7S3769C1[] = {
  ABISELECT(-368,-224),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S3769C4[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D1Ev,_ZThn32_N7S3769C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn64_N7S3769C4D0Ev,_ZThn32_N7S3769C4D0Ev),
};
extern void ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn96_N8S3769C15D1Ev,_ZThn56_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn96_N8S3769C15D0Ev,_ZThn56_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C16__8S3769C15__7S3769C1[] = {
  ABISELECT(16,12),
  ABISELECT(-96,-56),
  ABISELECT(-384,-236),
  ABISELECT(-128,-72),
  ABISELECT(-96,-56),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C15__7S3769C1[] = {
  ABISELECT(32,16),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C15D1Ev,_ZTv0_n12_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C15D0Ev,_ZTv0_n12_N8S3769C15D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C118S3769C16__8S3769C15__7S3769C1[] = {
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn120_N8S3769C15D1Ev,_ZThn72_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn120_N8S3769C15D0Ev,_ZThn72_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S3769C17__8S3769C15__7S3769C1[] = {
  ABISELECT(-120,-72),
  0,
  ABISELECT(11,7),
  ABISELECT(-120,-72),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev),
};
extern void _ZN8S3769C112v1Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C11__A2__8S3769C15__7S3769C1[] = {
  0,
  ABISELECT(48,28),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
};
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV7S3769C9__A1__8S3769C15__7S3769C1[] = {
  ABISELECT(112,60),
  ABISELECT(80,44),
  ABISELECT(112,60),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
};
extern void ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn16_N8S3769C15D1Ev,_ZThn12_N8S3769C15D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev)();
extern void ABISELECT(_ZThn16_N8S3769C15D0Ev,_ZThn12_N8S3769C15D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S3769C4__8S3769C15__7S3769C1[] = {
  ABISELECT(-304,-192),
  ABISELECT(-64,-40),
  ABISELECT(-128,-72),
  ABISELECT(-16,-12),
  ABISELECT(-48,-28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void ABISELECT(_ZThn80_N8S3769C15D1Ev,_ZThn44_N8S3769C15D1Ev)();
extern void ABISELECT(_ZThn80_N8S3769C15D0Ev,_ZThn44_N8S3769C15D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S3769C127S3769C4__8S3769C15__7S3769C1[] = {
  ABISELECT(-368,-224),
  ABISELECT(-128,-72),
  ABISELECT(-128,-72),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S3769C15[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3769C15D1Ev,_ZThn44_N8S3769C15D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn80_N8S3769C15D0Ev,_ZThn44_N8S3769C15D0Ev),
};
extern void _ZN8S3769C16D1Ev();
extern void _ZN8S3769C16D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C16__7S3769C1[] = {
  ABISELECT(-384,-236),
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&_ZN8S3769C16D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C16D0Ev,
};
extern void _ZN7S3769C9D1Ev();
extern void _ZN7S3769C9D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3769C98S3769C16__A1__7S3769C1[] = {
  ABISELECT(-128,-72),
  0,
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&_ZN7S3769C9D1Ev,
  (VTBL_ENTRY)&_ZN7S3769C9D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev)();
extern void ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S3769C98S3769C16__A1__7S3769C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI7S3769C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev)();
extern void ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev)();
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S3769C16__7S3769C1[] = {
  ABISELECT(128,72),
  ABISELECT(128,72),
  (VTBL_ENTRY)&(_ZTI8S3769C16[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D1Ev,_ZTv0_n12_N8S3769C16D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S3769C16D0Ev,_ZTv0_n12_N8S3769C16D0Ev),
};
extern void _ZN8S3769C112v1Ev();
extern void _ZN8S3769C17D1Ev();
extern void _ZN8S3769C17D0Ev();
static  VTBL_ENTRY _tg__ZTV8S3769C17__7S3769C1[] = {
  ABISELECT(11,7),
  0,
  (VTBL_ENTRY)&(_ZTI8S3769C17[0]),
  (VTBL_ENTRY)&_ZN8S3769C112v1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D1Ev,
  (VTBL_ENTRY)&_ZN8S3769C17D0Ev,
};
static  VTT_ENTRY vtt_S3769C1[] = {
  {&(_ZTV7S3769C1[11]),  11,99},
  {&(_tg__ZTV7S3769C2__7S3769C1[11]),  11,13},
  {&(_tg__ZTV8S3769C127S3769C2__A1__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C127S3769C2__A1__7S3769C1[4]),  4,7},
  {&(_tg__ZTV8S3769C11__8S3769C138S3769C127S3769C2__A1__7S3769C1[3]),  3,4},
  {&(_tg__ZTV8S3769C11__8S3769C127S3769C2__A1__7S3769C1[3]),  3,4},
  {&(_tg__ZTV7S3769C4__7S3769C2__7S3769C1[7]),  7,9},
  {&(_tg__ZTV7S3769C4__7S3769C2__7S3769C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__7S3769C2__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C127S3769C4__7S3769C2__7S3769C1[5]),  5,8},
  {&(_tg__ZTV11S20948C7_nt7S3769C4__A1__7S3769C2__7S3769C1[2]),  2,4},
  {&(_tg__ZTV8S3769C127S3769C4__7S3769C2__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C12__A1__7S3769C2__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C15__7S3769C2__7S3769C1[10]),  10,12},
  {&(_tg__ZTV8S3769C16__7S3769C2__7S3769C1[6]),  6,8},
  {&(_tg__ZTV8S3769C118S3769C16__A1__7S3769C2__7S3769C1[2]),  2,3},
  {&(_tg__ZTV8S3769C17__7S3769C2__7S3769C1[5]),  5,8},
  {&(_tg__ZTV7S3769C48S3769C15__A1__7S3769C2__7S3769C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt7S3769C48S3769C15__A2__7S3769C2__7S3769C1[2]),  2,4},
  {&(_tg__ZTV8S3769C127S3769C48S3769C15__A2__7S3769C2__7S3769C1[5]),  5,8},
  {&(_ZTV7S3769C1[28]),  28,99},
  {&(_ZTV7S3769C1[28]),  28,99},
  {&(_ZTV7S3769C1[45]),  45,99},
  {&(_ZTV7S3769C1[39]),  39,99},
  {&(_ZTV7S3769C1[32]),  32,99},
  {&(_ZTV7S3769C1[39]),  39,99},
  {&(_ZTV7S3769C1[18]),  18,99},
  {&(_ZTV7S3769C1[57]),  57,99},
  {&(_ZTV7S3769C1[86]),  86,99},
  {&(_ZTV7S3769C1[90]),  90,99},
  {&(_ZTV7S3769C1[96]),  96,99},
  {&(_ZTV7S3769C1[66]),  66,99},
  {&(_ZTV7S3769C1[70]),  70,99},
  {&(_ZTV7S3769C1[77]),  77,99},
  {&(_tg__ZTV7S3769C4__7S3769C1[7]),  7,9},
  {&(_tg__ZTV7S3769C57S3769C4__7S3769C1[6]),  6,8},
  {&(_tg__ZTV7S3769C57S3769C4__7S3769C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__7S3769C57S3769C4__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C57S3769C4__7S3769C1[3]),  3,4},
  {&(_tg__ZTV8S3769C127S3769C4__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C127S3769C4__7S3769C1[4]),  4,7},
  {&(_tg__ZTV8S3769C138S3769C127S3769C4__7S3769C1[4]),  4,7},
  {&(_tg__ZTV8S3769C127S3769C4__7S3769C1[5]),  5,8},
  {&(_tg__ZTV7S3769C4__7S3769C1[7]),  7,9},
  {&(_tg__ZTV11S20948C7_nt__7S3769C4__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C12__7S3769C4__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C12__7S3769C4__7S3769C1[5]),  5,8},
  {&(_tg__ZTV7S3769C9__7S3769C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C9__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C15__7S3769C1[10]),  10,12},
  {&(_tg__ZTV8S3769C188S3769C15__7S3769C1[6]),  6,8},
  {&(_tg__ZTV7S3769C9__8S3769C188S3769C15__7S3769C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__8S3769C188S3769C15__7S3769C1[3]),  3,5},
  {&(_tg__ZTV7S3769C48S3769C15__A1__7S3769C1[7]),  7,9},
  {&(_tg__ZTV7S3769C57S3769C48S3769C15__A1__7S3769C1[6]),  6,8},
  {&(_tg__ZTV7S3769C9__7S3769C57S3769C48S3769C15__A1__7S3769C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__7S3769C57S3769C48S3769C15__A1__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C57S3769C48S3769C15__A1__7S3769C1[3]),  3,4},
  {&(_tg__ZTV8S3769C127S3769C48S3769C15__A2__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C1[4]),  4,7},
  {&(_tg__ZTV8S3769C11__8S3769C138S3769C127S3769C48S3769C15__A2__7S3769C1[3]),  3,4},
  {&(_tg__ZTV8S3769C11__8S3769C127S3769C48S3769C15__A2__7S3769C1[3]),  3,4},
  {&(_tg__ZTV7S3769C9__7S3769C48S3769C15__A1__7S3769C1[4]),  4,6},
  {&(_tg__ZTV11S20948C7_nt__7S3769C48S3769C15__A1__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C11__7S3769C48S3769C15__A1__7S3769C1[3]),  3,4},
  {&(_tg__ZTV8S3769C12__7S3769C48S3769C15__A1__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C16__8S3769C15__7S3769C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__8S3769C15__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C118S3769C16__8S3769C15__7S3769C1[2]),  2,3},
  {&(_tg__ZTV8S3769C17__8S3769C15__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C11__A2__8S3769C15__7S3769C1[3]),  3,4},
  {&(_tg__ZTV7S3769C9__A1__8S3769C15__7S3769C1[4]),  4,6},
  {&(_tg__ZTV7S3769C4__8S3769C15__7S3769C1[7]),  7,9},
  {&(_tg__ZTV8S3769C127S3769C4__8S3769C15__7S3769C1[5]),  5,8},
  {&(_tg__ZTV8S3769C16__7S3769C1[4]),  4,6},
  {&(_tg__ZTV7S3769C98S3769C16__A1__7S3769C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__7S3769C98S3769C16__A1__7S3769C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S3769C16__7S3769C1[3]),  3,5},
  {&(_tg__ZTV8S3769C17__7S3769C1[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S3769C1[];
extern  VTBL_ENTRY _ZTV7S3769C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3769C1[];
static VTBL_ENTRY alt_thunk_names93[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3769C15D0Ev,_ZTv0_n20_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3769C15D0Ev,_ZThn72_N8S3769C15D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3769C15D0Ev,_ZThn56_N8S3769C15D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S3769C15D1Ev,_ZTv0_n20_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn120_N8S3769C15D1Ev,_ZThn72_N8S3769C15D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S3769C15D1Ev,_ZThn56_N8S3769C15D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C18D0Ev,_ZTv0_n16_N8S3769C18D0Ev), // 
  (VTBL_ENTRY)_ZN8S3769C18D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C18D1Ev,_ZTv0_n16_N8S3769C18D1Ev), // 
  (VTBL_ENTRY)_ZN8S3769C18D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C15D0Ev,_ZTv0_n16_N8S3769C15D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C15D0Ev,_ZThn12_N8S3769C15D0Ev),
  (VTBL_ENTRY)_ZN8S3769C15D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S3769C15D1Ev,_ZTv0_n16_N8S3769C15D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S3769C15D1Ev,_ZThn12_N8S3769C15D1Ev),
  (VTBL_ENTRY)_ZN8S3769C15D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D0Ev,_ZTv0_n12_N7S3769C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C9D0Ev,_ZThn44_N7S3769C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C9D1Ev,_ZTv0_n12_N7S3769C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C9D1Ev,_ZThn44_N7S3769C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D0Ev,_ZTv0_n12_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C4D0Ev,_ZThn44_N7S3769C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C4D1Ev,_ZTv0_n12_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C4D1Ev,_ZThn44_N7S3769C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D0Ev,_ZTv0_n12_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C5D0Ev,_ZThn44_N7S3769C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C5D1Ev,_ZTv0_n12_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S3769C5D1Ev,_ZThn44_N7S3769C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C5D0Ev,_ZTv0_n16_N7S3769C5D0Ev), // 
  (VTBL_ENTRY)_ZN7S3769C5D0Ev,
  (VTBL_ENTRY)_ZN7S3769C5D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C5D1Ev,_ZTv0_n16_N7S3769C5D1Ev), // 
  (VTBL_ENTRY)_ZN7S3769C5D1Ev,
  (VTBL_ENTRY)_ZN7S3769C5D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C4D0Ev,_ZTv0_n16_N7S3769C4D0Ev), // 
  (VTBL_ENTRY)_ZN7S3769C4D0Ev,
  (VTBL_ENTRY)_ZN7S3769C4D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C4D1Ev,_ZTv0_n16_N7S3769C4D1Ev), // 
  (VTBL_ENTRY)_ZN7S3769C4D1Ev,
  (VTBL_ENTRY)_ZN7S3769C4D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3769C2D0Ev,_ZTv0_n20_N7S3769C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3769C2D0Ev,_ZThn252_N7S3769C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S3769C2D0Ev,_ZThn236_N7S3769C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3769C2D1Ev,_ZTv0_n20_N7S3769C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3769C2D1Ev,_ZThn252_N7S3769C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S3769C2D1Ev,_ZThn236_N7S3769C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C2D0Ev,_ZTv0_n12_N7S3769C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3769C2D0Ev,_ZThn164_N7S3769C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C2D1Ev,_ZTv0_n12_N7S3769C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3769C2D1Ev,_ZThn164_N7S3769C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C2D0Ev,_ZTv0_n16_N7S3769C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3769C2D0Ev,_ZThn192_N7S3769C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S3769C2D0Ev,_ZThn180_N7S3769C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3769C2D0Ev,_ZThn120_N7S3769C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C2D1Ev,_ZTv0_n16_N7S3769C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3769C2D1Ev,_ZThn192_N7S3769C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S3769C2D1Ev,_ZThn180_N7S3769C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3769C2D1Ev,_ZThn120_N7S3769C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3769C1D0Ev,_ZTv0_n20_N7S3769C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3769C1D0Ev,_ZThn252_N7S3769C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S3769C1D0Ev,_ZThn236_N7S3769C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S3769C1D1Ev,_ZTv0_n20_N7S3769C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn408_N7S3769C1D1Ev,_ZThn252_N7S3769C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn384_N7S3769C1D1Ev,_ZThn236_N7S3769C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C1D0Ev,_ZTv0_n12_N7S3769C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3769C1D0Ev,_ZThn164_N7S3769C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S3769C1D1Ev,_ZTv0_n12_N7S3769C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn256_N7S3769C1D1Ev,_ZThn164_N7S3769C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C1D0Ev,_ZTv0_n16_N7S3769C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3769C1D0Ev,_ZThn192_N7S3769C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S3769C1D0Ev,_ZThn180_N7S3769C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3769C1D0Ev,_ZThn120_N7S3769C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3769C1D1Ev,_ZTv0_n16_N7S3769C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn304_N7S3769C1D1Ev,_ZThn192_N7S3769C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn288_N7S3769C1D1Ev,_ZThn180_N7S3769C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S3769C1D1Ev,_ZThn120_N7S3769C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3769C1 = {  "S3769C1", // class name
  bases_S3769C1, 41,
  &(vtc_S3769C1[0]), // expected_vtbl_contents
  &(vtt_S3769C1[0]), // expected_vtt_contents
  ABISELECT(432,260), // object size
  NSPAIRA(_ZTI7S3769C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3769C1),99, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3769C1),79, //virtual table table var
  24, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names93,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9132C2_nt  {
  virtual  ~S9132C2_nt(); // _ZN10S9132C2_ntD1Ev
  virtual void  v22(); // _ZN10S9132C2_nt3v22Ev
  virtual void  v23(); // _ZN10S9132C2_nt3v23Ev
  virtual void  v24(); // _ZN10S9132C2_nt3v24Ev
  virtual void  v25(); // _ZN10S9132C2_nt3v25Ev
  virtual void  v26(); // _ZN10S9132C2_nt3v26Ev
  virtual void  v27(); // _ZN10S9132C2_nt3v27Ev
  virtual void  v28(); // _ZN10S9132C2_nt3v28Ev
  virtual void  v29(); // _ZN10S9132C2_nt3v29Ev
  virtual void  v30(); // _ZN10S9132C2_nt3v30Ev
  virtual void  v31(); // _ZN10S9132C2_nt3v31Ev
  virtual void  v32(); // _ZN10S9132C2_nt3v32Ev
  virtual void  v33(); // _ZN10S9132C2_nt3v33Ev
  virtual void  v34(); // _ZN10S9132C2_nt3v34Ev
  virtual void  v35(); // _ZN10S9132C2_nt3v35Ev
  virtual void  v36(); // _ZN10S9132C2_nt3v36Ev
  virtual void  v37(); // _ZN10S9132C2_nt3v37Ev
  virtual void  v38(); // _ZN10S9132C2_nt3v38Ev
  virtual void  v39(); // _ZN10S9132C2_nt3v39Ev
  virtual void  v40(); // _ZN10S9132C2_nt3v40Ev
  virtual void  v41(); // _ZN10S9132C2_nt3v41Ev
  virtual void  v42(); // _ZN10S9132C2_nt3v42Ev
  virtual void  v43(); // _ZN10S9132C2_nt3v43Ev
  virtual void  v44(); // _ZN10S9132C2_nt3v44Ev
  virtual void  v45(); // _ZN10S9132C2_nt3v45Ev
  virtual void  v46(); // _ZN10S9132C2_nt3v46Ev
  virtual void  v47(); // _ZN10S9132C2_nt3v47Ev
  S9132C2_nt(); // tgen
};
//SIG(-1 S9132C2_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}


 S9132C2_nt ::~S9132C2_nt(){ note_dtor("S9132C2_nt", this);}
void  S9132C2_nt ::v22(){vfunc_called(this, "_ZN10S9132C2_nt3v22Ev");}
void  S9132C2_nt ::v23(){vfunc_called(this, "_ZN10S9132C2_nt3v23Ev");}
void  S9132C2_nt ::v24(){vfunc_called(this, "_ZN10S9132C2_nt3v24Ev");}
void  S9132C2_nt ::v25(){vfunc_called(this, "_ZN10S9132C2_nt3v25Ev");}
void  S9132C2_nt ::v26(){vfunc_called(this, "_ZN10S9132C2_nt3v26Ev");}
void  S9132C2_nt ::v27(){vfunc_called(this, "_ZN10S9132C2_nt3v27Ev");}
void  S9132C2_nt ::v28(){vfunc_called(this, "_ZN10S9132C2_nt3v28Ev");}
void  S9132C2_nt ::v29(){vfunc_called(this, "_ZN10S9132C2_nt3v29Ev");}
void  S9132C2_nt ::v30(){vfunc_called(this, "_ZN10S9132C2_nt3v30Ev");}
void  S9132C2_nt ::v31(){vfunc_called(this, "_ZN10S9132C2_nt3v31Ev");}
void  S9132C2_nt ::v32(){vfunc_called(this, "_ZN10S9132C2_nt3v32Ev");}
void  S9132C2_nt ::v33(){vfunc_called(this, "_ZN10S9132C2_nt3v33Ev");}
void  S9132C2_nt ::v34(){vfunc_called(this, "_ZN10S9132C2_nt3v34Ev");}
void  S9132C2_nt ::v35(){vfunc_called(this, "_ZN10S9132C2_nt3v35Ev");}
void  S9132C2_nt ::v36(){vfunc_called(this, "_ZN10S9132C2_nt3v36Ev");}
void  S9132C2_nt ::v37(){vfunc_called(this, "_ZN10S9132C2_nt3v37Ev");}
void  S9132C2_nt ::v38(){vfunc_called(this, "_ZN10S9132C2_nt3v38Ev");}
void  S9132C2_nt ::v39(){vfunc_called(this, "_ZN10S9132C2_nt3v39Ev");}
void  S9132C2_nt ::v40(){vfunc_called(this, "_ZN10S9132C2_nt3v40Ev");}
void  S9132C2_nt ::v41(){vfunc_called(this, "_ZN10S9132C2_nt3v41Ev");}
void  S9132C2_nt ::v42(){vfunc_called(this, "_ZN10S9132C2_nt3v42Ev");}
void  S9132C2_nt ::v43(){vfunc_called(this, "_ZN10S9132C2_nt3v43Ev");}
void  S9132C2_nt ::v44(){vfunc_called(this, "_ZN10S9132C2_nt3v44Ev");}
void  S9132C2_nt ::v45(){vfunc_called(this, "_ZN10S9132C2_nt3v45Ev");}
void  S9132C2_nt ::v46(){vfunc_called(this, "_ZN10S9132C2_nt3v46Ev");}
void  S9132C2_nt ::v47(){vfunc_called(this, "_ZN10S9132C2_nt3v47Ev");}
S9132C2_nt ::S9132C2_nt(){ note_ctor("S9132C2_nt", this);} // tgen

//skip512 S9132C2_nt

#else // __cplusplus

extern void _ZN10S9132C2_ntC1Ev();
extern void _ZN10S9132C2_ntD1Ev();
Name_Map name_map_S9132C2_nt[] = {
  NSPAIR(_ZN10S9132C2_ntC1Ev),
  NSPAIR(_ZN10S9132C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S9132C2_nt[];
extern void _ZN10S9132C2_ntD1Ev();
extern void _ZN10S9132C2_ntD0Ev();
extern void _ZN10S9132C2_nt3v22Ev();
extern void _ZN10S9132C2_nt3v23Ev();
extern void _ZN10S9132C2_nt3v24Ev();
extern void _ZN10S9132C2_nt3v25Ev();
extern void _ZN10S9132C2_nt3v26Ev();
extern void _ZN10S9132C2_nt3v27Ev();
extern void _ZN10S9132C2_nt3v28Ev();
extern void _ZN10S9132C2_nt3v29Ev();
extern void _ZN10S9132C2_nt3v30Ev();
extern void _ZN10S9132C2_nt3v31Ev();
extern void _ZN10S9132C2_nt3v32Ev();
extern void _ZN10S9132C2_nt3v33Ev();
extern void _ZN10S9132C2_nt3v34Ev();
extern void _ZN10S9132C2_nt3v35Ev();
extern void _ZN10S9132C2_nt3v36Ev();
extern void _ZN10S9132C2_nt3v37Ev();
extern void _ZN10S9132C2_nt3v38Ev();
extern void _ZN10S9132C2_nt3v39Ev();
extern void _ZN10S9132C2_nt3v40Ev();
extern void _ZN10S9132C2_nt3v41Ev();
extern void _ZN10S9132C2_nt3v42Ev();
extern void _ZN10S9132C2_nt3v43Ev();
extern void _ZN10S9132C2_nt3v44Ev();
extern void _ZN10S9132C2_nt3v45Ev();
extern void _ZN10S9132C2_nt3v46Ev();
extern void _ZN10S9132C2_nt3v47Ev();
static  VTBL_ENTRY vtc_S9132C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S9132C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S9132C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v47Ev,
};
extern VTBL_ENTRY _ZTI10S9132C2_nt[];
VTBL_ENTRY *P__ZTI10S9132C2_nt = _ZTI10S9132C2_nt; 
extern  VTBL_ENTRY _ZTV10S9132C2_nt[];
Class_Descriptor cd_S9132C2_nt = {  "S9132C2_nt", // class name
  0,0,//no base classes
  &(vtc_S9132C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S9132C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S9132C2_nt),30, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9132C1  : S9132C2_nt {
  void *s9132c1f0;
  int s9132c1f1[2];
  char s9132c1f2;
  int s9132c1f3[2];
  ::S10296C46_nt s9132c1f4;
  int s9132c1f5;
  char s9132c1f6[4];
  ::S9624C14_nt s9132c1f7;
  virtual  ~S9132C1(); // _ZN7S9132C1D1Ev
  virtual void  v1(); // _ZN7S9132C12v1Ev
  virtual void  v2(); // _ZN7S9132C12v2Ev
  virtual void  v3(); // _ZN7S9132C12v3Ev
  virtual void  v4(); // _ZN7S9132C12v4Ev
  virtual void  v5(); // _ZN7S9132C12v5Ev
  virtual void  v6(); // _ZN7S9132C12v6Ev
  virtual void  v7(); // _ZN7S9132C12v7Ev
  virtual void  v8(); // _ZN7S9132C12v8Ev
  virtual void  v9(); // _ZN7S9132C12v9Ev
  virtual void  v10(); // _ZN7S9132C13v10Ev
  virtual void  v11(); // _ZN7S9132C13v11Ev
  virtual void  v12(); // _ZN7S9132C13v12Ev
  virtual void  v13(); // _ZN7S9132C13v13Ev
  virtual void  v14(); // _ZN7S9132C13v14Ev
  virtual void  v15(); // _ZN7S9132C13v15Ev
  virtual void  v16(); // _ZN7S9132C13v16Ev
  virtual void  v17(); // _ZN7S9132C13v17Ev
  virtual void  v18(); // _ZN7S9132C13v18Ev
  virtual void  v19(); // _ZN7S9132C13v19Ev
  virtual void  v20(); // _ZN7S9132C13v20Ev
  virtual void  v21(); // _ZN7S9132C13v21Ev
  S9132C1(); // tgen
};
//SIG(1 S9132C1) C1{ BC2{ vd 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} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 Fp Fi[2] Fc Fi[2] FC3{ m FC4{ m FL}} Fi Fc[4] FC5{ m Fp Fi FC6{ m}}}


 S9132C1 ::~S9132C1(){ note_dtor("S9132C1", this);}
void  S9132C1 ::v1(){vfunc_called(this, "_ZN7S9132C12v1Ev");}
void  S9132C1 ::v2(){vfunc_called(this, "_ZN7S9132C12v2Ev");}
void  S9132C1 ::v3(){vfunc_called(this, "_ZN7S9132C12v3Ev");}
void  S9132C1 ::v4(){vfunc_called(this, "_ZN7S9132C12v4Ev");}
void  S9132C1 ::v5(){vfunc_called(this, "_ZN7S9132C12v5Ev");}
void  S9132C1 ::v6(){vfunc_called(this, "_ZN7S9132C12v6Ev");}
void  S9132C1 ::v7(){vfunc_called(this, "_ZN7S9132C12v7Ev");}
void  S9132C1 ::v8(){vfunc_called(this, "_ZN7S9132C12v8Ev");}
void  S9132C1 ::v9(){vfunc_called(this, "_ZN7S9132C12v9Ev");}
void  S9132C1 ::v10(){vfunc_called(this, "_ZN7S9132C13v10Ev");}
void  S9132C1 ::v11(){vfunc_called(this, "_ZN7S9132C13v11Ev");}
void  S9132C1 ::v12(){vfunc_called(this, "_ZN7S9132C13v12Ev");}
void  S9132C1 ::v13(){vfunc_called(this, "_ZN7S9132C13v13Ev");}
void  S9132C1 ::v14(){vfunc_called(this, "_ZN7S9132C13v14Ev");}
void  S9132C1 ::v15(){vfunc_called(this, "_ZN7S9132C13v15Ev");}
void  S9132C1 ::v16(){vfunc_called(this, "_ZN7S9132C13v16Ev");}
void  S9132C1 ::v17(){vfunc_called(this, "_ZN7S9132C13v17Ev");}
void  S9132C1 ::v18(){vfunc_called(this, "_ZN7S9132C13v18Ev");}
void  S9132C1 ::v19(){vfunc_called(this, "_ZN7S9132C13v19Ev");}
void  S9132C1 ::v20(){vfunc_called(this, "_ZN7S9132C13v20Ev");}
void  S9132C1 ::v21(){vfunc_called(this, "_ZN7S9132C13v21Ev");}
S9132C1 ::S9132C1(){ note_ctor("S9132C1", this);} // tgen

static void Test_S9132C1()
{
  extern Class_Descriptor cd_S9132C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S9132C1, buf);
    S9132C1 *dp, &lv = *(dp=new (buf) S9132C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S9132C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9132C1)");
    check_base_class_offset(lv, (S9132C2_nt*), 0, "S9132C1");
    check_field_offset(lv, s9132c1f0, ABISELECT(8,4), "S9132C1.s9132c1f0");
    check_field_offset(lv, s9132c1f1, ABISELECT(16,8), "S9132C1.s9132c1f1");
    check_field_offset(lv, s9132c1f2, ABISELECT(24,16), "S9132C1.s9132c1f2");
    check_field_offset(lv, s9132c1f3, ABISELECT(28,20), "S9132C1.s9132c1f3");
    check_field_offset(lv, s9132c1f4, ABISELECT(40,28), "S9132C1.s9132c1f4");
    check_field_offset(lv, s9132c1f5, ABISELECT(48,36), "S9132C1.s9132c1f5");
    check_field_offset(lv, s9132c1f6, ABISELECT(52,40), "S9132C1.s9132c1f6");
    check_field_offset(lv, s9132c1f7, ABISELECT(56,44), "S9132C1.s9132c1f7");
    test_class_info(&lv, &cd_S9132C1);
    dp->~S9132C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9132C1(Test_S9132C1, "S9132C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S9132C1C1Ev();
extern void _ZN7S9132C1D1Ev();
Name_Map name_map_S9132C1[] = {
  NSPAIR(_ZN7S9132C1C1Ev),
  NSPAIR(_ZN7S9132C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9132C2_nt;
extern VTBL_ENTRY _ZTI10S9132C2_nt[];
extern  VTBL_ENTRY _ZTV10S9132C2_nt[];
static Base_Class bases_S9132C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9132C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9132C1[];
extern void _ZN7S9132C1D1Ev();
extern void _ZN7S9132C1D0Ev();
extern void _ZN10S9132C2_nt3v22Ev();
extern void _ZN10S9132C2_nt3v23Ev();
extern void _ZN10S9132C2_nt3v24Ev();
extern void _ZN10S9132C2_nt3v25Ev();
extern void _ZN10S9132C2_nt3v26Ev();
extern void _ZN10S9132C2_nt3v27Ev();
extern void _ZN10S9132C2_nt3v28Ev();
extern void _ZN10S9132C2_nt3v29Ev();
extern void _ZN10S9132C2_nt3v30Ev();
extern void _ZN10S9132C2_nt3v31Ev();
extern void _ZN10S9132C2_nt3v32Ev();
extern void _ZN10S9132C2_nt3v33Ev();
extern void _ZN10S9132C2_nt3v34Ev();
extern void _ZN10S9132C2_nt3v35Ev();
extern void _ZN10S9132C2_nt3v36Ev();
extern void _ZN10S9132C2_nt3v37Ev();
extern void _ZN10S9132C2_nt3v38Ev();
extern void _ZN10S9132C2_nt3v39Ev();
extern void _ZN10S9132C2_nt3v40Ev();
extern void _ZN10S9132C2_nt3v41Ev();
extern void _ZN10S9132C2_nt3v42Ev();
extern void _ZN10S9132C2_nt3v43Ev();
extern void _ZN10S9132C2_nt3v44Ev();
extern void _ZN10S9132C2_nt3v45Ev();
extern void _ZN10S9132C2_nt3v46Ev();
extern void _ZN10S9132C2_nt3v47Ev();
extern void _ZN7S9132C12v1Ev();
extern void _ZN7S9132C12v2Ev();
extern void _ZN7S9132C12v3Ev();
extern void _ZN7S9132C12v4Ev();
extern void _ZN7S9132C12v5Ev();
extern void _ZN7S9132C12v6Ev();
extern void _ZN7S9132C12v7Ev();
extern void _ZN7S9132C12v8Ev();
extern void _ZN7S9132C12v9Ev();
extern void _ZN7S9132C13v10Ev();
extern void _ZN7S9132C13v11Ev();
extern void _ZN7S9132C13v12Ev();
extern void _ZN7S9132C13v13Ev();
extern void _ZN7S9132C13v14Ev();
extern void _ZN7S9132C13v15Ev();
extern void _ZN7S9132C13v16Ev();
extern void _ZN7S9132C13v17Ev();
extern void _ZN7S9132C13v18Ev();
extern void _ZN7S9132C13v19Ev();
extern void _ZN7S9132C13v20Ev();
extern void _ZN7S9132C13v21Ev();
static  VTBL_ENTRY vtc_S9132C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9132C1[0]),
  (VTBL_ENTRY)&_ZN7S9132C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9132C1D0Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v31Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v32Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v33Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v34Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v35Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v36Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v37Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v38Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v39Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v40Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v41Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v42Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v43Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v44Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v45Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v46Ev,
  (VTBL_ENTRY)&_ZN10S9132C2_nt3v47Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v4Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v5Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v6Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v7Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v8Ev,
  (VTBL_ENTRY)&_ZN7S9132C12v9Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v10Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v11Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v12Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v13Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v14Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v15Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v16Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v17Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v18Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v19Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v20Ev,
  (VTBL_ENTRY)&_ZN7S9132C13v21Ev,
};
extern VTBL_ENTRY _ZTI7S9132C1[];
extern  VTBL_ENTRY _ZTV7S9132C1[];
Class_Descriptor cd_S9132C1 = {  "S9132C1", // class name
  bases_S9132C1, 1,
  &(vtc_S9132C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S9132C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9132C1),51, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual 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  S1254C3_nt  : S9624C48 {
  virtual  ~S1254C3_nt(); // _ZN10S1254C3_ntD1Ev
  virtual void  v7(); // _ZN10S1254C3_nt2v7Ev
  S1254C3_nt(); // tgen
};
//SIG(-1 S1254C3_nt) C1{ BC2{ m} vd v1}


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

//skip512 S1254C3_nt

#else // __cplusplus

extern void _ZN10S1254C3_ntC1Ev();
extern void _ZN10S1254C3_ntD1Ev();
Name_Map name_map_S1254C3_nt[] = {
  NSPAIR(_ZN10S1254C3_ntC1Ev),
  NSPAIR(_ZN10S1254C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S1254C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
extern void _ZN10S1254C3_ntD1Ev();
extern void _ZN10S1254C3_ntD0Ev();
extern void _ZN10S1254C3_nt2v7Ev();
static  VTBL_ENTRY vtc_S1254C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1254C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S1254C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_nt2v7Ev,
};
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
VTBL_ENTRY *P__ZTI10S1254C3_nt = _ZTI10S1254C3_nt; 
extern  VTBL_ENTRY _ZTV10S1254C3_nt[];
Class_Descriptor cd_S1254C3_nt = {  "S1254C3_nt", // class name
  bases_S1254C3_nt, 1,
  &(vtc_S1254C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1254C3_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1254C3_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  S1254C2_nt  : S1254C3_nt {
  char s1254c2f0[112];
  virtual  ~S1254C2_nt(); // _ZN10S1254C2_ntD1Ev
  virtual void  v8(); // _ZN10S1254C2_nt2v8Ev
  virtual void  v9(); // _ZN10S1254C2_nt2v9Ev
  virtual void  v10(); // _ZN10S1254C2_nt3v10Ev
  virtual void  v11(); // _ZN10S1254C2_nt3v11Ev
  virtual void  v12(); // _ZN10S1254C2_nt3v12Ev
  S1254C2_nt(); // tgen
};
//SIG(-1 S1254C2_nt) C1{ BC2{ BC3{ m} vd v6} vd v1 v2 v3 v4 v5 Fc[112]}


 S1254C2_nt ::~S1254C2_nt(){ note_dtor("S1254C2_nt", this);}
void  S1254C2_nt ::v8(){vfunc_called(this, "_ZN10S1254C2_nt2v8Ev");}
void  S1254C2_nt ::v9(){vfunc_called(this, "_ZN10S1254C2_nt2v9Ev");}
void  S1254C2_nt ::v10(){vfunc_called(this, "_ZN10S1254C2_nt3v10Ev");}
void  S1254C2_nt ::v11(){vfunc_called(this, "_ZN10S1254C2_nt3v11Ev");}
void  S1254C2_nt ::v12(){vfunc_called(this, "_ZN10S1254C2_nt3v12Ev");}
S1254C2_nt ::S1254C2_nt(){ note_ctor("S1254C2_nt", this);} // tgen

//skip512 S1254C2_nt

#else // __cplusplus

extern void _ZN10S1254C2_ntC1Ev();
extern void _ZN10S1254C2_ntD1Ev();
Name_Map name_map_S1254C2_nt[] = {
  NSPAIR(_ZN10S1254C2_ntC1Ev),
  NSPAIR(_ZN10S1254C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1254C3_nt;
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
extern  VTBL_ENTRY _ZTV10S1254C3_nt[];
static Base_Class bases_S1254C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1254C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1254C2_nt[];
extern void _ZN10S1254C2_ntD1Ev();
extern void _ZN10S1254C2_ntD0Ev();
extern void _ZN10S1254C3_nt2v7Ev();
extern void _ZN10S1254C2_nt2v8Ev();
extern void _ZN10S1254C2_nt2v9Ev();
extern void _ZN10S1254C2_nt3v10Ev();
extern void _ZN10S1254C2_nt3v11Ev();
extern void _ZN10S1254C2_nt3v12Ev();
static  VTBL_ENTRY vtc_S1254C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1254C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1254C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S1254C2_nt[];
VTBL_ENTRY *P__ZTI10S1254C2_nt = _ZTI10S1254C2_nt; 
extern  VTBL_ENTRY _ZTV10S1254C2_nt[];
Class_Descriptor cd_S1254C2_nt = {  "S1254C2_nt", // class name
  bases_S1254C2_nt, 2,
  &(vtc_S1254C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,116), // object size
  NSPAIRA(_ZTI10S1254C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1254C2_nt),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1254C5_nt  : S1254C3_nt {
  char s1254c5f0[22];
  int s1254c5f1;
  void *s1254c5f2;
  char s1254c5f3[56];
  void *s1254c5f4;
  char s1254c5f5[57];
  virtual  ~S1254C5_nt(); // _ZN10S1254C5_ntD1Ev
  virtual void  v13(); // _ZN10S1254C5_nt3v13Ev
  S1254C5_nt(); // tgen
};
//SIG(-1 S1254C5_nt) C1{ BC2{ BC3{ m} vd v2} vd v1 Fc[22] Fi Fp Fc[56] Fp Fc[57]}


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

//skip512 S1254C5_nt

#else // __cplusplus

extern void _ZN10S1254C5_ntC1Ev();
extern void _ZN10S1254C5_ntD1Ev();
Name_Map name_map_S1254C5_nt[] = {
  NSPAIR(_ZN10S1254C5_ntC1Ev),
  NSPAIR(_ZN10S1254C5_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1254C3_nt;
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
extern  VTBL_ENTRY _ZTV10S1254C3_nt[];
static Base_Class bases_S1254C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1254C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1254C5_nt[];
extern void _ZN10S1254C5_ntD1Ev();
extern void _ZN10S1254C5_ntD0Ev();
extern void _ZN10S1254C3_nt2v7Ev();
extern void _ZN10S1254C5_nt3v13Ev();
static  VTBL_ENTRY vtc_S1254C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1254C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S1254C5_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1254C5_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1254C5_nt3v13Ev,
};
extern VTBL_ENTRY _ZTI10S1254C5_nt[];
VTBL_ENTRY *P__ZTI10S1254C5_nt = _ZTI10S1254C5_nt; 
extern  VTBL_ENTRY _ZTV10S1254C5_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1254C7_nt  : S1254C3_nt {
  virtual  ~S1254C7_nt(); // _ZN10S1254C7_ntD1Ev
  virtual void  v23(); // _ZN10S1254C7_nt3v23Ev
  virtual void  v24(); // _ZN10S1254C7_nt3v24Ev
  virtual void  v25(); // _ZN10S1254C7_nt3v25Ev
  virtual void  v26(); // _ZN10S1254C7_nt3v26Ev
  virtual void  v27(); // _ZN10S1254C7_nt3v27Ev
  virtual void  v28(); // _ZN10S1254C7_nt3v28Ev
  virtual void  v29(); // _ZN10S1254C7_nt3v29Ev
  virtual void  v30(); // _ZN10S1254C7_nt3v30Ev
  S1254C7_nt(); // tgen
};
//SIG(-1 S1254C7_nt) C1{ BC2{ BC3{ m} vd v9} vd v1 v2 v3 v4 v5 v6 v7 v8}


 S1254C7_nt ::~S1254C7_nt(){ note_dtor("S1254C7_nt", this);}
void  S1254C7_nt ::v23(){vfunc_called(this, "_ZN10S1254C7_nt3v23Ev");}
void  S1254C7_nt ::v24(){vfunc_called(this, "_ZN10S1254C7_nt3v24Ev");}
void  S1254C7_nt ::v25(){vfunc_called(this, "_ZN10S1254C7_nt3v25Ev");}
void  S1254C7_nt ::v26(){vfunc_called(this, "_ZN10S1254C7_nt3v26Ev");}
void  S1254C7_nt ::v27(){vfunc_called(this, "_ZN10S1254C7_nt3v27Ev");}
void  S1254C7_nt ::v28(){vfunc_called(this, "_ZN10S1254C7_nt3v28Ev");}
void  S1254C7_nt ::v29(){vfunc_called(this, "_ZN10S1254C7_nt3v29Ev");}
void  S1254C7_nt ::v30(){vfunc_called(this, "_ZN10S1254C7_nt3v30Ev");}
S1254C7_nt ::S1254C7_nt(){ note_ctor("S1254C7_nt", this);} // tgen

//skip512 S1254C7_nt

#else // __cplusplus

extern void _ZN10S1254C7_ntC1Ev();
extern void _ZN10S1254C7_ntD1Ev();
Name_Map name_map_S1254C7_nt[] = {
  NSPAIR(_ZN10S1254C7_ntC1Ev),
  NSPAIR(_ZN10S1254C7_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1254C3_nt;
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
extern  VTBL_ENTRY _ZTV10S1254C3_nt[];
static Base_Class bases_S1254C7_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1254C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1254C7_nt[];
extern void _ZN10S1254C7_ntD1Ev();
extern void _ZN10S1254C7_ntD0Ev();
extern void _ZN10S1254C3_nt2v7Ev();
extern void _ZN10S1254C7_nt3v23Ev();
extern void _ZN10S1254C7_nt3v24Ev();
extern void _ZN10S1254C7_nt3v25Ev();
extern void _ZN10S1254C7_nt3v26Ev();
extern void _ZN10S1254C7_nt3v27Ev();
extern void _ZN10S1254C7_nt3v28Ev();
extern void _ZN10S1254C7_nt3v29Ev();
extern void _ZN10S1254C7_nt3v30Ev();
static  VTBL_ENTRY vtc_S1254C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1254C7_nt[0]),
  (VTBL_ENTRY)&_ZN10S1254C7_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v30Ev,
};
extern VTBL_ENTRY _ZTI10S1254C7_nt[];
VTBL_ENTRY *P__ZTI10S1254C7_nt = _ZTI10S1254C7_nt; 
extern  VTBL_ENTRY _ZTV10S1254C7_nt[];
Class_Descriptor cd_S1254C7_nt = {  "S1254C7_nt", // class name
  bases_S1254C7_nt, 2,
  &(vtc_S1254C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S1254C7_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S1254C7_nt),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1254C9_nt  {
  short s1254c9f0;
  int s1254c9f1;
  void *s1254c9f2;
  int s1254c9f3;
};
//SIG(1 S1254C9_nt) C1{ Fs Fi Fp Fi}



//skip512 S1254C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S1254C8_nt  {
  short s1254c8f0[13];
  ::S1254C9_nt s1254c8f1;
};
//SIG(1 S1254C8_nt) U1{ Fs[13] FC2{ Fs Fi Fp Fi}}

#endif // __cplusplus
#ifdef __cplusplus

struct  S1254C6_nt  : S1254C7_nt {
  char s1254c6f0[2];
  ::S1254C8_nt s1254c6f1;
  virtual  ~S1254C6_nt(); // _ZN10S1254C6_ntD1Ev
  virtual void  v14(); // _ZN10S1254C6_nt3v14Ev
  virtual void  v15(); // _ZN10S1254C6_nt3v15Ev
  virtual void  v16(); // _ZN10S1254C6_nt3v16Ev
  virtual void  v17(); // _ZN10S1254C6_nt3v17Ev
  virtual void  v18(); // _ZN10S1254C6_nt3v18Ev
  virtual void  v19(); // _ZN10S1254C6_nt3v19Ev
  virtual void  v20(); // _ZN10S1254C6_nt3v20Ev
  virtual void  v21(); // _ZN10S1254C6_nt3v21Ev
  virtual void  v22(); // _ZN10S1254C6_nt3v22Ev
  S1254C6_nt(); // tgen
};
//SIG(-1 S1254C6_nt) C1{ BC2{ BC3{ BC4{ m} vd v10} vd v11 v12 v13 v14 v15 v16 v17 v18} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fc[2] FU5{ Fs[13] FC6{ Fs Fi Fp Fi}}}


 S1254C6_nt ::~S1254C6_nt(){ note_dtor("S1254C6_nt", this);}
void  S1254C6_nt ::v14(){vfunc_called(this, "_ZN10S1254C6_nt3v14Ev");}
void  S1254C6_nt ::v15(){vfunc_called(this, "_ZN10S1254C6_nt3v15Ev");}
void  S1254C6_nt ::v16(){vfunc_called(this, "_ZN10S1254C6_nt3v16Ev");}
void  S1254C6_nt ::v17(){vfunc_called(this, "_ZN10S1254C6_nt3v17Ev");}
void  S1254C6_nt ::v18(){vfunc_called(this, "_ZN10S1254C6_nt3v18Ev");}
void  S1254C6_nt ::v19(){vfunc_called(this, "_ZN10S1254C6_nt3v19Ev");}
void  S1254C6_nt ::v20(){vfunc_called(this, "_ZN10S1254C6_nt3v20Ev");}
void  S1254C6_nt ::v21(){vfunc_called(this, "_ZN10S1254C6_nt3v21Ev");}
void  S1254C6_nt ::v22(){vfunc_called(this, "_ZN10S1254C6_nt3v22Ev");}
S1254C6_nt ::S1254C6_nt(){ note_ctor("S1254C6_nt", this);} // tgen

//skip512 S1254C6_nt

#else // __cplusplus

extern void _ZN10S1254C6_ntC1Ev();
extern void _ZN10S1254C6_ntD1Ev();
Name_Map name_map_S1254C6_nt[] = {
  NSPAIR(_ZN10S1254C6_ntC1Ev),
  NSPAIR(_ZN10S1254C6_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1254C3_nt;
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
extern  VTBL_ENTRY _ZTV10S1254C3_nt[];
extern Class_Descriptor cd_S1254C7_nt;
extern VTBL_ENTRY _ZTI10S1254C7_nt[];
extern  VTBL_ENTRY _ZTV10S1254C7_nt[];
static Base_Class bases_S1254C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1254C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1254C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI10S1254C6_nt[];
extern void _ZN10S1254C6_ntD1Ev();
extern void _ZN10S1254C6_ntD0Ev();
extern void _ZN10S1254C3_nt2v7Ev();
extern void _ZN10S1254C7_nt3v23Ev();
extern void _ZN10S1254C7_nt3v24Ev();
extern void _ZN10S1254C7_nt3v25Ev();
extern void _ZN10S1254C7_nt3v26Ev();
extern void _ZN10S1254C7_nt3v27Ev();
extern void _ZN10S1254C7_nt3v28Ev();
extern void _ZN10S1254C7_nt3v29Ev();
extern void _ZN10S1254C7_nt3v30Ev();
extern void _ZN10S1254C6_nt3v14Ev();
extern void _ZN10S1254C6_nt3v15Ev();
extern void _ZN10S1254C6_nt3v16Ev();
extern void _ZN10S1254C6_nt3v17Ev();
extern void _ZN10S1254C6_nt3v18Ev();
extern void _ZN10S1254C6_nt3v19Ev();
extern void _ZN10S1254C6_nt3v20Ev();
extern void _ZN10S1254C6_nt3v21Ev();
extern void _ZN10S1254C6_nt3v22Ev();
static  VTBL_ENTRY vtc_S1254C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1254C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S1254C6_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v25Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v26Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v27Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v28Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v29Ev,
  (VTBL_ENTRY)&_ZN10S1254C7_nt3v30Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v15Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v16Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v17Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v18Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v19Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v20Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v21Ev,
  (VTBL_ENTRY)&_ZN10S1254C6_nt3v22Ev,
};
extern VTBL_ENTRY _ZTI10S1254C6_nt[];
VTBL_ENTRY *P__ZTI10S1254C6_nt = _ZTI10S1254C6_nt; 
extern  VTBL_ENTRY _ZTV10S1254C6_nt[];
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S1254C1  : S1254C2_nt {
  ::S1254C5_nt s1254c1f0;
  void *s1254c1f1;
  ::S1254C6_nt s1254c1f2;
  void *s1254c1f3;
  void *s1254c1f4;
  void *s1254c1f5;
  virtual  ~S1254C1(); // _ZN7S1254C1D1Ev
  virtual void  v1(); // _ZN7S1254C12v1Ev
  virtual void  v2(); // _ZN7S1254C12v2Ev
  virtual void  v3(); // _ZN7S1254C12v3Ev
  virtual void  v4(); // _ZN7S1254C12v4Ev
  virtual void  v5(); // _ZN7S1254C12v5Ev
  virtual void  v6(); // _ZN7S1254C12v6Ev
  S1254C1(); // tgen
};
//SIG(1 S1254C1) C1{ BC2{ BC3{ BC4{ m} vd v7} vd v8 v9 v10 v11 v12 Fc[112]} vd v1 v2 v3 v4 v5 v6 FC5{ BC3 vd v13 Fc[22] Fi Fp Fc[56] Fp Fc[57]} Fp FC6{ BC7{ BC3 vd v23 v24 v25 v26 v27 v28 v29 v30} vd v14 v15 v16 v17 v18 v19 v20 v21 v22 Fc[2] FU8{ Fs[13] FC9{ Fs Fi Fp Fi}}} Fp Fp Fp}


 S1254C1 ::~S1254C1(){ note_dtor("S1254C1", this);}
void  S1254C1 ::v1(){vfunc_called(this, "_ZN7S1254C12v1Ev");}
void  S1254C1 ::v2(){vfunc_called(this, "_ZN7S1254C12v2Ev");}
void  S1254C1 ::v3(){vfunc_called(this, "_ZN7S1254C12v3Ev");}
void  S1254C1 ::v4(){vfunc_called(this, "_ZN7S1254C12v4Ev");}
void  S1254C1 ::v5(){vfunc_called(this, "_ZN7S1254C12v5Ev");}
void  S1254C1 ::v6(){vfunc_called(this, "_ZN7S1254C12v6Ev");}
S1254C1 ::S1254C1(){ note_ctor("S1254C1", this);} // tgen

static void Test_S1254C1()
{
  extern Class_Descriptor cd_S1254C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(48,82)];
    init_test(&cd_S1254C1, buf);
    S1254C1 *dp, &lv = *(dp=new (buf) S1254C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(376,324), "sizeof(S1254C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1254C1)");
    check_base_class_offset(lv, (S9624C48*)(S1254C3_nt*)(S1254C2_nt*), 0, "S1254C1");
    check_base_class_offset(lv, (S1254C3_nt*)(S1254C2_nt*), 0, "S1254C1");
    check_base_class_offset(lv, (S1254C2_nt*), 0, "S1254C1");
    check_field_offset(lv, s1254c1f0, ABISELECT(120,116), "S1254C1.s1254c1f0");
    check_field_offset(lv, s1254c1f1, ABISELECT(296,272), "S1254C1.s1254c1f1");
    check_field_offset(lv, s1254c1f2, ABISELECT(304,276), "S1254C1.s1254c1f2");
    check_field_offset(lv, s1254c1f3, ABISELECT(352,312), "S1254C1.s1254c1f3");
    check_field_offset(lv, s1254c1f4, ABISELECT(360,316), "S1254C1.s1254c1f4");
    check_field_offset(lv, s1254c1f5, ABISELECT(368,320), "S1254C1.s1254c1f5");
    test_class_info(&lv, &cd_S1254C1);
    dp->~S1254C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1254C1(Test_S1254C1, "S1254C1", ABISELECT(376,324));

#else // __cplusplus

extern void _ZN7S1254C1C1Ev();
extern void _ZN7S1254C1D1Ev();
Name_Map name_map_S1254C1[] = {
  NSPAIR(_ZN7S1254C1C1Ev),
  NSPAIR(_ZN7S1254C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S1254C3_nt;
extern VTBL_ENTRY _ZTI10S1254C3_nt[];
extern  VTBL_ENTRY _ZTV10S1254C3_nt[];
extern Class_Descriptor cd_S1254C2_nt;
extern VTBL_ENTRY _ZTI10S1254C2_nt[];
extern  VTBL_ENTRY _ZTV10S1254C2_nt[];
static Base_Class bases_S1254C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1254C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1254C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S1254C1[];
extern void _ZN7S1254C1D1Ev();
extern void _ZN7S1254C1D0Ev();
extern void _ZN10S1254C3_nt2v7Ev();
extern void _ZN10S1254C2_nt2v8Ev();
extern void _ZN10S1254C2_nt2v9Ev();
extern void _ZN10S1254C2_nt3v10Ev();
extern void _ZN10S1254C2_nt3v11Ev();
extern void _ZN10S1254C2_nt3v12Ev();
extern void _ZN7S1254C12v1Ev();
extern void _ZN7S1254C12v2Ev();
extern void _ZN7S1254C12v3Ev();
extern void _ZN7S1254C12v4Ev();
extern void _ZN7S1254C12v5Ev();
extern void _ZN7S1254C12v6Ev();
static  VTBL_ENTRY vtc_S1254C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1254C1[0]),
  (VTBL_ENTRY)&_ZN7S1254C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1254C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1254C3_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S1254C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S1254C12v1Ev,
  (VTBL_ENTRY)&_ZN7S1254C12v2Ev,
  (VTBL_ENTRY)&_ZN7S1254C12v3Ev,
  (VTBL_ENTRY)&_ZN7S1254C12v4Ev,
  (VTBL_ENTRY)&_ZN7S1254C12v5Ev,
  (VTBL_ENTRY)&_ZN7S1254C12v6Ev,
};
extern VTBL_ENTRY _ZTI7S1254C1[];
extern  VTBL_ENTRY _ZTV7S1254C1[];
Class_Descriptor cd_S1254C1 = {  "S1254C1", // class name
  bases_S1254C1, 3,
  &(vtc_S1254C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(376,324), // object size
  NSPAIRA(_ZTI7S1254C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1254C1),16, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7945C2_nt  {
  ::S9624C47 s7945c2f0;
  ::S9624C38_nt s7945c2f1;
  char s7945c2f2;
  void  mf7945c2(); // _ZN10S7945C2_nt8mf7945c2Ev
  virtual  ~S7945C2_nt(); // _ZN10S7945C2_ntD1Ev
  S7945C2_nt(); // tgen
};
//SIG(-1 S7945C2_nt) C1{ vd m FC2{ m Fp Fi FC3{ m} FC3} FC4{ m Fp Fi FC5{ m} FC5} Fc}


void  S7945C2_nt ::mf7945c2(){}
 S7945C2_nt ::~S7945C2_nt(){ note_dtor("S7945C2_nt", this);}
S7945C2_nt ::S7945C2_nt(){ note_ctor("S7945C2_nt", this);} // tgen

//skip512 S7945C2_nt

#else // __cplusplus

extern void _ZN10S7945C2_ntC1Ev();
extern void _ZN10S7945C2_ntD1Ev();
Name_Map name_map_S7945C2_nt[] = {
  NSPAIR(_ZN10S7945C2_ntC1Ev),
  NSPAIR(_ZN10S7945C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7945C2_nt[];
extern void _ZN10S7945C2_ntD1Ev();
extern void _ZN10S7945C2_ntD0Ev();
static  VTBL_ENTRY vtc_S7945C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7945C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7945C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S7945C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S7945C2_nt[];
VTBL_ENTRY *P__ZTI10S7945C2_nt = _ZTI10S7945C2_nt; 
extern  VTBL_ENTRY _ZTV10S7945C2_nt[];
Class_Descriptor cd_S7945C2_nt = {  "S7945C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7945C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S7945C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7945C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7945C9  {
  ::S9624C14_nt s7945c9f0;
  int s7945c9f1[2];
  char s7945c9f2;
  virtual  ~S7945C9(); // _ZN7S7945C9D1Ev
  virtual void  v3(); // _ZN7S7945C92v3Ev
  virtual void  v4(); // _ZN7S7945C92v4Ev
  virtual void  v5(); // _ZN7S7945C92v5Ev
  S7945C9(); // tgen
};
//SIG(-1 S7945C9) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S7945C9 ::~S7945C9(){ note_dtor("S7945C9", this);}
void  S7945C9 ::v3(){vfunc_called(this, "_ZN7S7945C92v3Ev");}
void  S7945C9 ::v4(){vfunc_called(this, "_ZN7S7945C92v4Ev");}
void  S7945C9 ::v5(){vfunc_called(this, "_ZN7S7945C92v5Ev");}
S7945C9 ::S7945C9(){ note_ctor("S7945C9", this);} // tgen

static void Test_S7945C9()
{
  extern Class_Descriptor cd_S7945C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S7945C9, buf);
    S7945C9 *dp, &lv = *(dp=new (buf) S7945C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S7945C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7945C9)");
    check_field_offset(lv, s7945c9f0, ABISELECT(8,4), "S7945C9.s7945c9f0");
    check_field_offset(lv, s7945c9f1, ABISELECT(24,16), "S7945C9.s7945c9f1");
    check_field_offset(lv, s7945c9f2, ABISELECT(32,24), "S7945C9.s7945c9f2");
    test_class_info(&lv, &cd_S7945C9);
    dp->~S7945C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7945C9(Test_S7945C9, "S7945C9", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S7945C9C1Ev();
extern void _ZN7S7945C9D1Ev();
Name_Map name_map_S7945C9[] = {
  NSPAIR(_ZN7S7945C9C1Ev),
  NSPAIR(_ZN7S7945C9D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7945C9[];
extern void _ZN7S7945C9D1Ev();
extern void _ZN7S7945C9D0Ev();
extern void _ZN7S7945C92v3Ev();
extern void _ZN7S7945C92v4Ev();
extern void _ZN7S7945C92v5Ev();
static  VTBL_ENTRY vtc_S7945C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7945C9[0]),
  (VTBL_ENTRY)&_ZN7S7945C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7945C9D0Ev,
  (VTBL_ENTRY)&_ZN7S7945C92v3Ev,
  (VTBL_ENTRY)&_ZN7S7945C92v4Ev,
  (VTBL_ENTRY)&_ZN7S7945C92v5Ev,
};
extern VTBL_ENTRY _ZTI7S7945C9[];
extern  VTBL_ENTRY _ZTV7S7945C9[];
Class_Descriptor cd_S7945C9 = {  "S7945C9", // class name
  0,0,//no base classes
  &(vtc_S7945C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S7945C9),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7945C9),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  S7945C17_nt  {
  void *s7945c17f0[3];
  int s7945c17f1;
  void  mf7945c17(); // _ZN11S7945C17_nt9mf7945c17Ev
};
//SIG(-1 S7945C17_nt) C1{ m Fp[3] Fi}


void  S7945C17_nt ::mf7945c17(){}

//skip512 S7945C17_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7945C18_nt  {
  void *s7945c18f0;
  int s7945c18f1;
  ::S9624C48 s7945c18f2;
  ::S9624C39 s7945c18f3;
  void  mf7945c18(); // _ZN11S7945C18_nt9mf7945c18Ev
};
//SIG(-1 S7945C18_nt) C1{ m Fp Fi FC2{ m} FC3{ m}}


void  S7945C18_nt ::mf7945c18(){}

//skip512 S7945C18_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7945C1  : S7945C2_nt , S7945C9 {
  ::S9857C33_nt s7945c1f0;
  ::S9857C33_nt s7945c1f1;
  ::S9857C34_nt s7945c1f2;
  char s7945c1f3[2];
  void *s7945c1f4;
  int s7945c1f5;
  void *s7945c1f6;
  ::S1540C5_nt s7945c1f7;
  ::S7945C17_nt s7945c1f8;
  ::S7945C18_nt s7945c1f9;
  ::S7945C18_nt s7945c1f10;
  int s7945c1f11;
  virtual  ~S7945C1(); // _ZN7S7945C1D1Ev
  virtual void  v1(); // _ZN7S7945C12v1Ev
  virtual void  v2(); // _ZN7S7945C12v2Ev
  S7945C1(); // tgen
};
//SIG(1 S7945C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC4} FC5{ m Fp Fi FC6{ m} FC6} Fc} BC7{ vd v3 v4 v5 FC8{ m Fp Fi FC9{ m}} Fi[2] Fc} vd v1 v2 FC10{ m FC11{ FL[4]}} FC10 FC12{ m Fp FC13{ Fi[4]}} Fc[2] Fp Fi Fp FC14{ m Fi[2]} FC15{ m Fp[3] Fi} FC16{ m Fp Fi FC4 FC6} FC16 Fi}


 S7945C1 ::~S7945C1(){ note_dtor("S7945C1", this);}
void  S7945C1 ::v1(){vfunc_called(this, "_ZN7S7945C12v1Ev");}
void  S7945C1 ::v2(){vfunc_called(this, "_ZN7S7945C12v2Ev");}
S7945C1 ::S7945C1(){ note_ctor("S7945C1", this);} // tgen

static void Test_S7945C1()
{
  extern Class_Descriptor cd_S7945C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(37,54)];
    init_test(&cd_S7945C1, buf);
    S7945C1 *dp, &lv = *(dp=new (buf) S7945C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(288,212), "sizeof(S7945C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7945C1)");
    check_base_class_offset(lv, (S7945C2_nt*), 0, "S7945C1");
    check_base_class_offset(lv, (S7945C9*), ABISELECT(48,32), "S7945C1");
    check_field_offset(lv, s7945c1f0, ABISELECT(88,60), "S7945C1.s7945c1f0");
    check_field_offset(lv, s7945c1f1, ABISELECT(120,92), "S7945C1.s7945c1f1");
    check_field_offset(lv, s7945c1f2, ABISELECT(152,124), "S7945C1.s7945c1f2");
    check_field_offset(lv, s7945c1f3, ABISELECT(176,144), "S7945C1.s7945c1f3");
    check_field_offset(lv, s7945c1f4, ABISELECT(184,148), "S7945C1.s7945c1f4");
    check_field_offset(lv, s7945c1f5, ABISELECT(192,152), "S7945C1.s7945c1f5");
    check_field_offset(lv, s7945c1f6, ABISELECT(200,156), "S7945C1.s7945c1f6");
    check_field_offset(lv, s7945c1f7, ABISELECT(208,160), "S7945C1.s7945c1f7");
    check_field_offset(lv, s7945c1f8, ABISELECT(216,168), "S7945C1.s7945c1f8");
    check_field_offset(lv, s7945c1f9, ABISELECT(248,184), "S7945C1.s7945c1f9");
    check_field_offset(lv, s7945c1f10, ABISELECT(264,196), "S7945C1.s7945c1f10");
    check_field_offset(lv, s7945c1f11, ABISELECT(280,208), "S7945C1.s7945c1f11");
    test_class_info(&lv, &cd_S7945C1);
    dp->~S7945C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7945C1(Test_S7945C1, "S7945C1", ABISELECT(288,212));

#else // __cplusplus

extern void _ZN7S7945C1C1Ev();
extern void _ZN7S7945C1D1Ev();
Name_Map name_map_S7945C1[] = {
  NSPAIR(_ZN7S7945C1C1Ev),
  NSPAIR(_ZN7S7945C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7945C2_nt;
extern VTBL_ENTRY _ZTI10S7945C2_nt[];
extern  VTBL_ENTRY _ZTV10S7945C2_nt[];
extern Class_Descriptor cd_S7945C9;
extern VTBL_ENTRY _ZTI7S7945C9[];
extern  VTBL_ENTRY _ZTV7S7945C9[];
static Base_Class bases_S7945C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7945C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7945C9,    ABISELECT(48,32), //bcp->offset
    6, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7945C1[];
extern void _ZN7S7945C1D1Ev();
extern void _ZN7S7945C1D0Ev();
extern void _ZN7S7945C12v1Ev();
extern void _ZN7S7945C12v2Ev();
extern void ABISELECT(_ZThn48_N7S7945C1D1Ev,_ZThn32_N7S7945C1D1Ev)();
extern void ABISELECT(_ZThn48_N7S7945C1D0Ev,_ZThn32_N7S7945C1D0Ev)();
extern void _ZN7S7945C92v3Ev();
extern void _ZN7S7945C92v4Ev();
extern void _ZN7S7945C92v5Ev();
static  VTBL_ENTRY vtc_S7945C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7945C1[0]),
  (VTBL_ENTRY)&_ZN7S7945C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7945C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7945C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7945C12v2Ev,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S7945C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7945C1D1Ev,_ZThn32_N7S7945C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn48_N7S7945C1D0Ev,_ZThn32_N7S7945C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7945C92v3Ev,
  (VTBL_ENTRY)&_ZN7S7945C92v4Ev,
  (VTBL_ENTRY)&_ZN7S7945C92v5Ev,
};
extern VTBL_ENTRY _ZTI7S7945C1[];
extern  VTBL_ENTRY _ZTV7S7945C1[];
Class_Descriptor cd_S7945C1 = {  "S7945C1", // class name
  bases_S7945C1, 2,
  &(vtc_S7945C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(288,212), // object size
  NSPAIRA(_ZTI7S7945C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7945C1),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  S19895C4_nt  {
  ::S20489C10_nt s19895c4f0;
  void  mf19895c4(); // _ZN11S19895C4_nt9mf19895c4Ev
};
//SIG(-1 S19895C4_nt) C1{ m FC2{ m Fi}}


void  S19895C4_nt ::mf19895c4(){}

//skip512 S19895C4_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19895C11  : S9624C39 {
};
//SIG(-1 S19895C11) C1{ BC2{ m}}



static void Test_S19895C11()
{
  extern Class_Descriptor cd_S19895C11;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19895C11, buf);
    S19895C11 &lv = *(new (buf) S19895C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19895C11)");
    check2(__alignof__(lv), 1, "__alignof__(S19895C11)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19895C11");
    test_class_info(&lv, &cd_S19895C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C11(Test_S19895C11, "S19895C11", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19895C10  : virtual S9624C19_nt , S9624C39 , S20489C10_nt , S19895C11 , S20489C8 {
  ~S19895C10(); // tgen
  S19895C10(); // tgen
};
//SIG(-1 S19895C10) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S19895C10()
{
  extern Class_Descriptor cd_S19895C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19895C10, buf);
    S19895C10 *dp, &lv = *(dp=new (buf) S19895C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19895C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C10)");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S19895C10");
    /*is_ambiguous_... S19895C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19895C10");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S19895C10");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*), ABISELECT(12,8), "S19895C10");
    check_base_class_offset(lv, (S19895C11*), ABISELECT(12,8), "S19895C10");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19895C10");
    test_class_info(&lv, &cd_S19895C10);
    dp->~S19895C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C10(Test_S19895C10, "S19895C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19895C10C1Ev();
extern void _ZN9S19895C10D1Ev();
Name_Map name_map_S19895C10[] = {
  NSPAIR(_ZN9S19895C10C1Ev),
  NSPAIR(_ZN9S19895C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S19895C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19895C10[];
static  VTBL_ENTRY vtc_S19895C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C10[0]),
};
extern VTBL_ENTRY _ZTV9S19895C10[];
static  VTT_ENTRY vtt_S19895C10[] = {
  {&(_ZTV9S19895C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C10[];
extern  VTBL_ENTRY _ZTV9S19895C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C10[];
Class_Descriptor cd_S19895C10 = {  "S19895C10", // class name
  bases_S19895C10, 6,
  &(vtc_S19895C10[0]), // expected_vtbl_contents
  &(vtt_S19895C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19895C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19895C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C10),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  S19895C14  : virtual S9624C39 {
  int s19895c14f0;
  ~S19895C14(); // tgen
  S19895C14(); // tgen
};
//SIG(-1 S19895C14) C1{ VBC2{ m} Fi}


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

static void Test_S19895C14()
{
  extern Class_Descriptor cd_S19895C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19895C14, buf);
    S19895C14 *dp, &lv = *(dp=new (buf) S19895C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19895C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C14)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19895C14");
    check_field_offset(lv, s19895c14f0, ABISELECT(8,4), "S19895C14.s19895c14f0");
    test_class_info(&lv, &cd_S19895C14);
    dp->~S19895C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C14(Test_S19895C14, "S19895C14", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19895C14C1Ev();
extern void _ZN9S19895C14D1Ev();
Name_Map name_map_S19895C14[] = {
  NSPAIR(_ZN9S19895C14C1Ev),
  NSPAIR(_ZN9S19895C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S19895C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19895C14[];
static  VTBL_ENTRY vtc_S19895C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
extern VTBL_ENTRY _ZTV9S19895C14[];
static  VTT_ENTRY vtt_S19895C14[] = {
  {&(_ZTV9S19895C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
Class_Descriptor cd_S19895C14 = {  "S19895C14", // class name
  bases_S19895C14, 1,
  &(vtc_S19895C14[0]), // expected_vtbl_contents
  &(vtt_S19895C14[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19895C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19895C14),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C14),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  S19895C13  : S9624C39 , S19895C11 , S19895C14 , virtual S20489C10_nt , virtual S20489C8 {
  ::S19895C11 s19895c13f0;
  ~S19895C13(); // tgen
  S19895C13(); // tgen
};
//SIG(-1 S19895C13) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S19895C13()
{
  extern Class_Descriptor cd_S19895C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19895C13, buf);
    S19895C13 *dp, &lv = *(dp=new (buf) S19895C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19895C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C13)");
    /*is_ambiguous_... S19895C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19895C13");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*), ABISELECT(12,8), "S19895C13");
    check_base_class_offset(lv, (S19895C11*), ABISELECT(12,8), "S19895C13");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*), ABISELECT(14,10), "S19895C13");
    check_base_class_offset(lv, (S19895C14*), 0, "S19895C13");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,12), "S19895C13");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S19895C13");
    check_field_offset(lv, s19895c13f0, ABISELECT(13,9), "S19895C13.s19895c13f0");
    test_class_info(&lv, &cd_S19895C13);
    dp->~S19895C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C13(Test_S19895C13, "S19895C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19895C13C1Ev();
extern void _ZN9S19895C13D1Ev();
Name_Map name_map_S19895C13[] = {
  NSPAIR(_ZN9S19895C13C1Ev),
  NSPAIR(_ZN9S19895C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S19895C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19895C14,    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_S20489C10_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19895C13[];
static  VTBL_ENTRY vtc_S19895C13[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
extern VTBL_ENTRY _ZTV9S19895C13[];
static  VTBL_ENTRY _tg__ZTV9S19895C14__9S19895C13[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTT_ENTRY vtt_S19895C13[] = {
  {&(_ZTV9S19895C13[5]),  5,5},
  {&(_tg__ZTV9S19895C14__9S19895C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
Class_Descriptor cd_S19895C13 = {  "S19895C13", // class name
  bases_S19895C13, 7,
  &(vtc_S19895C13[0]), // expected_vtbl_contents
  &(vtt_S19895C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19895C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19895C13),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C13),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  S19895C9  : virtual S19895C10 , virtual S20489C10_nt , S19895C13 {
  short s19895c9f0;
  virtual  ~S19895C9(); // _ZN8S19895C9D2Ev
  S19895C9(); // tgen
};
//SIG(-1 S19895C9) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}} VBC5 BC8{ BC4 BC6 BC9{ VBC4 Fi} VBC5 VBC7 FC6} vd Fs}


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

static void Test_S19895C9()
{
  extern Class_Descriptor cd_S19895C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19895C9, buf);
    S19895C9 *dp, &lv = *(dp=new (buf) S19895C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19895C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C9)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19895C10*), 0, "S19895C9");
    /*is_ambiguous_... S19895C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C10*), ABISELECT(16,12), "S19895C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C10*), ABISELECT(24,16), "S19895C9");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C10*), ABISELECT(28,20), "S19895C9");
    check_base_class_offset(lv, (S19895C11*)(S19895C10*), ABISELECT(28,20), "S19895C9");
    check_base_class_offset(lv, (S20489C8*)(S19895C10*), ABISELECT(32,20), "S19895C9");
    check_base_class_offset(lv, (S19895C10*), ABISELECT(16,12), "S19895C9");
    /*is_ambiguous_... S19895C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(40,24), "S19895C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*), ABISELECT(40,24), "S19895C9");
    /*is_ambiguous_... S19895C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*), 0, "S19895C9");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*), ABISELECT(12,8), "S19895C9");
    check_base_class_offset(lv, (S19895C11*)(S19895C13*), ABISELECT(12,8), "S19895C9");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*), ABISELECT(44,28), "S19895C9");
    check_base_class_offset(lv, (S19895C14*)(S19895C13*), 0, "S19895C9");
    check_base_class_offset(lv, (S20489C8*)(S19895C13*), ABISELECT(48,28), "S19895C9");
    check_base_class_offset(lv, (S19895C13*), 0, "S19895C9");
    check_field_offset(lv, s19895c9f0, ABISELECT(14,10), "S19895C9.s19895c9f0");
    test_class_info(&lv, &cd_S19895C9);
    dp->~S19895C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C9(Test_S19895C9, "S19895C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19895C9C1Ev();
extern void _ZN8S19895C9D2Ev();
Name_Map name_map_S19895C9[] = {
  NSPAIR(_ZN8S19895C9C1Ev),
  NSPAIR(_ZN8S19895C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C10;
extern VTBL_ENTRY _ZTI9S19895C10[];
extern  VTBL_ENTRY _ZTV9S19895C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
static Base_Class bases_S19895C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19895C10,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19895C14,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S19895C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19895C9[];
extern void _ZN8S19895C9D1Ev();
extern void _ZN8S19895C9D0Ev();
static  VTBL_ENTRY vtc_S19895C9[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
  (VTBL_ENTRY)&_ZN8S19895C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
};
extern VTBL_ENTRY _ZTV8S19895C9[];
static  VTBL_ENTRY _tg__ZTV9S19895C13__8S19895C9[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C13__8S19895C9[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C10[0]),
};
static  VTT_ENTRY vtt_S19895C9[] = {
  {&(_ZTV8S19895C9[7]),  7,12},
  {&(_tg__ZTV9S19895C13__8S19895C9[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C13__8S19895C9[3]),  3,3},
  {&(_ZTV8S19895C9[12]),  12,12},
  {&(_tg__ZTV9S19895C10__8S19895C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19895C9[];
extern  VTBL_ENTRY _ZTV8S19895C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C9[];
Class_Descriptor cd_S19895C9 = {  "S19895C9", // class name
  bases_S19895C9, 15,
  &(vtc_S19895C9[0]), // expected_vtbl_contents
  &(vtt_S19895C9[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19895C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19895C9),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19895C9),5, //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  S19895C15  : virtual S9624C39 , S19895C14 , virtual S19895C11 , S20489C10_nt {
  ~S19895C15(); // tgen
  S19895C15(); // tgen
};
//SIG(-1 S19895C15) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S19895C15()
{
  extern Class_Descriptor cd_S19895C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19895C15, buf);
    S19895C15 *dp, &lv = *(dp=new (buf) S19895C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19895C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C15)");
    /*is_ambiguous_... S19895C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19895C15");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*), 0, "S19895C15");
    check_base_class_offset(lv, (S19895C14*), 0, "S19895C15");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*), ABISELECT(16,12), "S19895C15");
    check_base_class_offset(lv, (S19895C11*), ABISELECT(16,12), "S19895C15");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(12,8), "S19895C15");
    test_class_info(&lv, &cd_S19895C15);
    dp->~S19895C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C15(Test_S19895C15, "S19895C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19895C15C1Ev();
extern void _ZN9S19895C15D1Ev();
Name_Map name_map_S19895C15[] = {
  NSPAIR(_ZN9S19895C15C1Ev),
  NSPAIR(_ZN9S19895C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S19895C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19895C14,    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_S9624C39,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19895C15[];
static  VTBL_ENTRY vtc_S19895C15[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C15[0]),
};
extern VTBL_ENTRY _ZTV9S19895C15[];
static  VTBL_ENTRY _tg__ZTV9S19895C14__9S19895C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTT_ENTRY vtt_S19895C15[] = {
  {&(_ZTV9S19895C15[4]),  4,4},
  {&(_tg__ZTV9S19895C14__9S19895C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C15[];
extern  VTBL_ENTRY _ZTV9S19895C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C15[];
Class_Descriptor cd_S19895C15 = {  "S19895C15", // class name
  bases_S19895C15, 5,
  &(vtc_S19895C15[0]), // expected_vtbl_contents
  &(vtt_S19895C15[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19895C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19895C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C15),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  S19895C16  : virtual S9624C48 {
  long s19895c16f0;
  ~S19895C16(); // tgen
  S19895C16(); // tgen
};
//SIG(-1 S19895C16) C1{ VBC2{ m} Fl}


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

static void Test_S19895C16()
{
  extern Class_Descriptor cd_S19895C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19895C16, buf);
    S19895C16 *dp, &lv = *(dp=new (buf) S19895C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19895C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C16)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19895C16");
    check_field_offset(lv, s19895c16f0, ABISELECT(8,4), "S19895C16.s19895c16f0");
    test_class_info(&lv, &cd_S19895C16);
    dp->~S19895C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C16(Test_S19895C16, "S19895C16", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19895C16C1Ev();
extern void _ZN9S19895C16D1Ev();
Name_Map name_map_S19895C16[] = {
  NSPAIR(_ZN9S19895C16C1Ev),
  NSPAIR(_ZN9S19895C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19895C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19895C16[];
static  VTBL_ENTRY vtc_S19895C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C16[0]),
};
extern VTBL_ENTRY _ZTV9S19895C16[];
static  VTT_ENTRY vtt_S19895C16[] = {
  {&(_ZTV9S19895C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C16[];
extern  VTBL_ENTRY _ZTV9S19895C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C16[];
Class_Descriptor cd_S19895C16 = {  "S19895C16", // class name
  bases_S19895C16, 1,
  &(vtc_S19895C16[0]), // expected_vtbl_contents
  &(vtt_S19895C16[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19895C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19895C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C16),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  S19895C8  : S19895C9 , virtual S19895C15 , S19895C16 , S19895C13 {
  ~S19895C8(); // tgen
  S19895C8(); // tgen
};
//SIG(-1 S19895C8) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} BC6{ m Fi} BC7{ BC5} BC8{ m Fi:0 Fp}} VBC6 BC9{ BC5 BC7 BC10{ VBC5 Fi} VBC6 VBC8 FC7} vd Fs} VBC11{ VBC5 BC10 VBC7 BC6} BC12{ VBC13{ m} Fl} BC9}


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

static void Test_S19895C8()
{
  extern Class_Descriptor cd_S19895C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,18)];
    init_test(&cd_S19895C8, buf);
    S19895C8 *dp, &lv = *(dp=new (buf) S19895C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,68), "sizeof(S19895C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C8)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19895C10*), 0, "S19895C8");
    /*is_ambiguous_... S19895C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C10*), ABISELECT(48,32), "S19895C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C10*), ABISELECT(56,36), "S19895C8");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C10*), ABISELECT(60,40), "S19895C8");
    check_base_class_offset(lv, (S19895C11*)(S19895C10*), ABISELECT(60,40), "S19895C8");
    check_base_class_offset(lv, (S20489C8*)(S19895C10*), ABISELECT(64,40), "S19895C8");
    check_base_class_offset(lv, (S19895C10*)(S19895C9*), ABISELECT(48,32), "S19895C8");
    /*is_ambiguous_... S19895C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19895C9*), ABISELECT(72,44), "S19895C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*)(S19895C9*), ABISELECT(72,44), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*), ABISELECT(72,44), "S19895C8");
    /*is_ambiguous_... S19895C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*)(S19895C9*), 0, "S19895C8");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*)(S19895C9*), ABISELECT(12,8), "S19895C8");
    check_base_class_offset(lv, (S19895C11*)(S19895C13*)(S19895C9*), ABISELECT(12,8), "S19895C8");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*)(S19895C9*), ABISELECT(76,48), "S19895C8");
    /*is_ambiguous_... S19895C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C15*), ABISELECT(76,48), "S19895C8");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C15*), ABISELECT(76,48), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*), ABISELECT(76,48), "S19895C8");
    check_base_class_offset(lv, (S19895C14*)(S19895C13*)(S19895C9*), 0, "S19895C8");
    check_base_class_offset(lv, (S20489C8*)(S19895C13*)(S19895C9*), ABISELECT(80,48), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19895C13*), ABISELECT(80,48), "S19895C8");
    check_base_class_offset(lv, (S19895C13*)(S19895C9*), 0, "S19895C8");
    check_base_class_offset(lv, (S19895C9*), 0, "S19895C8");
    check_base_class_offset(lv, (S19895C14*)(S19895C15*), ABISELECT(88,52), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C11 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C11*), ABISELECT(104,64), "S19895C8");
    check_base_class_offset(lv, (S19895C11*)(S19895C15*), ABISELECT(104,64), "S19895C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C15*), ABISELECT(100,60), "S19895C8");
    check_base_class_offset(lv, (S19895C15*), ABISELECT(88,52), "S19895C8");
    check_base_class_offset(lv, (S9624C48*)(S19895C16*), 0, "S19895C8");
    check_base_class_offset(lv, (S19895C16*), ABISELECT(16,12), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*), ABISELECT(32,20), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*), ABISELECT(44,28), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C11*)(S19895C13*), ABISELECT(44,28), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C14*)(S19895C13*), ABISELECT(32,20), "S19895C8");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C13*), ABISELECT(32,20), "S19895C8");
    test_class_info(&lv, &cd_S19895C8);
    dp->~S19895C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C8(Test_S19895C8, "S19895C8", ABISELECT(112,68));

#else // __cplusplus

extern void _ZN8S19895C8C1Ev();
extern void _ZN8S19895C8D1Ev();
Name_Map name_map_S19895C8[] = {
  NSPAIR(_ZN8S19895C8C1Ev),
  NSPAIR(_ZN8S19895C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C10;
extern VTBL_ENTRY _ZTI9S19895C10[];
extern  VTBL_ENTRY _ZTV9S19895C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
extern Class_Descriptor cd_S19895C9;
extern VTBL_ENTRY _ZTI8S19895C9[];
extern  VTBL_ENTRY _ZTV8S19895C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C9[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19895C15;
extern VTBL_ENTRY _ZTI9S19895C15[];
extern  VTBL_ENTRY _ZTV9S19895C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19895C16;
extern VTBL_ENTRY _ZTI9S19895C16[];
extern  VTBL_ENTRY _ZTV9S19895C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C16[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
static Base_Class bases_S19895C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19895C10,    ABISELECT(48,32), //bcp->offset
    20, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(76,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19895C14,    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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S19895C13,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19895C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19895C14,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(100,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19895C15,    ABISELECT(88,52), //bcp->offset
    23, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19895C16,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    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
    27, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(44,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
    27, //immediately_derived
  0, 0},
  {&cd_S19895C14,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19895C13,    ABISELECT(32,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19895C8[];
extern void _ZN8S19895C8D1Ev();
extern void _ZN8S19895C8D0Ev();
static  VTBL_ENTRY vtc_S19895C8[] = {
  0,
  ABISELECT(104,64),
  ABISELECT(88,52),
  0,
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
  (VTBL_ENTRY)&_ZN8S19895C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C8D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
extern VTBL_ENTRY _ZTV8S19895C8[];
extern void _ZN8S19895C9D1Ev();
extern void _ZN8S19895C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19895C9__8S19895C8[] = {
  0,
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
  (VTBL_ENTRY)&_ZN8S19895C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19895C138S19895C9__8S19895C8[] = {
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C138S19895C9__8S19895C8[] = {
  ABISELECT(76,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C9__8S19895C8[] = {
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C16__8S19895C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C13__A1__8S19895C8[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C13__A2__8S19895C8[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C8[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C15__8S19895C8[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C15__A1__8S19895C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTT_ENTRY vtt_S19895C8[] = {
  {&(_ZTV8S19895C8[10]),  10,27},
  {&(_tg__ZTV8S19895C9__8S19895C8[7]),  7,9},
  {&(_tg__ZTV9S19895C138S19895C9__8S19895C8[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C138S19895C9__8S19895C8[3]),  3,3},
  {&(_tg__ZTV9S19895C10__8S19895C9__8S19895C8[3]),  3,3},
  {&(_tg__ZTV9S19895C16__8S19895C8[3]),  3,3},
  {&(_tg__ZTV9S19895C13__A1__8S19895C8[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C13__A2__8S19895C8[3]),  3,3},
  {&(_ZTV8S19895C8[23]),  23,27},
  {&(_ZTV8S19895C8[27]),  27,27},
  {&(_ZTV8S19895C8[15]),  15,27},
  {&(_ZTV8S19895C8[20]),  20,27},
  {&(_tg__ZTV9S19895C10__8S19895C8[3]),  3,3},
  {&(_tg__ZTV9S19895C15__8S19895C8[4]),  4,4},
  {&(_tg__ZTV9S19895C149S19895C15__A1__8S19895C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19895C8[];
extern  VTBL_ENTRY _ZTV8S19895C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C8[];
Class_Descriptor cd_S19895C8 = {  "S19895C8", // class name
  bases_S19895C8, 28,
  &(vtc_S19895C8[0]), // expected_vtbl_contents
  &(vtt_S19895C8[0]), // expected_vtt_contents
  ABISELECT(112,68), // object size
  NSPAIRA(_ZTI8S19895C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19895C8),27, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19895C8),15, //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  S19895C3  : virtual S19895C4_nt , virtual S9624C39 , S9624C19_nt , virtual S19895C8 {
  int s19895c3f0;
  virtual  ~S19895C3(); // _ZN8S19895C3D2Ev
  S19895C3(); // tgen
};
//SIG(-1 S19895C3) C1{ VBC2{ m FC3{ m Fi}} VBC4{ m} BC5{ m} VBC6{ BC7{ VBC8{ VBC5 BC4 BC3 BC9{ BC4} BC10{ m Fi:0 Fp}} VBC3 BC11{ BC4 BC9 BC12{ VBC4 Fi} VBC3 VBC10 FC9} vd Fs} VBC13{ VBC4 BC12 VBC9 BC3} BC14{ VBC15{ m} Fl} BC11} vd Fi}


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

static void Test_S19895C3()
{
  extern Class_Descriptor cd_S19895C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S19895C3, buf);
    S19895C3 *dp, &lv = *(dp=new (buf) S19895C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S19895C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C3)");
    check_base_class_offset(lv, (S19895C4_nt*), ABISELECT(12,8), "S19895C3");
    /*is_ambiguous_... S19895C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19895C3");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*)(S19895C9*)(S19895C8*), 0, "S19895C3");
    /*is_ambiguous_... S19895C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C15*), 0, "S19895C3");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C15*), 0, "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*)(S19895C8*), 0, "S19895C3");
    /*is_ambiguous_... S19895C3::S9624C19_nt */ AMB_check_base_class_offset(lv, (S9624C19_nt*), 0, "S19895C3");
    check_base_class_offset(lv, (S9624C19_nt*)(S19895C10*), ABISELECT(88,56), "S19895C3");
    /*is_ambiguous_... S19895C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C10*), ABISELECT(64,44), "S19895C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C10*), ABISELECT(72,48), "S19895C3");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C10*), ABISELECT(76,52), "S19895C3");
    check_base_class_offset(lv, (S19895C11*)(S19895C10*), ABISELECT(76,52), "S19895C3");
    check_base_class_offset(lv, (S20489C8*)(S19895C10*), ABISELECT(80,52), "S19895C3");
    check_base_class_offset(lv, (S19895C10*)(S19895C9*)(S19895C8*), ABISELECT(64,44), "S19895C3");
    /*is_ambiguous_... S19895C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19895C9*)(S19895C8*), ABISELECT(88,56), "S19895C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(88,56), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*)(S19895C8*), ABISELECT(88,56), "S19895C3");
    /*is_ambiguous_... S19895C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(16,12), "S19895C3");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(28,20), "S19895C3");
    check_base_class_offset(lv, (S19895C11*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(28,20), "S19895C3");
    check_base_class_offset(lv, (S19895C14*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(16,12), "S19895C3");
    check_base_class_offset(lv, (S20489C8*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(96,60), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19895C13*)(S19895C8*), ABISELECT(96,60), "S19895C3");
    check_base_class_offset(lv, (S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(16,12), "S19895C3");
    check_base_class_offset(lv, (S19895C9*)(S19895C8*), ABISELECT(16,12), "S19895C3");
    check_base_class_offset(lv, (S19895C14*)(S19895C15*), ABISELECT(104,64), "S19895C3");
    /*is_ambiguous_... S19895C3::S19895C11 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C11*), ABISELECT(120,76), "S19895C3");
    check_base_class_offset(lv, (S19895C11*)(S19895C15*), ABISELECT(120,76), "S19895C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C15*), ABISELECT(116,72), "S19895C3");
    check_base_class_offset(lv, (S19895C15*)(S19895C8*), ABISELECT(104,64), "S19895C3");
    check_base_class_offset(lv, (S9624C48*)(S19895C16*)(S19895C8*), 0, "S19895C3");
    check_base_class_offset(lv, (S19895C16*)(S19895C8*), ABISELECT(32,24), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*)(S19895C8*), ABISELECT(48,32), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*)(S19895C8*), ABISELECT(60,40), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C11*)(S19895C13*)(S19895C8*), ABISELECT(60,40), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C14*)(S19895C13*)(S19895C8*), ABISELECT(48,32), "S19895C3");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C13*)(S19895C8*), ABISELECT(48,32), "S19895C3");
    check_base_class_offset(lv, (S19895C8*), ABISELECT(16,12), "S19895C3");
    check_field_offset(lv, s19895c3f0, ABISELECT(8,4), "S19895C3.s19895c3f0");
    test_class_info(&lv, &cd_S19895C3);
    dp->~S19895C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C3(Test_S19895C3, "S19895C3", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN8S19895C3C1Ev();
extern void _ZN8S19895C3D2Ev();
Name_Map name_map_S19895C3[] = {
  NSPAIR(_ZN8S19895C3C1Ev),
  NSPAIR(_ZN8S19895C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19895C4_nt;
extern VTBL_ENTRY _ZTI11S19895C4_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C10;
extern VTBL_ENTRY _ZTI9S19895C10[];
extern  VTBL_ENTRY _ZTV9S19895C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
extern Class_Descriptor cd_S19895C9;
extern VTBL_ENTRY _ZTI8S19895C9[];
extern  VTBL_ENTRY _ZTV8S19895C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C9[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19895C15;
extern VTBL_ENTRY _ZTI9S19895C15[];
extern  VTBL_ENTRY _ZTV9S19895C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19895C16;
extern VTBL_ENTRY _ZTI9S19895C16[];
extern  VTBL_ENTRY _ZTV9S19895C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C16[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
extern Class_Descriptor cd_S19895C8;
extern VTBL_ENTRY _ZTI8S19895C8[];
extern  VTBL_ENTRY _ZTV8S19895C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C8[];
static Base_Class bases_S19895C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19895C4_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C19_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(76,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_S19895C11,    ABISELECT(76,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
    9, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    9, //immediately_derived
  0, 0},
  {&cd_S19895C10,    ABISELECT(64,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S9624C39,    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
    16, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19895C14,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S19895C13,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19895C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19895C14,    ABISELECT(104,64), //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
    2, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(116,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
    22, //immediately_derived
  0, 0},
  {&cd_S19895C15,    ABISELECT(104,64), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19895C16,    ABISELECT(32,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(60,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19895C14,    ABISELECT(48,32), //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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19895C13,    ABISELECT(48,32), //bcp->offset
    30, //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
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19895C8,    ABISELECT(16,12), //bcp->offset
    14, //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 _ZTI8S19895C3[];
extern void _ZN8S19895C3D1Ev();
extern void _ZN8S19895C3D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S19895C3D1Ev,_ZTv0_n44_N8S19895C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19895C3D1Ev,_ZThn12_N8S19895C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19895C3D0Ev,_ZTv0_n44_N8S19895C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19895C3D0Ev,_ZThn12_N8S19895C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19895C3[] = {
  0,
  ABISELECT(120,76),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(88,56),
  ABISELECT(64,44),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  (VTBL_ENTRY)&_ZN8S19895C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19895C3D1Ev,_ZTv0_n44_N8S19895C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19895C3D0Ev,_ZTv0_n44_N8S19895C3D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  ABISELECT(24,12),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  ABISELECT(16,12),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
};
extern VTBL_ENTRY _ZTV8S19895C3[];
extern void _ZN8S19895C8D1Ev();
extern void _ZN8S19895C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19895C8__8S19895C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(72,44),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
  (VTBL_ENTRY)&_ZN8S19895C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C8D0Ev,
};
extern void _ZN8S19895C9D1Ev();
extern void _ZN8S19895C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19895C98S19895C8__8S19895C3[] = {
  ABISELECT(72,44),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
  (VTBL_ENTRY)&_ZN8S19895C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19895C138S19895C98S19895C8__8S19895C3[] = {
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C138S19895C98S19895C8__8S19895C3[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C98S19895C8__8S19895C3[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C168S19895C8__8S19895C3[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C138S19895C8__A1__8S19895C3[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C138S19895C8__A2__8S19895C3[] = {
  ABISELECT(-48,-32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C8__8S19895C3[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C15__8S19895C8__8S19895C3[] = {
  ABISELECT(16,12),
  ABISELECT(-104,-64),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C16__8S19895C8__8S19895C3[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C13__A1__8S19895C8__8S19895C3[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-48,-32),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C15__8S19895C3[] = {
  ABISELECT(16,12),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C15__A1__8S19895C3[] = {
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTT_ENTRY vtt_S19895C3[] = {
  {&(_ZTV8S19895C3[12]),  12,42},
  {&(_ZTV8S19895C3[25]),  25,42},
  {&(_ZTV8S19895C3[38]),  38,42},
  {&(_ZTV8S19895C3[42]),  42,42},
  {&(_ZTV8S19895C3[30]),  30,42},
  {&(_ZTV8S19895C3[35]),  35,42},
  {&(_tg__ZTV8S19895C8__8S19895C3[10]),  10,12},
  {&(_tg__ZTV8S19895C98S19895C8__8S19895C3[7]),  7,9},
  {&(_tg__ZTV9S19895C138S19895C98S19895C8__8S19895C3[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C138S19895C98S19895C8__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C10__8S19895C98S19895C8__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C168S19895C8__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C138S19895C8__A1__8S19895C3[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C138S19895C8__A2__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C10__8S19895C8__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C15__8S19895C8__8S19895C3[4]),  4,4},
  {&(_tg__ZTV9S19895C16__8S19895C8__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C13__A1__8S19895C8__8S19895C3[5]),  5,5},
  {&(_tg__ZTV9S19895C10__8S19895C3[3]),  3,3},
  {&(_tg__ZTV9S19895C15__8S19895C3[4]),  4,4},
  {&(_tg__ZTV9S19895C149S19895C15__A1__8S19895C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19895C3[];
extern  VTBL_ENTRY _ZTV8S19895C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C3[];
static VTBL_ENTRY alt_thunk_names94[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19895C3D0Ev,_ZTv0_n44_N8S19895C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19895C3D0Ev,_ZThn12_N8S19895C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19895C3D1Ev,_ZTv0_n44_N8S19895C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19895C3D1Ev,_ZThn12_N8S19895C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19895C3 = {  "S19895C3", // class name
  bases_S19895C3, 31,
  &(vtc_S19895C3[0]), // expected_vtbl_contents
  &(vtt_S19895C3[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI8S19895C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19895C3),42, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19895C3),21, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names94,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19895C17  : virtual S19895C10 {
  ~S19895C17(); // tgen
  S19895C17(); // tgen
};
//SIG(-1 S19895C17) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}}}


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

static void Test_S19895C17()
{
  extern Class_Descriptor cd_S19895C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19895C17, buf);
    S19895C17 *dp, &lv = *(dp=new (buf) S19895C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19895C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C17)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19895C10*), 0, "S19895C17");
    /*is_ambiguous_... S19895C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C10*), ABISELECT(8,4), "S19895C17");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C10*), ABISELECT(16,8), "S19895C17");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C10*), ABISELECT(20,12), "S19895C17");
    check_base_class_offset(lv, (S19895C11*)(S19895C10*), ABISELECT(20,12), "S19895C17");
    check_base_class_offset(lv, (S20489C8*)(S19895C10*), ABISELECT(24,12), "S19895C17");
    check_base_class_offset(lv, (S19895C10*), ABISELECT(8,4), "S19895C17");
    test_class_info(&lv, &cd_S19895C17);
    dp->~S19895C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C17(Test_S19895C17, "S19895C17", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19895C17C1Ev();
extern void _ZN9S19895C17D1Ev();
Name_Map name_map_S19895C17[] = {
  NSPAIR(_ZN9S19895C17C1Ev),
  NSPAIR(_ZN9S19895C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C10;
extern VTBL_ENTRY _ZTI9S19895C10[];
extern  VTBL_ENTRY _ZTV9S19895C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C10[];
static Base_Class bases_S19895C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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_S9624C39,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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_S19895C10,    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 _ZTI9S19895C17[];
static  VTBL_ENTRY vtc_S19895C17[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C17[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19895C17[0]),
};
extern VTBL_ENTRY _ZTV9S19895C17[];
static  VTBL_ENTRY _tg__ZTV9S19895C10__9S19895C17[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C10[0]),
};
static  VTT_ENTRY vtt_S19895C17[] = {
  {&(_ZTV9S19895C17[4]),  4,7},
  {&(_ZTV9S19895C17[7]),  7,7},
  {&(_tg__ZTV9S19895C10__9S19895C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C17[];
extern  VTBL_ENTRY _ZTV9S19895C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C17[];
Class_Descriptor cd_S19895C17 = {  "S19895C17", // class name
  bases_S19895C17, 7,
  &(vtc_S19895C17[0]), // expected_vtbl_contents
  &(vtt_S19895C17[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19895C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19895C17),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C17),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  S19895C18  : virtual S20489C8 , virtual S9624C39 , S19895C14 {
  virtual void  v1(); // _ZN9S19895C182v1Ev
  ~S19895C18(); // tgen
  S19895C18(); // tgen
};
//SIG(-1 S19895C18) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S19895C18()
{
  extern Class_Descriptor cd_S19895C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19895C18, buf);
    S19895C18 *dp, &lv = *(dp=new (buf) S19895C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19895C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C18)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19895C18");
    check_base_class_offset(lv, (S9624C39*), 0, "S19895C18");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*), 0, "S19895C18");
    check_base_class_offset(lv, (S19895C14*), 0, "S19895C18");
    test_class_info(&lv, &cd_S19895C18);
    dp->~S19895C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C18(Test_S19895C18, "S19895C18", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19895C18C1Ev();
extern void _ZN9S19895C18D1Ev();
Name_Map name_map_S19895C18[] = {
  NSPAIR(_ZN9S19895C18C1Ev),
  NSPAIR(_ZN9S19895C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
static Base_Class bases_S19895C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19895C14,    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 _ZTI9S19895C18[];
extern void _ZN9S19895C182v1Ev();
static  VTBL_ENTRY vtc_S19895C18[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C18[0]),
  (VTBL_ENTRY)&_ZN9S19895C182v1Ev,
};
extern VTBL_ENTRY _ZTV9S19895C18[];
static  VTBL_ENTRY _tg__ZTV9S19895C14__9S19895C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTT_ENTRY vtt_S19895C18[] = {
  {&(_ZTV9S19895C18[4]),  4,5},
  {&(_tg__ZTV9S19895C14__9S19895C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19895C18[];
extern  VTBL_ENTRY _ZTV9S19895C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C18[];
Class_Descriptor cd_S19895C18 = {  "S19895C18", // class name
  bases_S19895C18, 3,
  &(vtc_S19895C18[0]), // expected_vtbl_contents
  &(vtt_S19895C18[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19895C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19895C18),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19895C18),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  S19895C1  : virtual S9624C48 , virtual S19895C3 , S19895C17 , S19895C18 {
  virtual  ~S19895C1(); // _ZN8S19895C1D2Ev
  S19895C1(); // tgen
};
//SIG(1 S19895C1) C1{ VBC2{ m} VBC3{ VBC4{ m FC5{ m Fi}} VBC6{ m} BC7{ m} VBC8{ BC9{ VBC10{ VBC7 BC6 BC5 BC11{ BC6} BC12{ m Fi:0 Fp}} VBC5 BC13{ BC6 BC11 BC14{ VBC6 Fi} VBC5 VBC12 FC11} vd Fs} VBC15{ VBC6 BC14 VBC11 BC5} BC16{ VBC2 Fl} BC13} vd Fi} BC17{ VBC10} BC18{ VBC12 VBC6 BC14 v1} vd}


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

static void Test_S19895C1()
{
  extern Class_Descriptor cd_S19895C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,24)];
    init_test(&cd_S19895C1, buf);
    S19895C1 *dp, &lv = *(dp=new (buf) S19895C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,92), "sizeof(S19895C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19895C1)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19895C1");
    check_base_class_offset(lv, (S9624C48*)(S19895C16*)(S19895C8*), 0, "S19895C1");
    check_base_class_offset(lv, (S19895C4_nt*)(S19895C3*), ABISELECT(36,20), "S19895C1");
    /*is_ambiguous_... S19895C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C3*), 0, "S19895C1");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*)(S19895C9*)(S19895C8*), 0, "S19895C1");
    /*is_ambiguous_... S19895C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C15*), 0, "S19895C1");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C15*), 0, "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C13*)(S19895C8*), 0, "S19895C1");
    check_base_class_offset(lv, (S9624C39*)(S19895C18*), 0, "S19895C1");
    check_base_class_offset(lv, (S9624C39*)(S19895C14*)(S19895C18*), 0, "S19895C1");
    /*is_ambiguous_... S19895C3::S9624C19_nt */ AMB_check_base_class_offset(lv, (S9624C19_nt*)(S19895C3*), ABISELECT(24,12), "S19895C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S19895C10*), 0, "S19895C1");
    /*is_ambiguous_... S19895C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C10*), ABISELECT(88,56), "S19895C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C10*), ABISELECT(96,60), "S19895C1");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C10*), ABISELECT(100,64), "S19895C1");
    check_base_class_offset(lv, (S19895C11*)(S19895C10*), ABISELECT(100,64), "S19895C1");
    check_base_class_offset(lv, (S20489C8*)(S19895C10*), ABISELECT(104,64), "S19895C1");
    check_base_class_offset(lv, (S19895C10*)(S19895C9*)(S19895C8*), ABISELECT(88,56), "S19895C1");
    check_base_class_offset(lv, (S19895C10*)(S19895C17*), ABISELECT(88,56), "S19895C1");
    /*is_ambiguous_... S19895C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19895C9*)(S19895C8*), ABISELECT(112,68), "S19895C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(112,68), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19895C13*)(S19895C8*), ABISELECT(112,68), "S19895C1");
    /*is_ambiguous_... S19895C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(40,24), "S19895C1");
    check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(52,32), "S19895C1");
    check_base_class_offset(lv, (S19895C11*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(52,32), "S19895C1");
    check_base_class_offset(lv, (S19895C14*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(40,24), "S19895C1");
    check_base_class_offset(lv, (S20489C8*)(S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(120,72), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19895C13*)(S19895C8*), ABISELECT(120,72), "S19895C1");
    check_base_class_offset(lv, (S20489C8*)(S19895C18*), ABISELECT(120,72), "S19895C1");
    check_base_class_offset(lv, (S19895C13*)(S19895C9*)(S19895C8*), ABISELECT(40,24), "S19895C1");
    check_base_class_offset(lv, (S19895C9*)(S19895C8*), ABISELECT(40,24), "S19895C1");
    check_base_class_offset(lv, (S19895C14*)(S19895C15*), ABISELECT(128,76), "S19895C1");
    /*is_ambiguous_... S19895C1::S19895C11 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C11*), ABISELECT(144,88), "S19895C1");
    check_base_class_offset(lv, (S19895C11*)(S19895C15*), ABISELECT(144,88), "S19895C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19895C15*), ABISELECT(140,84), "S19895C1");
    check_base_class_offset(lv, (S19895C15*)(S19895C8*), ABISELECT(128,76), "S19895C1");
    check_base_class_offset(lv, (S19895C16*)(S19895C8*), ABISELECT(56,36), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C13*)(S19895C8*), ABISELECT(72,44), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19895C11*)(S19895C13*)(S19895C8*), ABISELECT(84,52), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C11*)(S19895C13*)(S19895C8*), ABISELECT(84,52), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C14*)(S19895C13*)(S19895C8*), ABISELECT(72,44), "S19895C1");
    /*is_ambiguous_... S19895C8::S19895C13 */ AMB_check_base_class_offset(lv, (S19895C13*)(S19895C8*), ABISELECT(72,44), "S19895C1");
    check_base_class_offset(lv, (S19895C8*)(S19895C3*), ABISELECT(40,24), "S19895C1");
    check_base_class_offset(lv, (S19895C3*), ABISELECT(24,12), "S19895C1");
    check_base_class_offset(lv, (S19895C17*), 0, "S19895C1");
    check_base_class_offset(lv, (S19895C14*)(S19895C18*), ABISELECT(8,4), "S19895C1");
    check_base_class_offset(lv, (S19895C18*), ABISELECT(8,4), "S19895C1");
    test_class_info(&lv, &cd_S19895C1);
    dp->~S19895C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19895C1(Test_S19895C1, "S19895C1", ABISELECT(152,92));

#else // __cplusplus

extern void _ZN8S19895C1C1Ev();
extern void _ZN8S19895C1D2Ev();
Name_Map name_map_S19895C1[] = {
  NSPAIR(_ZN8S19895C1C1Ev),
  NSPAIR(_ZN8S19895C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19895C4_nt;
extern VTBL_ENTRY _ZTI11S19895C4_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C10;
extern VTBL_ENTRY _ZTI9S19895C10[];
extern  VTBL_ENTRY _ZTV9S19895C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
extern Class_Descriptor cd_S19895C9;
extern VTBL_ENTRY _ZTI8S19895C9[];
extern  VTBL_ENTRY _ZTV8S19895C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C9[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19895C15;
extern VTBL_ENTRY _ZTI9S19895C15[];
extern  VTBL_ENTRY _ZTV9S19895C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C15[];
extern Class_Descriptor cd_S19895C16;
extern VTBL_ENTRY _ZTI9S19895C16[];
extern  VTBL_ENTRY _ZTV9S19895C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C16[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19895C11;
extern VTBL_ENTRY _ZTI9S19895C11[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S19895C13;
extern VTBL_ENTRY _ZTI9S19895C13[];
extern  VTBL_ENTRY _ZTV9S19895C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C13[];
extern Class_Descriptor cd_S19895C8;
extern VTBL_ENTRY _ZTI8S19895C8[];
extern  VTBL_ENTRY _ZTV8S19895C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C8[];
extern Class_Descriptor cd_S19895C3;
extern VTBL_ENTRY _ZTI8S19895C3[];
extern  VTBL_ENTRY _ZTV8S19895C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C3[];
extern Class_Descriptor cd_S19895C17;
extern VTBL_ENTRY _ZTI9S19895C17[];
extern  VTBL_ENTRY _ZTV9S19895C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C17[];
extern Class_Descriptor cd_S19895C14;
extern VTBL_ENTRY _ZTI9S19895C14[];
extern  VTBL_ENTRY _ZTV9S19895C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C14[];
extern Class_Descriptor cd_S19895C18;
extern VTBL_ENTRY _ZTI9S19895C18[];
extern  VTBL_ENTRY _ZTV9S19895C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19895C18[];
static Base_Class bases_S19895C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19895C4_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
    31, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C19_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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(100,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_S19895C11,    ABISELECT(100,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_S20489C8,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19895C10,    ABISELECT(88,56), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19895C14,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(120,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19895C13,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19895C9,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19895C14,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(140,84), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19895C15,    ABISELECT(128,76), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19895C16,    ABISELECT(56,36), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(84,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19895C11,    ABISELECT(84,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19895C14,    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
    26, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19895C13,    ABISELECT(72,44), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19895C8,    ABISELECT(40,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19895C3,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19895C17,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19895C14,    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
    13, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19895C18,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19895C1[];
extern void _ZN8S19895C1D1Ev();
extern void _ZN8S19895C1D0Ev();
extern void _ZN9S19895C182v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S19895C1D1Ev,_ZTv0_n52_N8S19895C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19895C1D1Ev,_ZThn12_N8S19895C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19895C1D0Ev,_ZTv0_n52_N8S19895C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19895C1D0Ev,_ZThn12_N8S19895C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19895C1D1Ev,_ZTv0_n44_N8S19895C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19895C1D1Ev,_ZThn24_N8S19895C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19895C1D0Ev,_ZTv0_n44_N8S19895C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S19895C1D0Ev,_ZThn24_N8S19895C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19895C1[] = {
  ABISELECT(144,88),
  ABISELECT(128,76),
  ABISELECT(120,72),
  ABISELECT(112,68),
  ABISELECT(40,24),
  0,
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  (VTBL_ENTRY)&_ZN8S19895C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C1D0Ev,
  ABISELECT(112,68),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  (VTBL_ENTRY)&_ZN9S19895C182v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(120,76),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  ABISELECT(12,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19895C1D1Ev,_ZTv0_n52_N8S19895C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19895C1D0Ev,_ZTv0_n52_N8S19895C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(-40,-24),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19895C1D1Ev,_ZTv0_n44_N8S19895C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19895C1D0Ev,_ZTv0_n44_N8S19895C1D0Ev),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-44),
  ABISELECT(-72,-44),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI8S19895C1[0]),
};
extern VTBL_ENTRY _ZTV8S19895C1[];
static  VTBL_ENTRY _tg__ZTV9S19895C17__8S19895C1[] = {
  0,
  ABISELECT(88,56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C17[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__9S19895C17__8S19895C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI9S19895C17[0]),
};
extern void _ZN9S19895C182v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19895C18__8S19895C1[] = {
  ABISELECT(112,68),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C18[0]),
  (VTBL_ENTRY)&_ZN9S19895C182v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C18__A3__8S19895C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
extern void _ZN8S19895C3D1Ev();
extern void _ZN8S19895C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19895C3__8S19895C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(120,76),
  ABISELECT(104,64),
  ABISELECT(96,60),
  ABISELECT(88,56),
  ABISELECT(-24,-12),
  ABISELECT(64,44),
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  (VTBL_ENTRY)&_ZN8S19895C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C3D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N8S19895C3D1Ev,_ZTv0_n44_N8S19895C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19895C3D1Ev,_ZThn12_N8S19895C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19895C3D0Ev,_ZTv0_n44_N8S19895C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19895C3D0Ev,_ZThn12_N8S19895C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19895C8__8S19895C3__8S19895C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(-40,-24),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19895C3D1Ev,_ZTv0_n44_N8S19895C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19895C3D0Ev,_ZTv0_n44_N8S19895C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C3__8S19895C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-64,-44),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C15__8S19895C3__8S19895C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-76),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C168S19895C8__8S19895C3__8S19895C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C138S19895C8__A1__8S19895C3__8S19895C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-44),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C3[0]),
};
extern void _ZN8S19895C8D1Ev();
extern void _ZN8S19895C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19895C8__8S19895C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,64),
  ABISELECT(88,52),
  ABISELECT(-40,-24),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
  (VTBL_ENTRY)&_ZN8S19895C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C8D0Ev,
};
extern void _ZN8S19895C9D1Ev();
extern void _ZN8S19895C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19895C98S19895C8__8S19895C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(48,32),
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
  (VTBL_ENTRY)&_ZN8S19895C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19895C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19895C138S19895C98S19895C8__8S19895C1[] = {
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C138S19895C98S19895C8__8S19895C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C98S19895C8__8S19895C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C168S19895C8__8S19895C1[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C138S19895C8__A1__8S19895C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C138S19895C8__A2__8S19895C1[] = {
  ABISELECT(-72,-44),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C8__8S19895C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C15__8S19895C8__8S19895C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-76),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C16__8S19895C8__8S19895C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C13__A1__8S19895C8__8S19895C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-44),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19895C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C10__8S19895C1[] = {
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C15__8S19895C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19895C149S19895C15__A1__8S19895C1[] = {
  ABISELECT(-128,-76),
  0,
  (VTBL_ENTRY)&(_ZTI9S19895C14[0]),
};
static  VTT_ENTRY vtt_S19895C1[] = {
  {&(_ZTV8S19895C1[13]),  13,63},
  {&(_tg__ZTV9S19895C17__8S19895C1[4]),  4,4},
  {&(_tg__ZTV9S19895C10__9S19895C17__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C18__8S19895C1[4]),  4,5},
  {&(_tg__ZTV9S19895C149S19895C18__A3__8S19895C1[3]),  3,3},
  {&(_ZTV8S19895C1[33]),  33,63},
  {&(_ZTV8S19895C1[46]),  46,63},
  {&(_ZTV8S19895C1[59]),  59,63},
  {&(_ZTV8S19895C1[63]),  63,63},
  {&(_ZTV8S19895C1[51]),  51,63},
  {&(_ZTV8S19895C1[56]),  56,63},
  {&(_ZTV8S19895C1[19]),  19,63},
  {&(_tg__ZTV8S19895C3__8S19895C1[12]),  12,14},
  {&(_tg__ZTV8S19895C8__8S19895C3__8S19895C1[11]),  11,13},
  {&(_tg__ZTV9S19895C10__8S19895C3__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C15__8S19895C3__8S19895C1[4]),  4,4},
  {&(_tg__ZTV9S19895C168S19895C8__8S19895C3__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C138S19895C8__A1__8S19895C3__8S19895C1[5]),  5,5},
  {&(_tg__ZTV8S19895C8__8S19895C1[10]),  10,12},
  {&(_tg__ZTV8S19895C98S19895C8__8S19895C1[7]),  7,9},
  {&(_tg__ZTV9S19895C138S19895C98S19895C8__8S19895C1[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C138S19895C98S19895C8__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C10__8S19895C98S19895C8__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C168S19895C8__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C138S19895C8__A1__8S19895C1[5]),  5,5},
  {&(_tg__ZTV9S19895C149S19895C138S19895C8__A2__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C10__8S19895C8__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C15__8S19895C8__8S19895C1[4]),  4,4},
  {&(_tg__ZTV9S19895C16__8S19895C8__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C13__A1__8S19895C8__8S19895C1[5]),  5,5},
  {&(_tg__ZTV9S19895C10__8S19895C1[3]),  3,3},
  {&(_tg__ZTV9S19895C15__8S19895C1[4]),  4,4},
  {&(_tg__ZTV9S19895C149S19895C15__A1__8S19895C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19895C1[];
extern  VTBL_ENTRY _ZTV8S19895C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19895C1[];
static VTBL_ENTRY alt_thunk_names95[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19895C3D0Ev,_ZTv0_n44_N8S19895C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19895C3D0Ev,_ZThn12_N8S19895C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19895C3D1Ev,_ZTv0_n44_N8S19895C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19895C3D1Ev,_ZThn12_N8S19895C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19895C1D0Ev,_ZTv0_n44_N8S19895C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19895C1D0Ev,_ZThn24_N8S19895C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19895C1D1Ev,_ZTv0_n44_N8S19895C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19895C1D1Ev,_ZThn24_N8S19895C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19895C1D0Ev,_ZTv0_n52_N8S19895C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19895C1D0Ev,_ZThn12_N8S19895C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19895C1D1Ev,_ZTv0_n52_N8S19895C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19895C1D1Ev,_ZThn12_N8S19895C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19895C1 = {  "S19895C1", // class name
  bases_S19895C1, 35,
  &(vtc_S19895C1[0]), // expected_vtbl_contents
  &(vtt_S19895C1[0]), // expected_vtt_contents
  ABISELECT(152,92), // object size
  NSPAIRA(_ZTI8S19895C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19895C1),63, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19895C1),33, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names95,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19896C11  : S9624C39 {
};
//SIG(-1 S19896C11) C1{ BC2{ m}}



static void Test_S19896C11()
{
  extern Class_Descriptor cd_S19896C11;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19896C11, buf);
    S19896C11 &lv = *(new (buf) S19896C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19896C11)");
    check2(__alignof__(lv), 1, "__alignof__(S19896C11)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19896C11");
    test_class_info(&lv, &cd_S19896C11);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C11(Test_S19896C11, "S19896C11", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19896C10  : virtual S9624C19_nt , S9624C39 , S20489C10_nt , S19896C11 , S20489C8 {
  ~S19896C10(); // tgen
  S19896C10(); // tgen
};
//SIG(-1 S19896C10) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S19896C10()
{
  extern Class_Descriptor cd_S19896C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19896C10, buf);
    S19896C10 *dp, &lv = *(dp=new (buf) S19896C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19896C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C10)");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S19896C10");
    /*is_ambiguous_... S19896C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19896C10");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S19896C10");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*), ABISELECT(12,8), "S19896C10");
    check_base_class_offset(lv, (S19896C11*), ABISELECT(12,8), "S19896C10");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19896C10");
    test_class_info(&lv, &cd_S19896C10);
    dp->~S19896C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C10(Test_S19896C10, "S19896C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19896C10C1Ev();
extern void _ZN9S19896C10D1Ev();
Name_Map name_map_S19896C10[] = {
  NSPAIR(_ZN9S19896C10C1Ev),
  NSPAIR(_ZN9S19896C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S19896C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19896C10[];
static  VTBL_ENTRY vtc_S19896C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C10[0]),
};
extern VTBL_ENTRY _ZTV9S19896C10[];
static  VTT_ENTRY vtt_S19896C10[] = {
  {&(_ZTV9S19896C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C10[];
extern  VTBL_ENTRY _ZTV9S19896C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C10[];
Class_Descriptor cd_S19896C10 = {  "S19896C10", // class name
  bases_S19896C10, 6,
  &(vtc_S19896C10[0]), // expected_vtbl_contents
  &(vtt_S19896C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19896C10),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19896C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C10),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  S19896C14  : virtual S9624C39 {
  int s19896c14f0;
  ~S19896C14(); // tgen
  S19896C14(); // tgen
};
//SIG(-1 S19896C14) C1{ VBC2{ m} Fi}


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

static void Test_S19896C14()
{
  extern Class_Descriptor cd_S19896C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19896C14, buf);
    S19896C14 *dp, &lv = *(dp=new (buf) S19896C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19896C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C14)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19896C14");
    check_field_offset(lv, s19896c14f0, ABISELECT(8,4), "S19896C14.s19896c14f0");
    test_class_info(&lv, &cd_S19896C14);
    dp->~S19896C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C14(Test_S19896C14, "S19896C14", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S19896C14C1Ev();
extern void _ZN9S19896C14D1Ev();
Name_Map name_map_S19896C14[] = {
  NSPAIR(_ZN9S19896C14C1Ev),
  NSPAIR(_ZN9S19896C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S19896C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19896C14[];
static  VTBL_ENTRY vtc_S19896C14[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
extern VTBL_ENTRY _ZTV9S19896C14[];
static  VTT_ENTRY vtt_S19896C14[] = {
  {&(_ZTV9S19896C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
Class_Descriptor cd_S19896C14 = {  "S19896C14", // class name
  bases_S19896C14, 1,
  &(vtc_S19896C14[0]), // expected_vtbl_contents
  &(vtt_S19896C14[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S19896C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19896C14),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C14),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  S19896C13  : S9624C39 , S19896C11 , S19896C14 , virtual S20489C10_nt , virtual S20489C8 {
  ::S19896C11 s19896c13f0;
  ~S19896C13(); // tgen
  S19896C13(); // tgen
};
//SIG(-1 S19896C13) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S19896C13()
{
  extern Class_Descriptor cd_S19896C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19896C13, buf);
    S19896C13 *dp, &lv = *(dp=new (buf) S19896C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19896C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C13)");
    /*is_ambiguous_... S19896C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19896C13");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*), ABISELECT(12,8), "S19896C13");
    check_base_class_offset(lv, (S19896C11*), ABISELECT(12,8), "S19896C13");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*), ABISELECT(14,10), "S19896C13");
    check_base_class_offset(lv, (S19896C14*), 0, "S19896C13");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,12), "S19896C13");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S19896C13");
    check_field_offset(lv, s19896c13f0, ABISELECT(13,9), "S19896C13.s19896c13f0");
    test_class_info(&lv, &cd_S19896C13);
    dp->~S19896C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C13(Test_S19896C13, "S19896C13", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S19896C13C1Ev();
extern void _ZN9S19896C13D1Ev();
Name_Map name_map_S19896C13[] = {
  NSPAIR(_ZN9S19896C13C1Ev),
  NSPAIR(_ZN9S19896C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S19896C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19896C14,    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_S20489C10_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S19896C13[];
static  VTBL_ENTRY vtc_S19896C13[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
extern VTBL_ENTRY _ZTV9S19896C13[];
static  VTBL_ENTRY _tg__ZTV9S19896C14__9S19896C13[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTT_ENTRY vtt_S19896C13[] = {
  {&(_ZTV9S19896C13[5]),  5,5},
  {&(_tg__ZTV9S19896C14__9S19896C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
Class_Descriptor cd_S19896C13 = {  "S19896C13", // class name
  bases_S19896C13, 7,
  &(vtc_S19896C13[0]), // expected_vtbl_contents
  &(vtt_S19896C13[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S19896C13),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19896C13),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C13),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  S19896C9  : virtual S19896C10 , virtual S20489C10_nt , S19896C13 {
  short s19896c9f0;
  virtual  ~S19896C9(); // _ZN8S19896C9D2Ev
  S19896C9(); // tgen
};
//SIG(-1 S19896C9) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}} VBC5 BC8{ BC4 BC6 BC9{ VBC4 Fi} VBC5 VBC7 FC6} vd Fs}


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

static void Test_S19896C9()
{
  extern Class_Descriptor cd_S19896C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19896C9, buf);
    S19896C9 *dp, &lv = *(dp=new (buf) S19896C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19896C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C9)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19896C10*), 0, "S19896C9");
    /*is_ambiguous_... S19896C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C10*), ABISELECT(16,12), "S19896C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C10*), ABISELECT(24,16), "S19896C9");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C10*), ABISELECT(28,20), "S19896C9");
    check_base_class_offset(lv, (S19896C11*)(S19896C10*), ABISELECT(28,20), "S19896C9");
    check_base_class_offset(lv, (S20489C8*)(S19896C10*), ABISELECT(32,20), "S19896C9");
    check_base_class_offset(lv, (S19896C10*), ABISELECT(16,12), "S19896C9");
    /*is_ambiguous_... S19896C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(40,24), "S19896C9");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*), ABISELECT(40,24), "S19896C9");
    /*is_ambiguous_... S19896C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*), 0, "S19896C9");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*), ABISELECT(12,8), "S19896C9");
    check_base_class_offset(lv, (S19896C11*)(S19896C13*), ABISELECT(12,8), "S19896C9");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*), ABISELECT(44,28), "S19896C9");
    check_base_class_offset(lv, (S19896C14*)(S19896C13*), 0, "S19896C9");
    check_base_class_offset(lv, (S20489C8*)(S19896C13*), ABISELECT(48,28), "S19896C9");
    check_base_class_offset(lv, (S19896C13*), 0, "S19896C9");
    check_field_offset(lv, s19896c9f0, ABISELECT(14,10), "S19896C9.s19896c9f0");
    test_class_info(&lv, &cd_S19896C9);
    dp->~S19896C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C9(Test_S19896C9, "S19896C9", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19896C9C1Ev();
extern void _ZN8S19896C9D2Ev();
Name_Map name_map_S19896C9[] = {
  NSPAIR(_ZN8S19896C9C1Ev),
  NSPAIR(_ZN8S19896C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C10;
extern VTBL_ENTRY _ZTI9S19896C10[];
extern  VTBL_ENTRY _ZTV9S19896C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
static Base_Class bases_S19896C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19896C10,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S19896C14,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S19896C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19896C9[];
extern void _ZN8S19896C9D1Ev();
extern void _ZN8S19896C9D0Ev();
static  VTBL_ENTRY vtc_S19896C9[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
  (VTBL_ENTRY)&_ZN8S19896C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C9D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
};
extern VTBL_ENTRY _ZTV8S19896C9[];
static  VTBL_ENTRY _tg__ZTV9S19896C13__8S19896C9[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C13__8S19896C9[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C9[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C10[0]),
};
static  VTT_ENTRY vtt_S19896C9[] = {
  {&(_ZTV8S19896C9[7]),  7,12},
  {&(_tg__ZTV9S19896C13__8S19896C9[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C13__8S19896C9[3]),  3,3},
  {&(_ZTV8S19896C9[12]),  12,12},
  {&(_tg__ZTV9S19896C10__8S19896C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19896C9[];
extern  VTBL_ENTRY _ZTV8S19896C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C9[];
Class_Descriptor cd_S19896C9 = {  "S19896C9", // class name
  bases_S19896C9, 15,
  &(vtc_S19896C9[0]), // expected_vtbl_contents
  &(vtt_S19896C9[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19896C9),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19896C9),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19896C9),5, //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  S19896C15  : virtual S9624C39 , S19896C14 , virtual S19896C11 , S20489C10_nt {
  ~S19896C15(); // tgen
  S19896C15(); // tgen
};
//SIG(-1 S19896C15) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S19896C15()
{
  extern Class_Descriptor cd_S19896C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19896C15, buf);
    S19896C15 *dp, &lv = *(dp=new (buf) S19896C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19896C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C15)");
    /*is_ambiguous_... S19896C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19896C15");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*), 0, "S19896C15");
    check_base_class_offset(lv, (S19896C14*), 0, "S19896C15");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*), ABISELECT(16,12), "S19896C15");
    check_base_class_offset(lv, (S19896C11*), ABISELECT(16,12), "S19896C15");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(12,8), "S19896C15");
    test_class_info(&lv, &cd_S19896C15);
    dp->~S19896C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C15(Test_S19896C15, "S19896C15", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S19896C15C1Ev();
extern void _ZN9S19896C15D1Ev();
Name_Map name_map_S19896C15[] = {
  NSPAIR(_ZN9S19896C15C1Ev),
  NSPAIR(_ZN9S19896C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S19896C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19896C14,    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_S9624C39,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19896C15[];
static  VTBL_ENTRY vtc_S19896C15[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C15[0]),
};
extern VTBL_ENTRY _ZTV9S19896C15[];
static  VTBL_ENTRY _tg__ZTV9S19896C14__9S19896C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTT_ENTRY vtt_S19896C15[] = {
  {&(_ZTV9S19896C15[4]),  4,4},
  {&(_tg__ZTV9S19896C14__9S19896C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C15[];
extern  VTBL_ENTRY _ZTV9S19896C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C15[];
Class_Descriptor cd_S19896C15 = {  "S19896C15", // class name
  bases_S19896C15, 5,
  &(vtc_S19896C15[0]), // expected_vtbl_contents
  &(vtt_S19896C15[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S19896C15),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S19896C15),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C15),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  S19896C16  : virtual S9624C48 {
  __tsi64 s19896c16f0;
  ~S19896C16(); // tgen
  S19896C16(); // tgen
};
//SIG(-1 S19896C16) C1{ VBC2{ m} FL}


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

static void Test_S19896C16()
{
  extern Class_Descriptor cd_S19896C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19896C16, buf);
    S19896C16 *dp, &lv = *(dp=new (buf) S19896C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19896C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C16)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19896C16");
    check_field_offset(lv, s19896c16f0, ABISELECT(8,4), "S19896C16.s19896c16f0");
    test_class_info(&lv, &cd_S19896C16);
    dp->~S19896C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C16(Test_S19896C16, "S19896C16", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN9S19896C16C1Ev();
extern void _ZN9S19896C16D1Ev();
Name_Map name_map_S19896C16[] = {
  NSPAIR(_ZN9S19896C16C1Ev),
  NSPAIR(_ZN9S19896C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19896C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19896C16[];
static  VTBL_ENTRY vtc_S19896C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C16[0]),
};
extern VTBL_ENTRY _ZTV9S19896C16[];
static  VTT_ENTRY vtt_S19896C16[] = {
  {&(_ZTV9S19896C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C16[];
extern  VTBL_ENTRY _ZTV9S19896C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C16[];
Class_Descriptor cd_S19896C16 = {  "S19896C16", // class name
  bases_S19896C16, 1,
  &(vtc_S19896C16[0]), // expected_vtbl_contents
  &(vtt_S19896C16[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI9S19896C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19896C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C16),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  S19896C8  : S19896C9 , virtual S19896C15 , S19896C16 , S19896C13 {
  ~S19896C8(); // tgen
  S19896C8(); // tgen
};
//SIG(-1 S19896C8) C1{ BC2{ VBC3{ VBC4{ m} BC5{ m} BC6{ m Fi} BC7{ BC5} BC8{ m Fi:0 Fp}} VBC6 BC9{ BC5 BC7 BC10{ VBC5 Fi} VBC6 VBC8 FC7} vd Fs} VBC11{ VBC5 BC10 VBC7 BC6} BC12{ VBC13{ m} FL} BC9}


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

static void Test_S19896C8()
{
  extern Class_Descriptor cd_S19896C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,19)];
    init_test(&cd_S19896C8, buf);
    S19896C8 *dp, &lv = *(dp=new (buf) S19896C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,72), "sizeof(S19896C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C8)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19896C10*), 0, "S19896C8");
    /*is_ambiguous_... S19896C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C10*), ABISELECT(48,36), "S19896C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C10*), ABISELECT(56,40), "S19896C8");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C10*), ABISELECT(60,44), "S19896C8");
    check_base_class_offset(lv, (S19896C11*)(S19896C10*), ABISELECT(60,44), "S19896C8");
    check_base_class_offset(lv, (S20489C8*)(S19896C10*), ABISELECT(64,44), "S19896C8");
    check_base_class_offset(lv, (S19896C10*)(S19896C9*), ABISELECT(48,36), "S19896C8");
    /*is_ambiguous_... S19896C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19896C9*), ABISELECT(72,48), "S19896C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*)(S19896C9*), ABISELECT(72,48), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*), ABISELECT(72,48), "S19896C8");
    /*is_ambiguous_... S19896C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*)(S19896C9*), 0, "S19896C8");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*)(S19896C9*), ABISELECT(12,8), "S19896C8");
    check_base_class_offset(lv, (S19896C11*)(S19896C13*)(S19896C9*), ABISELECT(12,8), "S19896C8");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*)(S19896C9*), ABISELECT(76,52), "S19896C8");
    /*is_ambiguous_... S19896C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C15*), ABISELECT(76,52), "S19896C8");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C15*), ABISELECT(76,52), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*), ABISELECT(76,52), "S19896C8");
    check_base_class_offset(lv, (S19896C14*)(S19896C13*)(S19896C9*), 0, "S19896C8");
    check_base_class_offset(lv, (S20489C8*)(S19896C13*)(S19896C9*), ABISELECT(80,52), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19896C13*), ABISELECT(80,52), "S19896C8");
    check_base_class_offset(lv, (S19896C13*)(S19896C9*), 0, "S19896C8");
    check_base_class_offset(lv, (S19896C9*), 0, "S19896C8");
    check_base_class_offset(lv, (S19896C14*)(S19896C15*), ABISELECT(88,56), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C11 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C11*), ABISELECT(104,68), "S19896C8");
    check_base_class_offset(lv, (S19896C11*)(S19896C15*), ABISELECT(104,68), "S19896C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C15*), ABISELECT(100,64), "S19896C8");
    check_base_class_offset(lv, (S19896C15*), ABISELECT(88,56), "S19896C8");
    check_base_class_offset(lv, (S9624C48*)(S19896C16*), 0, "S19896C8");
    check_base_class_offset(lv, (S19896C16*), ABISELECT(16,12), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*), ABISELECT(32,24), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*), ABISELECT(44,32), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C11*)(S19896C13*), ABISELECT(44,32), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C14*)(S19896C13*), ABISELECT(32,24), "S19896C8");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C13*), ABISELECT(32,24), "S19896C8");
    test_class_info(&lv, &cd_S19896C8);
    dp->~S19896C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C8(Test_S19896C8, "S19896C8", ABISELECT(112,72));

#else // __cplusplus

extern void _ZN8S19896C8C1Ev();
extern void _ZN8S19896C8D1Ev();
Name_Map name_map_S19896C8[] = {
  NSPAIR(_ZN8S19896C8C1Ev),
  NSPAIR(_ZN8S19896C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C10;
extern VTBL_ENTRY _ZTI9S19896C10[];
extern  VTBL_ENTRY _ZTV9S19896C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
extern Class_Descriptor cd_S19896C9;
extern VTBL_ENTRY _ZTI8S19896C9[];
extern  VTBL_ENTRY _ZTV8S19896C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C9[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19896C15;
extern VTBL_ENTRY _ZTI9S19896C15[];
extern  VTBL_ENTRY _ZTV9S19896C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19896C16;
extern VTBL_ENTRY _ZTI9S19896C16[];
extern  VTBL_ENTRY _ZTV9S19896C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C16[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
static Base_Class bases_S19896C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(60,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(60,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_S20489C8,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19896C10,    ABISELECT(48,36), //bcp->offset
    20, //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
    1, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S20489C10_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
    14, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(76,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, 1},
  {&cd_S19896C14,    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
    4, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S19896C13,    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
    15, //immediately_derived
  0, 0},
  {&cd_S19896C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19896C14,    ABISELECT(88,56), //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
    2, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(100,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_S19896C15,    ABISELECT(88,56), //bcp->offset
    23, //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
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S19896C16,    ABISELECT(16,12), //bcp->offset
    12, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    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
    27, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(44,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(44,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
    27, //immediately_derived
  0, 0},
  {&cd_S19896C14,    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
    8, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S19896C13,    ABISELECT(32,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19896C8[];
extern void _ZN8S19896C8D1Ev();
extern void _ZN8S19896C8D0Ev();
static  VTBL_ENTRY vtc_S19896C8[] = {
  0,
  ABISELECT(104,68),
  ABISELECT(88,56),
  0,
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
  (VTBL_ENTRY)&_ZN8S19896C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C8D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
extern VTBL_ENTRY _ZTV8S19896C8[];
extern void _ZN8S19896C9D1Ev();
extern void _ZN8S19896C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19896C9__8S19896C8[] = {
  0,
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
  (VTBL_ENTRY)&_ZN8S19896C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19896C138S19896C9__8S19896C8[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C138S19896C9__8S19896C8[] = {
  ABISELECT(76,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C9__8S19896C8[] = {
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C16__8S19896C8[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C13__A1__8S19896C8[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C13__A2__8S19896C8[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C8[] = {
  ABISELECT(-48,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C15__8S19896C8[] = {
  ABISELECT(16,12),
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C15__A1__8S19896C8[] = {
  ABISELECT(-12,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTT_ENTRY vtt_S19896C8[] = {
  {&(_ZTV8S19896C8[10]),  10,27},
  {&(_tg__ZTV8S19896C9__8S19896C8[7]),  7,9},
  {&(_tg__ZTV9S19896C138S19896C9__8S19896C8[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C138S19896C9__8S19896C8[3]),  3,3},
  {&(_tg__ZTV9S19896C10__8S19896C9__8S19896C8[3]),  3,3},
  {&(_tg__ZTV9S19896C16__8S19896C8[3]),  3,3},
  {&(_tg__ZTV9S19896C13__A1__8S19896C8[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C13__A2__8S19896C8[3]),  3,3},
  {&(_ZTV8S19896C8[23]),  23,27},
  {&(_ZTV8S19896C8[27]),  27,27},
  {&(_ZTV8S19896C8[15]),  15,27},
  {&(_ZTV8S19896C8[20]),  20,27},
  {&(_tg__ZTV9S19896C10__8S19896C8[3]),  3,3},
  {&(_tg__ZTV9S19896C15__8S19896C8[4]),  4,4},
  {&(_tg__ZTV9S19896C149S19896C15__A1__8S19896C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19896C8[];
extern  VTBL_ENTRY _ZTV8S19896C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C8[];
Class_Descriptor cd_S19896C8 = {  "S19896C8", // class name
  bases_S19896C8, 28,
  &(vtc_S19896C8[0]), // expected_vtbl_contents
  &(vtt_S19896C8[0]), // expected_vtt_contents
  ABISELECT(112,72), // object size
  NSPAIRA(_ZTI8S19896C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19896C8),27, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19896C8),15, //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  S19896C3  : virtual S19895C4_nt , virtual S9624C39 , S9624C19_nt , virtual S19896C8 {
  int s19896c3f0;
  virtual  ~S19896C3(); // _ZN8S19896C3D2Ev
  S19896C3(); // tgen
};
//SIG(-1 S19896C3) C1{ VBC2{ m FC3{ m Fi}} VBC4{ m} BC5{ m} VBC6{ BC7{ VBC8{ VBC5 BC4 BC3 BC9{ BC4} BC10{ m Fi:0 Fp}} VBC3 BC11{ BC4 BC9 BC12{ VBC4 Fi} VBC3 VBC10 FC9} vd Fs} VBC13{ VBC4 BC12 VBC9 BC3} BC14{ VBC15{ m} FL} BC11} vd Fi}


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

static void Test_S19896C3()
{
  extern Class_Descriptor cd_S19896C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,22)];
    init_test(&cd_S19896C3, buf);
    S19896C3 *dp, &lv = *(dp=new (buf) S19896C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,84), "sizeof(S19896C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C3)");
    check_base_class_offset(lv, (S19895C4_nt*), ABISELECT(12,8), "S19896C3");
    /*is_ambiguous_... S19896C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S19896C3");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*)(S19896C9*)(S19896C8*), 0, "S19896C3");
    /*is_ambiguous_... S19896C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C15*), 0, "S19896C3");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C15*), 0, "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*)(S19896C8*), 0, "S19896C3");
    /*is_ambiguous_... S19896C3::S9624C19_nt */ AMB_check_base_class_offset(lv, (S9624C19_nt*), 0, "S19896C3");
    check_base_class_offset(lv, (S9624C19_nt*)(S19896C10*), ABISELECT(88,60), "S19896C3");
    /*is_ambiguous_... S19896C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C10*), ABISELECT(64,48), "S19896C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C10*), ABISELECT(72,52), "S19896C3");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C10*), ABISELECT(76,56), "S19896C3");
    check_base_class_offset(lv, (S19896C11*)(S19896C10*), ABISELECT(76,56), "S19896C3");
    check_base_class_offset(lv, (S20489C8*)(S19896C10*), ABISELECT(80,56), "S19896C3");
    check_base_class_offset(lv, (S19896C10*)(S19896C9*)(S19896C8*), ABISELECT(64,48), "S19896C3");
    /*is_ambiguous_... S19896C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19896C9*)(S19896C8*), ABISELECT(88,60), "S19896C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(88,60), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*)(S19896C8*), ABISELECT(88,60), "S19896C3");
    /*is_ambiguous_... S19896C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(16,12), "S19896C3");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(28,20), "S19896C3");
    check_base_class_offset(lv, (S19896C11*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(28,20), "S19896C3");
    check_base_class_offset(lv, (S19896C14*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(16,12), "S19896C3");
    check_base_class_offset(lv, (S20489C8*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(96,64), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19896C13*)(S19896C8*), ABISELECT(96,64), "S19896C3");
    check_base_class_offset(lv, (S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(16,12), "S19896C3");
    check_base_class_offset(lv, (S19896C9*)(S19896C8*), ABISELECT(16,12), "S19896C3");
    check_base_class_offset(lv, (S19896C14*)(S19896C15*), ABISELECT(104,68), "S19896C3");
    /*is_ambiguous_... S19896C3::S19896C11 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C11*), ABISELECT(120,80), "S19896C3");
    check_base_class_offset(lv, (S19896C11*)(S19896C15*), ABISELECT(120,80), "S19896C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C15*), ABISELECT(116,76), "S19896C3");
    check_base_class_offset(lv, (S19896C15*)(S19896C8*), ABISELECT(104,68), "S19896C3");
    check_base_class_offset(lv, (S9624C48*)(S19896C16*)(S19896C8*), 0, "S19896C3");
    check_base_class_offset(lv, (S19896C16*)(S19896C8*), ABISELECT(32,24), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*)(S19896C8*), ABISELECT(48,36), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*)(S19896C8*), ABISELECT(60,44), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C11*)(S19896C13*)(S19896C8*), ABISELECT(60,44), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C14*)(S19896C13*)(S19896C8*), ABISELECT(48,36), "S19896C3");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C13*)(S19896C8*), ABISELECT(48,36), "S19896C3");
    check_base_class_offset(lv, (S19896C8*), ABISELECT(16,12), "S19896C3");
    check_field_offset(lv, s19896c3f0, ABISELECT(8,4), "S19896C3.s19896c3f0");
    test_class_info(&lv, &cd_S19896C3);
    dp->~S19896C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C3(Test_S19896C3, "S19896C3", ABISELECT(128,84));

#else // __cplusplus

extern void _ZN8S19896C3C1Ev();
extern void _ZN8S19896C3D2Ev();
Name_Map name_map_S19896C3[] = {
  NSPAIR(_ZN8S19896C3C1Ev),
  NSPAIR(_ZN8S19896C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19895C4_nt;
extern VTBL_ENTRY _ZTI11S19895C4_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C10;
extern VTBL_ENTRY _ZTI9S19896C10[];
extern  VTBL_ENTRY _ZTV9S19896C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
extern Class_Descriptor cd_S19896C9;
extern VTBL_ENTRY _ZTI8S19896C9[];
extern  VTBL_ENTRY _ZTV8S19896C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C9[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19896C15;
extern VTBL_ENTRY _ZTI9S19896C15[];
extern  VTBL_ENTRY _ZTV9S19896C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C15[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19896C16;
extern VTBL_ENTRY _ZTI9S19896C16[];
extern  VTBL_ENTRY _ZTV9S19896C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C16[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
extern Class_Descriptor cd_S19896C8;
extern VTBL_ENTRY _ZTI8S19896C8[];
extern  VTBL_ENTRY _ZTV8S19896C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C8[];
static Base_Class bases_S19896C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19895C4_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C19_nt,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(64,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(72,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(76,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
    7, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(76,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S19896C10,    ABISELECT(64,48), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S9624C39,    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
    16, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S19896C14,    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
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    16, //immediately_derived
  0, 1},
  {&cd_S19896C13,    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
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19896C9,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19896C14,    ABISELECT(104,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
    2, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    20, //immediately_derived
  0, 0},
  {&cd_S19896C11,    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
    22, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(116,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S19896C15,    ABISELECT(104,68), //bcp->offset
    38, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19896C16,    ABISELECT(32,24), //bcp->offset
    27, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(48,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(60,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
    27, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(60,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
    29, //immediately_derived
  0, 0},
  {&cd_S19896C14,    ABISELECT(48,36), //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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19896C13,    ABISELECT(48,36), //bcp->offset
    30, //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
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19896C8,    ABISELECT(16,12), //bcp->offset
    14, //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 _ZTI8S19896C3[];
extern void _ZN8S19896C3D1Ev();
extern void _ZN8S19896C3D0Ev();
extern void ABISELECT(_ZTv0_n88_N8S19896C3D1Ev,_ZTv0_n44_N8S19896C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19896C3D1Ev,_ZThn12_N8S19896C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19896C3D0Ev,_ZTv0_n44_N8S19896C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19896C3D0Ev,_ZThn12_N8S19896C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19896C3[] = {
  0,
  ABISELECT(120,80),
  ABISELECT(104,68),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(88,60),
  ABISELECT(64,48),
  ABISELECT(16,12),
  0,
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  (VTBL_ENTRY)&_ZN8S19896C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C3D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(72,48),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19896C3D1Ev,_ZTv0_n44_N8S19896C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19896C3D0Ev,_ZTv0_n44_N8S19896C3D0Ev),
  ABISELECT(-32,-24),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-48,-36),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  ABISELECT(24,12),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  ABISELECT(16,12),
  ABISELECT(-104,-68),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
};
extern VTBL_ENTRY _ZTV8S19896C3[];
extern void _ZN8S19896C8D1Ev();
extern void _ZN8S19896C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19896C8__8S19896C3[] = {
  ABISELECT(-16,-12),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(72,48),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
  (VTBL_ENTRY)&_ZN8S19896C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C8D0Ev,
};
extern void _ZN8S19896C9D1Ev();
extern void _ZN8S19896C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19896C98S19896C8__8S19896C3[] = {
  ABISELECT(72,48),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
  (VTBL_ENTRY)&_ZN8S19896C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19896C138S19896C98S19896C8__8S19896C3[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C138S19896C98S19896C8__8S19896C3[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C98S19896C8__8S19896C3[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C168S19896C8__8S19896C3[] = {
  ABISELECT(-32,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C138S19896C8__A1__8S19896C3[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-48,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C138S19896C8__A2__8S19896C3[] = {
  ABISELECT(-48,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C8__8S19896C3[] = {
  ABISELECT(24,12),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C15__8S19896C8__8S19896C3[] = {
  ABISELECT(16,12),
  ABISELECT(-104,-68),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C16__8S19896C8__8S19896C3[] = {
  ABISELECT(-32,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C13__A1__8S19896C8__8S19896C3[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-48,-36),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C15__8S19896C3[] = {
  ABISELECT(16,12),
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C15__A1__8S19896C3[] = {
  ABISELECT(-104,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTT_ENTRY vtt_S19896C3[] = {
  {&(_ZTV8S19896C3[12]),  12,42},
  {&(_ZTV8S19896C3[25]),  25,42},
  {&(_ZTV8S19896C3[38]),  38,42},
  {&(_ZTV8S19896C3[42]),  42,42},
  {&(_ZTV8S19896C3[30]),  30,42},
  {&(_ZTV8S19896C3[35]),  35,42},
  {&(_tg__ZTV8S19896C8__8S19896C3[10]),  10,12},
  {&(_tg__ZTV8S19896C98S19896C8__8S19896C3[7]),  7,9},
  {&(_tg__ZTV9S19896C138S19896C98S19896C8__8S19896C3[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C138S19896C98S19896C8__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C10__8S19896C98S19896C8__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C168S19896C8__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C138S19896C8__A1__8S19896C3[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C138S19896C8__A2__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C10__8S19896C8__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C15__8S19896C8__8S19896C3[4]),  4,4},
  {&(_tg__ZTV9S19896C16__8S19896C8__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C13__A1__8S19896C8__8S19896C3[5]),  5,5},
  {&(_tg__ZTV9S19896C10__8S19896C3[3]),  3,3},
  {&(_tg__ZTV9S19896C15__8S19896C3[4]),  4,4},
  {&(_tg__ZTV9S19896C149S19896C15__A1__8S19896C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19896C3[];
extern  VTBL_ENTRY _ZTV8S19896C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C3[];
static VTBL_ENTRY alt_thunk_names96[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19896C3D0Ev,_ZTv0_n44_N8S19896C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19896C3D0Ev,_ZThn12_N8S19896C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19896C3D1Ev,_ZTv0_n44_N8S19896C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19896C3D1Ev,_ZThn12_N8S19896C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19896C3 = {  "S19896C3", // class name
  bases_S19896C3, 31,
  &(vtc_S19896C3[0]), // expected_vtbl_contents
  &(vtt_S19896C3[0]), // expected_vtt_contents
  ABISELECT(128,84), // object size
  NSPAIRA(_ZTI8S19896C3),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19896C3),42, //virtual function table var
  12, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19896C3),21, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names96,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19896C17  : virtual S19896C10 {
  ~S19896C17(); // tgen
  S19896C17(); // tgen
};
//SIG(-1 S19896C17) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}}}


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

static void Test_S19896C17()
{
  extern Class_Descriptor cd_S19896C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19896C17, buf);
    S19896C17 *dp, &lv = *(dp=new (buf) S19896C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19896C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C17)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19896C10*), 0, "S19896C17");
    /*is_ambiguous_... S19896C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C10*), ABISELECT(8,4), "S19896C17");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C10*), ABISELECT(16,8), "S19896C17");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C10*), ABISELECT(20,12), "S19896C17");
    check_base_class_offset(lv, (S19896C11*)(S19896C10*), ABISELECT(20,12), "S19896C17");
    check_base_class_offset(lv, (S20489C8*)(S19896C10*), ABISELECT(24,12), "S19896C17");
    check_base_class_offset(lv, (S19896C10*), ABISELECT(8,4), "S19896C17");
    test_class_info(&lv, &cd_S19896C17);
    dp->~S19896C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C17(Test_S19896C17, "S19896C17", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19896C17C1Ev();
extern void _ZN9S19896C17D1Ev();
Name_Map name_map_S19896C17[] = {
  NSPAIR(_ZN9S19896C17C1Ev),
  NSPAIR(_ZN9S19896C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C10;
extern VTBL_ENTRY _ZTI9S19896C10[];
extern  VTBL_ENTRY _ZTV9S19896C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C10[];
static Base_Class bases_S19896C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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_S9624C39,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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_S19896C10,    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 _ZTI9S19896C17[];
static  VTBL_ENTRY vtc_S19896C17[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C17[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19896C17[0]),
};
extern VTBL_ENTRY _ZTV9S19896C17[];
static  VTBL_ENTRY _tg__ZTV9S19896C10__9S19896C17[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C10[0]),
};
static  VTT_ENTRY vtt_S19896C17[] = {
  {&(_ZTV9S19896C17[4]),  4,7},
  {&(_ZTV9S19896C17[7]),  7,7},
  {&(_tg__ZTV9S19896C10__9S19896C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C17[];
extern  VTBL_ENTRY _ZTV9S19896C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C17[];
Class_Descriptor cd_S19896C17 = {  "S19896C17", // class name
  bases_S19896C17, 7,
  &(vtc_S19896C17[0]), // expected_vtbl_contents
  &(vtt_S19896C17[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19896C17),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19896C17),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C17),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  S19896C18  : virtual S20489C8 , virtual S9624C39 , S19896C14 {
  virtual void  v1(); // _ZN9S19896C182v1Ev
  ~S19896C18(); // tgen
  S19896C18(); // tgen
};
//SIG(-1 S19896C18) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S19896C18()
{
  extern Class_Descriptor cd_S19896C18;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19896C18, buf);
    S19896C18 *dp, &lv = *(dp=new (buf) S19896C18());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19896C18)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C18)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19896C18");
    check_base_class_offset(lv, (S9624C39*), 0, "S19896C18");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*), 0, "S19896C18");
    check_base_class_offset(lv, (S19896C14*), 0, "S19896C18");
    test_class_info(&lv, &cd_S19896C18);
    dp->~S19896C18();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C18(Test_S19896C18, "S19896C18", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19896C18C1Ev();
extern void _ZN9S19896C18D1Ev();
Name_Map name_map_S19896C18[] = {
  NSPAIR(_ZN9S19896C18C1Ev),
  NSPAIR(_ZN9S19896C18D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
static Base_Class bases_S19896C18[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19896C14,    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 _ZTI9S19896C18[];
extern void _ZN9S19896C182v1Ev();
static  VTBL_ENTRY vtc_S19896C18[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C18[0]),
  (VTBL_ENTRY)&_ZN9S19896C182v1Ev,
};
extern VTBL_ENTRY _ZTV9S19896C18[];
static  VTBL_ENTRY _tg__ZTV9S19896C14__9S19896C18[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTT_ENTRY vtt_S19896C18[] = {
  {&(_ZTV9S19896C18[4]),  4,5},
  {&(_tg__ZTV9S19896C14__9S19896C18[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19896C18[];
extern  VTBL_ENTRY _ZTV9S19896C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C18[];
Class_Descriptor cd_S19896C18 = {  "S19896C18", // class name
  bases_S19896C18, 3,
  &(vtc_S19896C18[0]), // expected_vtbl_contents
  &(vtt_S19896C18[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19896C18),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19896C18),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19896C18),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  S19896C1  : virtual S9624C48 , virtual S19896C3 , S19896C17 , S19896C18 {
  virtual  ~S19896C1(); // _ZN8S19896C1D2Ev
  S19896C1(); // tgen
};
//SIG(1 S19896C1) C1{ VBC2{ m} VBC3{ VBC4{ m FC5{ m Fi}} VBC6{ m} BC7{ m} VBC8{ BC9{ VBC10{ VBC7 BC6 BC5 BC11{ BC6} BC12{ m Fi:0 Fp}} VBC5 BC13{ BC6 BC11 BC14{ VBC6 Fi} VBC5 VBC12 FC11} vd Fs} VBC15{ VBC6 BC14 VBC11 BC5} BC16{ VBC2 FL} BC13} vd Fi} BC17{ VBC10} BC18{ VBC12 VBC6 BC14 v1} vd}


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

static void Test_S19896C1()
{
  extern Class_Descriptor cd_S19896C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,25)];
    init_test(&cd_S19896C1, buf);
    S19896C1 *dp, &lv = *(dp=new (buf) S19896C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,96), "sizeof(S19896C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19896C1)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19896C1");
    check_base_class_offset(lv, (S9624C48*)(S19896C16*)(S19896C8*), 0, "S19896C1");
    check_base_class_offset(lv, (S19895C4_nt*)(S19896C3*), ABISELECT(36,20), "S19896C1");
    /*is_ambiguous_... S19896C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C3*), 0, "S19896C1");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*)(S19896C9*)(S19896C8*), 0, "S19896C1");
    /*is_ambiguous_... S19896C15::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C15*), 0, "S19896C1");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C15*), 0, "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C13*)(S19896C8*), 0, "S19896C1");
    check_base_class_offset(lv, (S9624C39*)(S19896C18*), 0, "S19896C1");
    check_base_class_offset(lv, (S9624C39*)(S19896C14*)(S19896C18*), 0, "S19896C1");
    /*is_ambiguous_... S19896C3::S9624C19_nt */ AMB_check_base_class_offset(lv, (S9624C19_nt*)(S19896C3*), ABISELECT(24,12), "S19896C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S19896C10*), 0, "S19896C1");
    /*is_ambiguous_... S19896C10::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C10*), ABISELECT(88,60), "S19896C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C10*), ABISELECT(96,64), "S19896C1");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C10*), ABISELECT(100,68), "S19896C1");
    check_base_class_offset(lv, (S19896C11*)(S19896C10*), ABISELECT(100,68), "S19896C1");
    check_base_class_offset(lv, (S20489C8*)(S19896C10*), ABISELECT(104,68), "S19896C1");
    check_base_class_offset(lv, (S19896C10*)(S19896C9*)(S19896C8*), ABISELECT(88,60), "S19896C1");
    check_base_class_offset(lv, (S19896C10*)(S19896C17*), ABISELECT(88,60), "S19896C1");
    /*is_ambiguous_... S19896C9::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19896C9*)(S19896C8*), ABISELECT(112,72), "S19896C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(112,72), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S19896C13*)(S19896C8*), ABISELECT(112,72), "S19896C1");
    /*is_ambiguous_... S19896C13::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(40,24), "S19896C1");
    check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(52,32), "S19896C1");
    check_base_class_offset(lv, (S19896C11*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(52,32), "S19896C1");
    check_base_class_offset(lv, (S19896C14*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(40,24), "S19896C1");
    check_base_class_offset(lv, (S20489C8*)(S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(120,76), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19896C13*)(S19896C8*), ABISELECT(120,76), "S19896C1");
    check_base_class_offset(lv, (S20489C8*)(S19896C18*), ABISELECT(120,76), "S19896C1");
    check_base_class_offset(lv, (S19896C13*)(S19896C9*)(S19896C8*), ABISELECT(40,24), "S19896C1");
    check_base_class_offset(lv, (S19896C9*)(S19896C8*), ABISELECT(40,24), "S19896C1");
    check_base_class_offset(lv, (S19896C14*)(S19896C15*), ABISELECT(128,80), "S19896C1");
    /*is_ambiguous_... S19896C1::S19896C11 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C11*), ABISELECT(144,92), "S19896C1");
    check_base_class_offset(lv, (S19896C11*)(S19896C15*), ABISELECT(144,92), "S19896C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19896C15*), ABISELECT(140,88), "S19896C1");
    check_base_class_offset(lv, (S19896C15*)(S19896C8*), ABISELECT(128,80), "S19896C1");
    check_base_class_offset(lv, (S19896C16*)(S19896C8*), ABISELECT(56,36), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C13*)(S19896C8*), ABISELECT(72,48), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S9624C39*)(S19896C11*)(S19896C13*)(S19896C8*), ABISELECT(84,56), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C11*)(S19896C13*)(S19896C8*), ABISELECT(84,56), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C14*)(S19896C13*)(S19896C8*), ABISELECT(72,48), "S19896C1");
    /*is_ambiguous_... S19896C8::S19896C13 */ AMB_check_base_class_offset(lv, (S19896C13*)(S19896C8*), ABISELECT(72,48), "S19896C1");
    check_base_class_offset(lv, (S19896C8*)(S19896C3*), ABISELECT(40,24), "S19896C1");
    check_base_class_offset(lv, (S19896C3*), ABISELECT(24,12), "S19896C1");
    check_base_class_offset(lv, (S19896C17*), 0, "S19896C1");
    check_base_class_offset(lv, (S19896C14*)(S19896C18*), ABISELECT(8,4), "S19896C1");
    check_base_class_offset(lv, (S19896C18*), ABISELECT(8,4), "S19896C1");
    test_class_info(&lv, &cd_S19896C1);
    dp->~S19896C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19896C1(Test_S19896C1, "S19896C1", ABISELECT(152,96));

#else // __cplusplus

extern void _ZN8S19896C1C1Ev();
extern void _ZN8S19896C1D2Ev();
Name_Map name_map_S19896C1[] = {
  NSPAIR(_ZN8S19896C1C1Ev),
  NSPAIR(_ZN8S19896C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19895C4_nt;
extern VTBL_ENTRY _ZTI11S19895C4_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C10;
extern VTBL_ENTRY _ZTI9S19896C10[];
extern  VTBL_ENTRY _ZTV9S19896C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
extern Class_Descriptor cd_S19896C9;
extern VTBL_ENTRY _ZTI8S19896C9[];
extern  VTBL_ENTRY _ZTV8S19896C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C9[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19896C15;
extern VTBL_ENTRY _ZTI9S19896C15[];
extern  VTBL_ENTRY _ZTV9S19896C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C15[];
extern Class_Descriptor cd_S19896C16;
extern VTBL_ENTRY _ZTI9S19896C16[];
extern  VTBL_ENTRY _ZTV9S19896C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C16[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19896C11;
extern VTBL_ENTRY _ZTI9S19896C11[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S19896C13;
extern VTBL_ENTRY _ZTI9S19896C13[];
extern  VTBL_ENTRY _ZTV9S19896C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C13[];
extern Class_Descriptor cd_S19896C8;
extern VTBL_ENTRY _ZTI8S19896C8[];
extern  VTBL_ENTRY _ZTV8S19896C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C8[];
extern Class_Descriptor cd_S19896C3;
extern VTBL_ENTRY _ZTI8S19896C3[];
extern  VTBL_ENTRY _ZTV8S19896C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C3[];
extern Class_Descriptor cd_S19896C17;
extern VTBL_ENTRY _ZTI9S19896C17[];
extern  VTBL_ENTRY _ZTV9S19896C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C17[];
extern Class_Descriptor cd_S19896C14;
extern VTBL_ENTRY _ZTI9S19896C14[];
extern  VTBL_ENTRY _ZTV9S19896C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C14[];
extern Class_Descriptor cd_S19896C18;
extern VTBL_ENTRY _ZTI9S19896C18[];
extern  VTBL_ENTRY _ZTV9S19896C18[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19896C18[];
static Base_Class bases_S19896C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19895C4_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
    31, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C19_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
    31, //immediately_derived
  0, 0},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(88,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(96,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(100,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(100,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(104,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S19896C10,    ABISELECT(88,60), //bcp->offset
    56, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    18, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(112,72), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S9624C39,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19896C14,    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
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(120,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 1},
  {&cd_S19896C13,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S19896C9,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19896C14,    ABISELECT(128,80), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(144,92), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(140,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S19896C15,    ABISELECT(128,80), //bcp->offset
    59, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    30, //immediately_derived
  0, 1},
  {&cd_S19896C16,    ABISELECT(56,36), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    29, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(84,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
    27, //immediately_derived
  0, 0},
  {&cd_S19896C11,    ABISELECT(84,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
    29, //immediately_derived
  0, 0},
  {&cd_S19896C14,    ABISELECT(72,48), //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
    8, //init_seq
    29, //immediately_derived
  0, 0},
  {&cd_S19896C13,    ABISELECT(72,48), //bcp->offset
    51, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    30, //immediately_derived
  0, 0},
  {&cd_S19896C8,    ABISELECT(40,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    31, //immediately_derived
  0, 1},
  {&cd_S19896C3,    ABISELECT(24,12), //bcp->offset
    20, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19896C17,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19896C14,    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
    13, //init_seq
    34, //immediately_derived
  0, 0},
  {&cd_S19896C18,    ABISELECT(8,4), //bcp->offset
    15, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    14, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19896C1[];
extern void _ZN8S19896C1D1Ev();
extern void _ZN8S19896C1D0Ev();
extern void _ZN9S19896C182v1Ev();
extern void ABISELECT(_ZTv0_n104_N8S19896C1D1Ev,_ZTv0_n52_N8S19896C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19896C1D1Ev,_ZThn12_N8S19896C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n104_N8S19896C1D0Ev,_ZTv0_n52_N8S19896C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19896C1D0Ev,_ZThn12_N8S19896C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19896C1D1Ev,_ZTv0_n44_N8S19896C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S19896C1D1Ev,_ZThn24_N8S19896C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19896C1D0Ev,_ZTv0_n44_N8S19896C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S19896C1D0Ev,_ZThn24_N8S19896C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19896C1[] = {
  ABISELECT(144,92),
  ABISELECT(128,80),
  ABISELECT(120,76),
  ABISELECT(112,72),
  ABISELECT(40,24),
  0,
  ABISELECT(36,20),
  ABISELECT(24,12),
  0,
  0,
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  (VTBL_ENTRY)&_ZN8S19896C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C1D0Ev,
  ABISELECT(112,72),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  (VTBL_ENTRY)&_ZN9S19896C182v1Ev,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(120,80),
  ABISELECT(104,68),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(-24,-12),
  ABISELECT(64,48),
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  ABISELECT(12,8),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19896C1D1Ev,_ZTv0_n52_N8S19896C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n104_N8S19896C1D0Ev,_ZTv0_n52_N8S19896C1D0Ev),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19896C1D1Ev,_ZTv0_n44_N8S19896C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19896C1D0Ev,_ZTv0_n44_N8S19896C1D0Ev),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  ABISELECT(-72,-48),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
  ABISELECT(16,12),
  ABISELECT(-128,-80),
  ABISELECT(-128,-80),
  (VTBL_ENTRY)&(_ZTI8S19896C1[0]),
};
extern VTBL_ENTRY _ZTV8S19896C1[];
static  VTBL_ENTRY _tg__ZTV9S19896C17__8S19896C1[] = {
  0,
  ABISELECT(88,60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C17[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__9S19896C17__8S19896C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-88,-60),
  (VTBL_ENTRY)&(_ZTI9S19896C17[0]),
};
extern void _ZN9S19896C182v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19896C18__8S19896C1[] = {
  ABISELECT(112,72),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C18[0]),
  (VTBL_ENTRY)&_ZN9S19896C182v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C18__A3__8S19896C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
extern void _ZN8S19896C3D1Ev();
extern void _ZN8S19896C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19896C3__8S19896C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(120,80),
  ABISELECT(104,68),
  ABISELECT(96,64),
  ABISELECT(88,60),
  ABISELECT(-24,-12),
  ABISELECT(64,48),
  ABISELECT(16,12),
  ABISELECT(-24,-12),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  (VTBL_ENTRY)&_ZN8S19896C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C3D0Ev,
};
extern void ABISELECT(_ZTv0_n88_N8S19896C3D1Ev,_ZTv0_n44_N8S19896C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S19896C3D1Ev,_ZThn12_N8S19896C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n88_N8S19896C3D0Ev,_ZTv0_n44_N8S19896C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S19896C3D0Ev,_ZThn12_N8S19896C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S19896C8__8S19896C3__8S19896C1[] = {
  ABISELECT(-16,-12),
  ABISELECT(-40,-24),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-40,-24),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19896C3D1Ev,_ZTv0_n44_N8S19896C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n88_N8S19896C3D0Ev,_ZTv0_n44_N8S19896C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C3__8S19896C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C15__8S19896C3__8S19896C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-80),
  ABISELECT(-104,-68),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C168S19896C8__8S19896C3__8S19896C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C138S19896C8__A1__8S19896C3__8S19896C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C3[0]),
};
extern void _ZN8S19896C8D1Ev();
extern void _ZN8S19896C8D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19896C8__8S19896C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(104,68),
  ABISELECT(88,56),
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
  (VTBL_ENTRY)&_ZN8S19896C8D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C8D0Ev,
};
extern void _ZN8S19896C9D1Ev();
extern void _ZN8S19896C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19896C98S19896C8__8S19896C1[] = {
  ABISELECT(-40,-24),
  ABISELECT(48,36),
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
  (VTBL_ENTRY)&_ZN8S19896C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19896C9D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19896C138S19896C98S19896C8__8S19896C1[] = {
  ABISELECT(80,52),
  ABISELECT(72,48),
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C138S19896C98S19896C8__8S19896C1[] = {
  ABISELECT(-40,-24),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C98S19896C8__8S19896C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C168S19896C8__8S19896C1[] = {
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C138S19896C8__A1__8S19896C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C13[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C138S19896C8__A2__8S19896C1[] = {
  ABISELECT(-72,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C8__8S19896C1[] = {
  ABISELECT(-88,-60),
  ABISELECT(-48,-36),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C15__8S19896C8__8S19896C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-80),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C16__8S19896C8__8S19896C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C13__A1__8S19896C8__8S19896C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-72,-48),
  ABISELECT(-32,-24),
  (VTBL_ENTRY)&(_ZTI8S19896C8[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C10__8S19896C1[] = {
  ABISELECT(-88,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C15__8S19896C1[] = {
  ABISELECT(16,12),
  ABISELECT(-128,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19896C149S19896C15__A1__8S19896C1[] = {
  ABISELECT(-128,-80),
  0,
  (VTBL_ENTRY)&(_ZTI9S19896C14[0]),
};
static  VTT_ENTRY vtt_S19896C1[] = {
  {&(_ZTV8S19896C1[13]),  13,63},
  {&(_tg__ZTV9S19896C17__8S19896C1[4]),  4,4},
  {&(_tg__ZTV9S19896C10__9S19896C17__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C18__8S19896C1[4]),  4,5},
  {&(_tg__ZTV9S19896C149S19896C18__A3__8S19896C1[3]),  3,3},
  {&(_ZTV8S19896C1[33]),  33,63},
  {&(_ZTV8S19896C1[46]),  46,63},
  {&(_ZTV8S19896C1[59]),  59,63},
  {&(_ZTV8S19896C1[63]),  63,63},
  {&(_ZTV8S19896C1[51]),  51,63},
  {&(_ZTV8S19896C1[56]),  56,63},
  {&(_ZTV8S19896C1[19]),  19,63},
  {&(_tg__ZTV8S19896C3__8S19896C1[12]),  12,14},
  {&(_tg__ZTV8S19896C8__8S19896C3__8S19896C1[11]),  11,13},
  {&(_tg__ZTV9S19896C10__8S19896C3__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C15__8S19896C3__8S19896C1[4]),  4,4},
  {&(_tg__ZTV9S19896C168S19896C8__8S19896C3__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C138S19896C8__A1__8S19896C3__8S19896C1[5]),  5,5},
  {&(_tg__ZTV8S19896C8__8S19896C1[10]),  10,12},
  {&(_tg__ZTV8S19896C98S19896C8__8S19896C1[7]),  7,9},
  {&(_tg__ZTV9S19896C138S19896C98S19896C8__8S19896C1[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C138S19896C98S19896C8__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C10__8S19896C98S19896C8__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C168S19896C8__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C138S19896C8__A1__8S19896C1[5]),  5,5},
  {&(_tg__ZTV9S19896C149S19896C138S19896C8__A2__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C10__8S19896C8__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C15__8S19896C8__8S19896C1[4]),  4,4},
  {&(_tg__ZTV9S19896C16__8S19896C8__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C13__A1__8S19896C8__8S19896C1[5]),  5,5},
  {&(_tg__ZTV9S19896C10__8S19896C1[3]),  3,3},
  {&(_tg__ZTV9S19896C15__8S19896C1[4]),  4,4},
  {&(_tg__ZTV9S19896C149S19896C15__A1__8S19896C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19896C1[];
extern  VTBL_ENTRY _ZTV8S19896C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19896C1[];
static VTBL_ENTRY alt_thunk_names97[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19896C3D0Ev,_ZTv0_n44_N8S19896C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19896C3D0Ev,_ZThn12_N8S19896C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19896C3D1Ev,_ZTv0_n44_N8S19896C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19896C3D1Ev,_ZThn12_N8S19896C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19896C1D0Ev,_ZTv0_n44_N8S19896C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19896C1D0Ev,_ZThn24_N8S19896C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n88_N8S19896C1D1Ev,_ZTv0_n44_N8S19896C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19896C1D1Ev,_ZThn24_N8S19896C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19896C1D0Ev,_ZTv0_n52_N8S19896C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19896C1D0Ev,_ZThn12_N8S19896C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n104_N8S19896C1D1Ev,_ZTv0_n52_N8S19896C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19896C1D1Ev,_ZThn12_N8S19896C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19896C1 = {  "S19896C1", // class name
  bases_S19896C1, 35,
  &(vtc_S19896C1[0]), // expected_vtbl_contents
  &(vtt_S19896C1[0]), // expected_vtt_contents
  ABISELECT(152,96), // object size
  NSPAIRA(_ZTI8S19896C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19896C1),63, //virtual function table var
  13, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19896C1),33, //virtual table table var
  14, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names97,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6567C2  {
  ::S19101C6 s6567c2f0[4];
  virtual  ~S6567C2(); // _ZN7S6567C2D1Ev
  virtual void  v2(); // _ZN7S6567C22v2Ev
  virtual void  v3(); // _ZN7S6567C22v3Ev
  virtual void  v4(); // _ZN7S6567C22v4Ev
  virtual void  v5(); // _ZN7S6567C22v5Ev
  virtual void  v6(); // _ZN7S6567C22v6Ev
  virtual void  v7(); // _ZN7S6567C22v7Ev
  virtual void  v8(); // _ZN7S6567C22v8Ev
  S6567C2(); // tgen
};
//SIG(-1 S6567C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ vd v8 v9 v10 v11 v12 v13 Fs}[4]}


 S6567C2 ::~S6567C2(){ note_dtor("S6567C2", this);}
void  S6567C2 ::v2(){vfunc_called(this, "_ZN7S6567C22v2Ev");}
void  S6567C2 ::v3(){vfunc_called(this, "_ZN7S6567C22v3Ev");}
void  S6567C2 ::v4(){vfunc_called(this, "_ZN7S6567C22v4Ev");}
void  S6567C2 ::v5(){vfunc_called(this, "_ZN7S6567C22v5Ev");}
void  S6567C2 ::v6(){vfunc_called(this, "_ZN7S6567C22v6Ev");}
void  S6567C2 ::v7(){vfunc_called(this, "_ZN7S6567C22v7Ev");}
void  S6567C2 ::v8(){vfunc_called(this, "_ZN7S6567C22v8Ev");}
S6567C2 ::S6567C2(){ note_ctor("S6567C2", this);} // tgen

static void Test_S6567C2()
{
  extern Class_Descriptor cd_S6567C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S6567C2, buf);
    S6567C2 *dp, &lv = *(dp=new (buf) S6567C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S6567C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6567C2)");
    check_field_offset(lv, s6567c2f0, ABISELECT(8,4), "S6567C2.s6567c2f0");
    test_class_info(&lv, &cd_S6567C2);
    dp->~S6567C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6567C2(Test_S6567C2, "S6567C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S6567C2C1Ev();
extern void _ZN7S6567C2D1Ev();
Name_Map name_map_S6567C2[] = {
  NSPAIR(_ZN7S6567C2C1Ev),
  NSPAIR(_ZN7S6567C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6567C2[];
extern void _ZN7S6567C2D1Ev();
extern void _ZN7S6567C2D0Ev();
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY vtc_S6567C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C2[0]),
  (VTBL_ENTRY)&_ZN7S6567C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6567C2[];
extern  VTBL_ENTRY _ZTV7S6567C2[];
Class_Descriptor cd_S6567C2 = {  "S6567C2", // class name
  0,0,//no base classes
  &(vtc_S6567C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S6567C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6567C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6567C7  {
  int s6567c7f0;
  virtual void  v9(); // _ZN7S6567C72v9Ev
  virtual void  v10(); // _ZN7S6567C73v10Ev
  virtual void  v11(); // _ZN7S6567C73v11Ev
  virtual void  v12(); // _ZN7S6567C73v12Ev
  virtual void  v13(); // _ZN7S6567C73v13Ev
  ~S6567C7(); // tgen
  S6567C7(); // tgen
};
//SIG(-1 S6567C7) C1{ v1 v2 v3 v4 v5 Fi}


void  S6567C7 ::v9(){vfunc_called(this, "_ZN7S6567C72v9Ev");}
void  S6567C7 ::v10(){vfunc_called(this, "_ZN7S6567C73v10Ev");}
void  S6567C7 ::v11(){vfunc_called(this, "_ZN7S6567C73v11Ev");}
void  S6567C7 ::v12(){vfunc_called(this, "_ZN7S6567C73v12Ev");}
void  S6567C7 ::v13(){vfunc_called(this, "_ZN7S6567C73v13Ev");}
S6567C7 ::~S6567C7(){ note_dtor("S6567C7", this);} // tgen
S6567C7 ::S6567C7(){ note_ctor("S6567C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6567C7C1Ev();
extern void _ZN7S6567C7D1Ev();
Name_Map name_map_S6567C7[] = {
  NSPAIR(_ZN7S6567C7C1Ev),
  NSPAIR(_ZN7S6567C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6567C7[];
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
static  VTBL_ENTRY vtc_S6567C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C7[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
};
extern VTBL_ENTRY _ZTI7S6567C7[];
extern  VTBL_ENTRY _ZTV7S6567C7[];
Class_Descriptor cd_S6567C7 = {  "S6567C7", // class name
  0,0,//no base classes
  &(vtc_S6567C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6567C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6567C7),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  S6567C6  : S6567C7 {
  ::S19101C9 s6567c6f0;
  virtual  ~S6567C6(); // _ZN7S6567C6D1Ev
  virtual void  v14(); // _ZN7S6567C63v14Ev
  virtual void  v15(); // _ZN7S6567C63v15Ev
  S6567C6(); // tgen
};
//SIG(-1 S6567C6) C1{ BC2{ v3 v4 v5 v6 v7 Fi} vd v1 v2 FC3{ BC4{ v11 v12 v13 v14 v15 Fi} vd v8 v9 v10 FC5{}}}


 S6567C6 ::~S6567C6(){ note_dtor("S6567C6", this);}
void  S6567C6 ::v14(){vfunc_called(this, "_ZN7S6567C63v14Ev");}
void  S6567C6 ::v15(){vfunc_called(this, "_ZN7S6567C63v15Ev");}
S6567C6 ::S6567C6(){ note_ctor("S6567C6", this);} // tgen

static void Test_S6567C6()
{
  extern Class_Descriptor cd_S6567C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6567C6, buf);
    S6567C6 *dp, &lv = *(dp=new (buf) S6567C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6567C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6567C6)");
    check_base_class_offset(lv, (S6567C7*), 0, "S6567C6");
    check_field_offset(lv, s6567c6f0, ABISELECT(16,8), "S6567C6.s6567c6f0");
    test_class_info(&lv, &cd_S6567C6);
    dp->~S6567C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6567C6(Test_S6567C6, "S6567C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6567C6C1Ev();
extern void _ZN7S6567C6D1Ev();
Name_Map name_map_S6567C6[] = {
  NSPAIR(_ZN7S6567C6C1Ev),
  NSPAIR(_ZN7S6567C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6567C7;
extern VTBL_ENTRY _ZTI7S6567C7[];
extern  VTBL_ENTRY _ZTV7S6567C7[];
static Base_Class bases_S6567C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6567C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6567C6[];
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void _ZN7S6567C6D1Ev();
extern void _ZN7S6567C6D0Ev();
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
static  VTBL_ENTRY vtc_S6567C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C6[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&_ZN7S6567C6D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C6D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
};
extern VTBL_ENTRY _ZTI7S6567C6[];
extern  VTBL_ENTRY _ZTV7S6567C6[];
Class_Descriptor cd_S6567C6 = {  "S6567C6", // class name
  bases_S6567C6, 1,
  &(vtc_S6567C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6567C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6567C6),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  S6567C5  : virtual S6567C2 , S6567C6 {
  int s6567c5f0[2];
  long s6567c5f1;
  virtual  ~S6567C5(); // _ZN7S6567C5D2Ev
  virtual void  v16(); // _ZN7S6567C53v16Ev
  virtual void  v17(); // _ZN7S6567C53v17Ev
  virtual void  v18(); // _ZN7S6567C53v18Ev
  S6567C5(); // tgen
};
//SIG(-1 S6567C5) C1{ VBC2{ vd v4 v5 v6 v7 v8 v9 v10 FC3{ vd v26 v27 v28 v29 v30 v31 Fs}[4]} BC4{ BC5{ v11 v12 v13 v14 v15 Fi} vd v16 v17 FC6{ BC7{ v21 v22 v23 v24 v25 Fi} vd v18 v19 v20 FC8{}}} vd v1 v2 v3 Fi[2] Fl}


 S6567C5 ::~S6567C5(){ note_dtor("S6567C5", this);}
void  S6567C5 ::v16(){vfunc_called(this, "_ZN7S6567C53v16Ev");}
void  S6567C5 ::v17(){vfunc_called(this, "_ZN7S6567C53v17Ev");}
void  S6567C5 ::v18(){vfunc_called(this, "_ZN7S6567C53v18Ev");}
S6567C5 ::S6567C5(){ note_ctor("S6567C5", this);} // tgen

static void Test_S6567C5()
{
  extern Class_Descriptor cd_S6567C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,18)];
    init_test(&cd_S6567C5, buf);
    S6567C5 *dp, &lv = *(dp=new (buf) S6567C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,68), "sizeof(S6567C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6567C5)");
    check_base_class_offset(lv, (S6567C2*), ABISELECT(48,32), "S6567C5");
    check_base_class_offset(lv, (S6567C7*)(S6567C6*), 0, "S6567C5");
    check_base_class_offset(lv, (S6567C6*), 0, "S6567C5");
    check_field_offset(lv, s6567c5f0, ABISELECT(32,20), "S6567C5.s6567c5f0");
    check_field_offset(lv, s6567c5f1, ABISELECT(40,28), "S6567C5.s6567c5f1");
    test_class_info(&lv, &cd_S6567C5);
    dp->~S6567C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6567C5(Test_S6567C5, "S6567C5", ABISELECT(120,68));

#else // __cplusplus

extern void _ZN7S6567C5C1Ev();
extern void _ZN7S6567C5D2Ev();
Name_Map name_map_S6567C5[] = {
  NSPAIR(_ZN7S6567C5C1Ev),
  NSPAIR(_ZN7S6567C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6567C2;
extern VTBL_ENTRY _ZTI7S6567C2[];
extern  VTBL_ENTRY _ZTV7S6567C2[];
extern Class_Descriptor cd_S6567C7;
extern VTBL_ENTRY _ZTI7S6567C7[];
extern  VTBL_ENTRY _ZTV7S6567C7[];
extern Class_Descriptor cd_S6567C6;
extern VTBL_ENTRY _ZTI7S6567C6[];
extern  VTBL_ENTRY _ZTV7S6567C6[];
static Base_Class bases_S6567C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6567C2,    ABISELECT(48,32), //bcp->offset
    15, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6567C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S6567C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S6567C5[];
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void _ZN7S6567C5D1Ev();
extern void _ZN7S6567C5D0Ev();
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
extern void _ZN7S6567C53v16Ev();
extern void _ZN7S6567C53v17Ev();
extern void _ZN7S6567C53v18Ev();
extern void ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S6567C5D1Ev,_ZThn32_N7S6567C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S6567C5D0Ev,_ZThn32_N7S6567C5D0Ev)() __attribute__((weak));
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY vtc_S6567C5[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C5[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&_ZN7S6567C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v18Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6567C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern VTBL_ENTRY _ZTV7S6567C5[];
static  VTT_ENTRY vtt_S6567C5[] = {
  {&(_ZTV7S6567C5[3]),  3,34},
  {&(_ZTV7S6567C5[25]),  25,34},
};
extern VTBL_ENTRY _ZTI7S6567C5[];
extern  VTBL_ENTRY _ZTV7S6567C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6567C5[];
static VTBL_ENTRY alt_thunk_names98[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6567C5D0Ev,_ZThn32_N7S6567C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S6567C5D1Ev,_ZThn32_N7S6567C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6567C5 = {  "S6567C5", // class name
  bases_S6567C5, 3,
  &(vtc_S6567C5[0]), // expected_vtbl_contents
  &(vtt_S6567C5[0]), // expected_vtt_contents
  ABISELECT(120,68), // object size
  NSPAIRA(_ZTI7S6567C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6567C5),34, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6567C5),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names98,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6567C11  {
  virtual void  v19(); // _ZN8S6567C113v19Ev
  ~S6567C11(); // tgen
  S6567C11(); // tgen
};
//SIG(-1 S6567C11) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S6567C11C1Ev();
extern void _ZN8S6567C11D1Ev();
Name_Map name_map_S6567C11[] = {
  NSPAIR(_ZN8S6567C11C1Ev),
  NSPAIR(_ZN8S6567C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S6567C11[];
extern void _ZN8S6567C113v19Ev();
static  VTBL_ENTRY vtc_S6567C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S6567C11[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
};
extern VTBL_ENTRY _ZTI8S6567C11[];
extern  VTBL_ENTRY _ZTV8S6567C11[];
Class_Descriptor cd_S6567C11 = {  "S6567C11", // class name
  0,0,//no base classes
  &(vtc_S6567C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6567C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S6567C11),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  S6567C10  : virtual S6567C11 {
  virtual void  v20(); // _ZN8S6567C103v20Ev
  ~S6567C10(); // tgen
  S6567C10(); // tgen
};
//SIG(-1 S6567C10) C1{ VBC2{ v2} v1}


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

static void Test_S6567C10()
{
  extern Class_Descriptor cd_S6567C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6567C10, buf);
    S6567C10 *dp, &lv = *(dp=new (buf) S6567C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6567C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6567C10)");
    check_base_class_offset(lv, (S6567C11*), 0, "S6567C10");
    test_class_info(&lv, &cd_S6567C10);
    dp->~S6567C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6567C10(Test_S6567C10, "S6567C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S6567C10C1Ev();
extern void _ZN8S6567C10D1Ev();
Name_Map name_map_S6567C10[] = {
  NSPAIR(_ZN8S6567C10C1Ev),
  NSPAIR(_ZN8S6567C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6567C11;
extern VTBL_ENTRY _ZTI8S6567C11[];
extern  VTBL_ENTRY _ZTV8S6567C11[];
static Base_Class bases_S6567C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6567C11,    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 _ZTI8S6567C10[];
extern void _ZN8S6567C113v19Ev();
extern void _ZN8S6567C103v20Ev();
static  VTBL_ENTRY vtc_S6567C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6567C10[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
  (VTBL_ENTRY)&_ZN8S6567C103v20Ev,
};
extern VTBL_ENTRY _ZTV8S6567C10[];
static  VTT_ENTRY vtt_S6567C10[] = {
  {&(_ZTV8S6567C10[4]),  4,6},
  {&(_ZTV8S6567C10[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S6567C10[];
extern  VTBL_ENTRY _ZTV8S6567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6567C10[];
Class_Descriptor cd_S6567C10 = {  "S6567C10", // class name
  bases_S6567C10, 1,
  &(vtc_S6567C10[0]), // expected_vtbl_contents
  &(vtt_S6567C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S6567C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S6567C10),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S6567C10),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  S6567C4  : S6567C5 , S6567C10 {
  ::S6567C2 s6567c4f0;
  char s6567c4f1[4];
  ::S10296C15_nt s6567c4f2;
  virtual  ~S6567C4(); // _ZN7S6567C4D2Ev
  virtual void  v21(); // _ZN7S6567C43v21Ev
  virtual void  v22(); // _ZN7S6567C43v22Ev
  virtual void  v23(); // _ZN7S6567C43v23Ev
  virtual void  v24(); // _ZN7S6567C43v24Ev
  S6567C4(); // tgen
};
//SIG(-1 S6567C4) C1{ BC2{ VBC3{ vd v5 v6 v7 v8 v9 v10 v11 FC4{ vd v32 v33 v34 v35 v36 v37 Fs}[4]} BC5{ BC6{ v12 v13 v14 v15 v16 Fi} vd v17 v18 FC7{ BC8{ v27 v28 v29 v30 v31 Fi} vd v24 v25 v26 FC9{}}} vd v19 v20 v21 Fi[2] Fl} BC10{ VBC11{ v22} v23} vd v1 v2 v3 v4 FC3 Fc[4] FC9}


 S6567C4 ::~S6567C4(){ note_dtor("S6567C4", this);}
void  S6567C4 ::v21(){vfunc_called(this, "_ZN7S6567C43v21Ev");}
void  S6567C4 ::v22(){vfunc_called(this, "_ZN7S6567C43v22Ev");}
void  S6567C4 ::v23(){vfunc_called(this, "_ZN7S6567C43v23Ev");}
void  S6567C4 ::v24(){vfunc_called(this, "_ZN7S6567C43v24Ev");}
S6567C4 ::S6567C4(){ note_ctor("S6567C4", this);} // tgen

static void Test_S6567C4()
{
  extern Class_Descriptor cd_S6567C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(27,30)];
    init_test(&cd_S6567C4, buf);
    S6567C4 *dp, &lv = *(dp=new (buf) S6567C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,116), "sizeof(S6567C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6567C4)");
    check_base_class_offset(lv, (S6567C2*)(S6567C5*), ABISELECT(136,80), "S6567C4");
    check_base_class_offset(lv, (S6567C7*)(S6567C6*)(S6567C5*), 0, "S6567C4");
    check_base_class_offset(lv, (S6567C6*)(S6567C5*), 0, "S6567C4");
    check_base_class_offset(lv, (S6567C5*), 0, "S6567C4");
    check_base_class_offset(lv, (S6567C11*)(S6567C10*), ABISELECT(48,32), "S6567C4");
    check_base_class_offset(lv, (S6567C10*), ABISELECT(48,32), "S6567C4");
    check_field_offset(lv, s6567c4f0, ABISELECT(56,36), "S6567C4.s6567c4f0");
    check_field_offset(lv, s6567c4f1, ABISELECT(128,72), "S6567C4.s6567c4f1");
    check_field_offset(lv, s6567c4f2, ABISELECT(132,76), "S6567C4.s6567c4f2");
    test_class_info(&lv, &cd_S6567C4);
    dp->~S6567C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6567C4(Test_S6567C4, "S6567C4", ABISELECT(208,116));

#else // __cplusplus

extern void _ZN7S6567C4C1Ev();
extern void _ZN7S6567C4D2Ev();
Name_Map name_map_S6567C4[] = {
  NSPAIR(_ZN7S6567C4C1Ev),
  NSPAIR(_ZN7S6567C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6567C2;
extern VTBL_ENTRY _ZTI7S6567C2[];
extern  VTBL_ENTRY _ZTV7S6567C2[];
extern Class_Descriptor cd_S6567C7;
extern VTBL_ENTRY _ZTI7S6567C7[];
extern  VTBL_ENTRY _ZTV7S6567C7[];
extern Class_Descriptor cd_S6567C6;
extern VTBL_ENTRY _ZTI7S6567C6[];
extern  VTBL_ENTRY _ZTV7S6567C6[];
extern Class_Descriptor cd_S6567C5;
extern VTBL_ENTRY _ZTI7S6567C5[];
extern  VTBL_ENTRY _ZTV7S6567C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6567C5[];
extern Class_Descriptor cd_S6567C11;
extern VTBL_ENTRY _ZTI8S6567C11[];
extern  VTBL_ENTRY _ZTV8S6567C11[];
extern Class_Descriptor cd_S6567C10;
extern VTBL_ENTRY _ZTI8S6567C10[];
extern  VTBL_ENTRY _ZTV8S6567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6567C10[];
static Base_Class bases_S6567C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6567C2,    ABISELECT(136,80), //bcp->offset
    26, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6567C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S6567C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6567C5,    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_S6567C11,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S6567C10,    ABISELECT(48,32), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6567C4[];
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void _ZN7S6567C4D1Ev();
extern void _ZN7S6567C4D0Ev();
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
extern void _ZN7S6567C53v16Ev();
extern void _ZN7S6567C53v17Ev();
extern void _ZN7S6567C53v18Ev();
extern void _ZN7S6567C43v21Ev();
extern void _ZN7S6567C43v22Ev();
extern void _ZN7S6567C43v23Ev();
extern void _ZN7S6567C43v24Ev();
extern void _ZN8S6567C113v19Ev();
extern void _ZN8S6567C103v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S6567C4D1Ev,_ZTv0_n12_N7S6567C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S6567C4D1Ev,_ZThn80_N7S6567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6567C4D0Ev,_ZTv0_n12_N7S6567C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S6567C4D0Ev,_ZThn80_N7S6567C4D0Ev)() __attribute__((weak));
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY vtc_S6567C4[] = {
  ABISELECT(48,32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C4[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&_ZN7S6567C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v21Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v22Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v23Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v24Ev,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6567C4[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
  (VTBL_ENTRY)&_ZN8S6567C103v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S6567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C4D1Ev,_ZTv0_n12_N7S6567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C4D0Ev,_ZTv0_n12_N7S6567C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern VTBL_ENTRY _ZTV7S6567C4[];
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void _ZN7S6567C5D1Ev();
extern void _ZN7S6567C5D0Ev();
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
extern void _ZN7S6567C53v16Ev();
extern void _ZN7S6567C53v17Ev();
extern void _ZN7S6567C53v18Ev();
static  VTBL_ENTRY _tg__ZTV7S6567C5__7S6567C4[] = {
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C5[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&_ZN7S6567C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v18Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S6567C5D1Ev,_ZThn80_N7S6567C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S6567C5D0Ev,_ZThn80_N7S6567C5D0Ev)() __attribute__((weak));
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S6567C2__7S6567C5__7S6567C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S6567C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern void _ZN8S6567C113v19Ev();
extern void _ZN8S6567C103v20Ev();
static  VTBL_ENTRY _tg__ZTV8S6567C10__7S6567C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6567C10[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
  (VTBL_ENTRY)&_ZN8S6567C103v20Ev,
};
static  VTT_ENTRY vtt_S6567C4[] = {
  {&(_ZTV7S6567C4[4]),  4,45},
  {&(_tg__ZTV7S6567C5__7S6567C4[3]),  3,15},
  {&(_tg__ZTV7S6567C2__7S6567C5__7S6567C4[10]),  10,19},
  {&(_tg__ZTV8S6567C10__7S6567C4[4]),  4,6},
  {&(_tg__ZTV8S6567C10__7S6567C4[4]),  4,6},
  {&(_ZTV7S6567C4[36]),  36,45},
  {&(_ZTV7S6567C4[24]),  24,45},
  {&(_ZTV7S6567C4[24]),  24,45},
};
extern VTBL_ENTRY _ZTI7S6567C4[];
extern  VTBL_ENTRY _ZTV7S6567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6567C4[];
static VTBL_ENTRY alt_thunk_names99[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C5D0Ev,_ZThn80_N7S6567C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C5D1Ev,_ZThn80_N7S6567C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C4D0Ev,_ZTv0_n12_N7S6567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C4D0Ev,_ZThn80_N7S6567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C4D1Ev,_ZTv0_n12_N7S6567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C4D1Ev,_ZThn80_N7S6567C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6567C4 = {  "S6567C4", // class name
  bases_S6567C4, 6,
  &(vtc_S6567C4[0]), // expected_vtbl_contents
  &(vtt_S6567C4[0]), // expected_vtt_contents
  ABISELECT(208,116), // object size
  NSPAIRA(_ZTI7S6567C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6567C4),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6567C4),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names99,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6567C1  : S6567C2 , virtual S6567C4 {
  virtual void  v1(); // _ZN7S6567C12v1Ev
  ~S6567C1(); // tgen
  S6567C1(); // tgen
};
//SIG(1 S6567C1) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 FC3{ vd v25 v26 v27 v28 v29 v30 Fs}[4]} VBC4{ BC5{ VBC2 BC6{ BC7{ v9 v10 v11 v12 v13 Fi} vd v14 v15 FC8{ BC9{ v34 v35 v36 v37 v38 Fi} vd v31 v32 v33 FC10{}}} vd v16 v17 v18 Fi[2] Fl} BC11{ VBC12{ v19} v20} vd v21 v22 v23 v24 FC2 Fc[4] FC10} v1}


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

static void Test_S6567C1()
{
  extern Class_Descriptor cd_S6567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,39)];
    init_test(&cd_S6567C1, buf);
    S6567C1 *dp, &lv = *(dp=new (buf) S6567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,152), "sizeof(S6567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6567C1)");
    /*is_ambiguous_... S6567C1::S6567C2 */ AMB_check_base_class_offset(lv, (S6567C2*), 0, "S6567C1");
    check_base_class_offset(lv, (S6567C2*)(S6567C5*)(S6567C4*), ABISELECT(208,116), "S6567C1");
    check_base_class_offset(lv, (S6567C7*)(S6567C6*)(S6567C5*)(S6567C4*), ABISELECT(72,36), "S6567C1");
    check_base_class_offset(lv, (S6567C6*)(S6567C5*)(S6567C4*), ABISELECT(72,36), "S6567C1");
    check_base_class_offset(lv, (S6567C5*)(S6567C4*), ABISELECT(72,36), "S6567C1");
    check_base_class_offset(lv, (S6567C11*)(S6567C10*)(S6567C4*), ABISELECT(120,68), "S6567C1");
    check_base_class_offset(lv, (S6567C10*)(S6567C4*), ABISELECT(120,68), "S6567C1");
    check_base_class_offset(lv, (S6567C4*), ABISELECT(72,36), "S6567C1");
    test_class_info(&lv, &cd_S6567C1);
    dp->~S6567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6567C1(Test_S6567C1, "S6567C1", ABISELECT(280,152));

#else // __cplusplus

extern void _ZN7S6567C1C1Ev();
extern void _ZN7S6567C1D1Ev();
Name_Map name_map_S6567C1[] = {
  NSPAIR(_ZN7S6567C1C1Ev),
  NSPAIR(_ZN7S6567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6567C2;
extern VTBL_ENTRY _ZTI7S6567C2[];
extern  VTBL_ENTRY _ZTV7S6567C2[];
extern Class_Descriptor cd_S6567C2;
extern VTBL_ENTRY _ZTI7S6567C2[];
extern  VTBL_ENTRY _ZTV7S6567C2[];
extern Class_Descriptor cd_S6567C7;
extern VTBL_ENTRY _ZTI7S6567C7[];
extern  VTBL_ENTRY _ZTV7S6567C7[];
extern Class_Descriptor cd_S6567C6;
extern VTBL_ENTRY _ZTI7S6567C6[];
extern  VTBL_ENTRY _ZTV7S6567C6[];
extern Class_Descriptor cd_S6567C5;
extern VTBL_ENTRY _ZTI7S6567C5[];
extern  VTBL_ENTRY _ZTV7S6567C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6567C5[];
extern Class_Descriptor cd_S6567C11;
extern VTBL_ENTRY _ZTI8S6567C11[];
extern  VTBL_ENTRY _ZTV8S6567C11[];
extern Class_Descriptor cd_S6567C10;
extern VTBL_ENTRY _ZTI8S6567C10[];
extern  VTBL_ENTRY _ZTV8S6567C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S6567C10[];
extern Class_Descriptor cd_S6567C4;
extern VTBL_ENTRY _ZTI7S6567C4[];
extern  VTBL_ENTRY _ZTV7S6567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6567C4[];
static Base_Class bases_S6567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6567C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6567C2,    ABISELECT(208,116), //bcp->offset
    57, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S6567C7,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6567C6,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S6567C5,    ABISELECT(72,36), //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
    7, //immediately_derived
  0, 0},
  {&cd_S6567C11,    ABISELECT(120,68), //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
    2, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S6567C10,    ABISELECT(120,68), //bcp->offset
    51, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S6567C4,    ABISELECT(72,36), //bcp->offset
    15, //bcp->virtual_function_table_offset
    20, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6567C1[];
extern void _ZN7S6567C1D1Ev();
extern void _ZN7S6567C1D0Ev();
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
extern void _ZN7S6567C12v1Ev();
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void ABISELECT(_ZTv0_n80_N7S6567C1D1Ev,_ZTv0_n40_N7S6567C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S6567C1D1Ev,_ZThn36_N7S6567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N7S6567C1D0Ev,_ZTv0_n40_N7S6567C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S6567C1D0Ev,_ZThn36_N7S6567C1D0Ev)() __attribute__((weak));
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
extern void _ZN7S6567C53v16Ev();
extern void _ZN7S6567C53v17Ev();
extern void _ZN7S6567C53v18Ev();
extern void _ZN7S6567C43v21Ev();
extern void _ZN7S6567C43v22Ev();
extern void _ZN7S6567C43v23Ev();
extern void _ZN7S6567C43v24Ev();
extern void _ZN8S6567C113v19Ev();
extern void _ZN8S6567C103v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S6567C1D1Ev,_ZTv0_n12_N7S6567C1D1Ev)();
extern void ABISELECT(_ZThn208_N7S6567C1D1Ev,_ZThn116_N7S6567C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6567C1D0Ev,_ZTv0_n12_N7S6567C1D0Ev)();
extern void ABISELECT(_ZThn208_N7S6567C1D0Ev,_ZThn116_N7S6567C1D0Ev)() __attribute__((weak));
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY vtc_S6567C1[] = {
  ABISELECT(120,68),
  ABISELECT(208,116),
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C1[0]),
  (VTBL_ENTRY)&_ZN7S6567C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6567C12v1Ev,
  ABISELECT(48,32),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(48,32),
  ABISELECT(136,80),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S6567C1[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6567C1D1Ev,_ZTv0_n40_N7S6567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N7S6567C1D0Ev,_ZTv0_n40_N7S6567C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v21Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v22Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v23Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v24Ev,
  0,
  0,
  ABISELECT(-120,-68),
  (VTBL_ENTRY)&(_ZTI7S6567C1[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
  (VTBL_ENTRY)&_ZN8S6567C103v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-208,-116),
  ABISELECT(-208,-116),
  (VTBL_ENTRY)&(_ZTI7S6567C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C1D1Ev,_ZTv0_n12_N7S6567C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C1D0Ev,_ZTv0_n12_N7S6567C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern VTBL_ENTRY _ZTV7S6567C1[];
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void _ZN7S6567C4D1Ev();
extern void _ZN7S6567C4D0Ev();
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
extern void _ZN7S6567C53v16Ev();
extern void _ZN7S6567C53v17Ev();
extern void _ZN7S6567C53v18Ev();
extern void _ZN7S6567C43v21Ev();
extern void _ZN7S6567C43v22Ev();
extern void _ZN7S6567C43v23Ev();
extern void _ZN7S6567C43v24Ev();
static  VTBL_ENTRY _tg__ZTV7S6567C4__7S6567C1[] = {
  ABISELECT(48,32),
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C4[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&_ZN7S6567C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C4D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v21Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v22Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v23Ev,
  (VTBL_ENTRY)&_ZN7S6567C43v24Ev,
};
extern void _ZN7S6567C72v9Ev();
extern void _ZN7S6567C73v10Ev();
extern void _ZN7S6567C73v11Ev();
extern void _ZN7S6567C73v12Ev();
extern void _ZN7S6567C73v13Ev();
extern void _ZN7S6567C5D1Ev();
extern void _ZN7S6567C5D0Ev();
extern void _ZN7S6567C63v14Ev();
extern void _ZN7S6567C63v15Ev();
extern void _ZN7S6567C53v16Ev();
extern void _ZN7S6567C53v17Ev();
extern void _ZN7S6567C53v18Ev();
static  VTBL_ENTRY _tg__ZTV7S6567C57S6567C4__7S6567C1[] = {
  ABISELECT(136,80),
  0,
  (VTBL_ENTRY)&(_ZTI7S6567C5[0]),
  (VTBL_ENTRY)&_ZN7S6567C72v9Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v10Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v11Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v12Ev,
  (VTBL_ENTRY)&_ZN7S6567C73v13Ev,
  (VTBL_ENTRY)&_ZN7S6567C5D1Ev,
  (VTBL_ENTRY)&_ZN7S6567C5D0Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v14Ev,
  (VTBL_ENTRY)&_ZN7S6567C63v15Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v16Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v17Ev,
  (VTBL_ENTRY)&_ZN7S6567C53v18Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev)();
extern void ABISELECT(_ZThn136_N7S6567C5D1Ev,_ZThn80_N7S6567C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev)();
extern void ABISELECT(_ZThn136_N7S6567C5D0Ev,_ZThn80_N7S6567C5D0Ev)() __attribute__((weak));
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S6567C2__7S6567C57S6567C4__7S6567C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S6567C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern void _ZN8S6567C113v19Ev();
extern void _ZN8S6567C103v20Ev();
static  VTBL_ENTRY _tg__ZTV8S6567C107S6567C4__7S6567C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S6567C10[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
  (VTBL_ENTRY)&_ZN8S6567C103v20Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6567C4D1Ev,_ZTv0_n12_N7S6567C4D1Ev)();
extern void ABISELECT(_ZThn136_N7S6567C4D1Ev,_ZThn80_N7S6567C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6567C4D0Ev,_ZTv0_n12_N7S6567C4D0Ev)();
extern void ABISELECT(_ZThn136_N7S6567C4D0Ev,_ZThn80_N7S6567C4D0Ev)() __attribute__((weak));
extern void _ZN7S6567C22v2Ev();
extern void _ZN7S6567C22v3Ev();
extern void _ZN7S6567C22v4Ev();
extern void _ZN7S6567C22v5Ev();
extern void _ZN7S6567C22v6Ev();
extern void _ZN7S6567C22v7Ev();
extern void _ZN7S6567C22v8Ev();
static  VTBL_ENTRY _tg__ZTV7S6567C2__7S6567C4__7S6567C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-136,-80),
  ABISELECT(-136,-80),
  (VTBL_ENTRY)&(_ZTI7S6567C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C4D1Ev,_ZTv0_n12_N7S6567C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6567C4D0Ev,_ZTv0_n12_N7S6567C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6567C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6567C22v8Ev,
};
extern void _ZN8S6567C113v19Ev();
extern void _ZN8S6567C103v20Ev();
static  VTBL_ENTRY _tg__ZTV8S6567C10__7S6567C4__7S6567C1[] = {
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI7S6567C4[0]),
  (VTBL_ENTRY)&_ZN8S6567C113v19Ev,
  (VTBL_ENTRY)&_ZN8S6567C103v20Ev,
};
static  VTT_ENTRY vtt_S6567C1[] = {
  {&(_ZTV7S6567C1[5]),  5,76},
  {&(_ZTV7S6567C1[35]),  35,76},
  {&(_ZTV7S6567C1[67]),  67,76},
  {&(_ZTV7S6567C1[55]),  55,76},
  {&(_ZTV7S6567C1[55]),  55,76},
  {&(_tg__ZTV7S6567C4__7S6567C1[4]),  4,20},
  {&(_tg__ZTV7S6567C57S6567C4__7S6567C1[3]),  3,15},
  {&(_tg__ZTV7S6567C2__7S6567C57S6567C4__7S6567C1[10]),  10,19},
  {&(_tg__ZTV8S6567C107S6567C4__7S6567C1[4]),  4,6},
  {&(_tg__ZTV8S6567C107S6567C4__7S6567C1[4]),  4,6},
  {&(_tg__ZTV7S6567C2__7S6567C4__7S6567C1[10]),  10,19},
  {&(_tg__ZTV8S6567C10__7S6567C4__7S6567C1[4]),  4,6},
  {&(_tg__ZTV8S6567C10__7S6567C4__7S6567C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6567C1[];
extern  VTBL_ENTRY _ZTV7S6567C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6567C1[];
static VTBL_ENTRY alt_thunk_names100[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C4D0Ev,_ZTv0_n12_N7S6567C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C4D0Ev,_ZThn80_N7S6567C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C4D1Ev,_ZTv0_n12_N7S6567C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C4D1Ev,_ZThn80_N7S6567C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C5D0Ev,_ZTv0_n12_N7S6567C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C5D0Ev,_ZThn80_N7S6567C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C5D1Ev,_ZTv0_n12_N7S6567C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn136_N7S6567C5D1Ev,_ZThn80_N7S6567C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C1D0Ev,_ZTv0_n12_N7S6567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6567C1D0Ev,_ZThn116_N7S6567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6567C1D1Ev,_ZTv0_n12_N7S6567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn208_N7S6567C1D1Ev,_ZThn116_N7S6567C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6567C1D0Ev,_ZTv0_n40_N7S6567C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6567C1D0Ev,_ZThn36_N7S6567C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N7S6567C1D1Ev,_ZTv0_n40_N7S6567C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S6567C1D1Ev,_ZThn36_N7S6567C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6567C1 = {  "S6567C1", // class name
  bases_S6567C1, 8,
  &(vtc_S6567C1[0]), // expected_vtbl_contents
  &(vtt_S6567C1[0]), // expected_vtt_contents
  ABISELECT(280,152), // object size
  NSPAIRA(_ZTI7S6567C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6567C1),76, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6567C1),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names100,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4284C3  {
  virtual  ~S4284C3(); // _ZN7S4284C3D1Ev
  virtual void  v15(); // _ZN7S4284C33v15Ev
  S4284C3(); // tgen
};
//SIG(-1 S4284C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4284C3C1Ev();
extern void _ZN7S4284C3D1Ev();
Name_Map name_map_S4284C3[] = {
  NSPAIR(_ZN7S4284C3C1Ev),
  NSPAIR(_ZN7S4284C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4284C3[];
extern void _ZN7S4284C3D1Ev();
extern void _ZN7S4284C3D0Ev();
extern void _ZN7S4284C33v15Ev();
static  VTBL_ENTRY vtc_S4284C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4284C3[0]),
  (VTBL_ENTRY)&_ZN7S4284C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4284C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4284C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S4284C3[];
extern  VTBL_ENTRY _ZTV7S4284C3[];
Class_Descriptor cd_S4284C3 = {  "S4284C3", // class name
  0,0,//no base classes
  &(vtc_S4284C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4284C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4284C3),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  S4284C2  : S4284C3 {
  void *s4284c2f0;
  virtual void  v16(); // _ZN7S4284C23v16Ev
  virtual void  v17(); // _ZN7S4284C23v17Ev
  virtual void  v18(); // _ZN7S4284C23v18Ev
  virtual void  v19(); // _ZN7S4284C23v19Ev
  virtual void  v20(); // _ZN7S4284C23v20Ev
  virtual void  v21(); // _ZN7S4284C23v21Ev
  virtual void  v22(); // _ZN7S4284C23v22Ev
  ~S4284C2(); // tgen
  S4284C2(); // tgen
};
//SIG(-1 S4284C2) C1{ BC2{ vd v8} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S4284C2 ::v16(){vfunc_called(this, "_ZN7S4284C23v16Ev");}
void  S4284C2 ::v17(){vfunc_called(this, "_ZN7S4284C23v17Ev");}
void  S4284C2 ::v18(){vfunc_called(this, "_ZN7S4284C23v18Ev");}
void  S4284C2 ::v19(){vfunc_called(this, "_ZN7S4284C23v19Ev");}
void  S4284C2 ::v20(){vfunc_called(this, "_ZN7S4284C23v20Ev");}
void  S4284C2 ::v21(){vfunc_called(this, "_ZN7S4284C23v21Ev");}
void  S4284C2 ::v22(){vfunc_called(this, "_ZN7S4284C23v22Ev");}
S4284C2 ::~S4284C2(){ note_dtor("S4284C2", this);} // tgen
S4284C2 ::S4284C2(){ note_ctor("S4284C2", this);} // tgen

static void Test_S4284C2()
{
  extern Class_Descriptor cd_S4284C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S4284C2, buf);
    S4284C2 *dp, &lv = *(dp=new (buf) S4284C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S4284C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4284C2)");
    check_base_class_offset(lv, (S4284C3*), 0, "S4284C2");
    check_field_offset(lv, s4284c2f0, ABISELECT(8,4), "S4284C2.s4284c2f0");
    test_class_info(&lv, &cd_S4284C2);
    dp->~S4284C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4284C2(Test_S4284C2, "S4284C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S4284C2C1Ev();
extern void _ZN7S4284C2D1Ev();
Name_Map name_map_S4284C2[] = {
  NSPAIR(_ZN7S4284C2C1Ev),
  NSPAIR(_ZN7S4284C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4284C3;
extern VTBL_ENTRY _ZTI7S4284C3[];
extern  VTBL_ENTRY _ZTV7S4284C3[];
static Base_Class bases_S4284C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4284C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4284C2[];
extern void _ZN7S4284C2D1Ev();
extern void _ZN7S4284C2D0Ev();
extern void _ZN7S4284C33v15Ev();
extern void _ZN7S4284C23v16Ev();
extern void _ZN7S4284C23v17Ev();
extern void _ZN7S4284C23v18Ev();
extern void _ZN7S4284C23v19Ev();
extern void _ZN7S4284C23v20Ev();
extern void _ZN7S4284C23v21Ev();
extern void _ZN7S4284C23v22Ev();
static  VTBL_ENTRY vtc_S4284C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4284C2[0]),
  (VTBL_ENTRY)&_ZN7S4284C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4284C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4284C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S4284C2[];
extern  VTBL_ENTRY _ZTV7S4284C2[];
Class_Descriptor cd_S4284C2 = {  "S4284C2", // class name
  bases_S4284C2, 1,
  &(vtc_S4284C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4284C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4284C2),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  S4284C4  {
  virtual  ~S4284C4(); // _ZN7S4284C4D1Ev
  virtual void  v23(); // _ZN7S4284C43v23Ev
  virtual void  v24(); // _ZN7S4284C43v24Ev
  virtual void  v25(); // _ZN7S4284C43v25Ev
  S4284C4(); // tgen
};
//SIG(-1 S4284C4) C1{ vd v1 v2 v3}


 S4284C4 ::~S4284C4(){ note_dtor("S4284C4", this);}
void  S4284C4 ::v23(){vfunc_called(this, "_ZN7S4284C43v23Ev");}
void  S4284C4 ::v24(){vfunc_called(this, "_ZN7S4284C43v24Ev");}
void  S4284C4 ::v25(){vfunc_called(this, "_ZN7S4284C43v25Ev");}
S4284C4 ::S4284C4(){ note_ctor("S4284C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S4284C4C1Ev();
extern void _ZN7S4284C4D1Ev();
Name_Map name_map_S4284C4[] = {
  NSPAIR(_ZN7S4284C4C1Ev),
  NSPAIR(_ZN7S4284C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4284C4[];
extern void _ZN7S4284C4D1Ev();
extern void _ZN7S4284C4D0Ev();
extern void _ZN7S4284C43v23Ev();
extern void _ZN7S4284C43v24Ev();
extern void _ZN7S4284C43v25Ev();
static  VTBL_ENTRY vtc_S4284C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4284C4[0]),
  (VTBL_ENTRY)&_ZN7S4284C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4284C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4284C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4284C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4284C43v25Ev,
};
extern VTBL_ENTRY _ZTI7S4284C4[];
extern  VTBL_ENTRY _ZTV7S4284C4[];
Class_Descriptor cd_S4284C4 = {  "S4284C4", // class name
  0,0,//no base classes
  &(vtc_S4284C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4284C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4284C4),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  S4284C1  : S4284C2 , S4284C4 {
  ::S9624C46_nt s4284c1f0;
  ::S9857C33_nt s4284c1f1;
  int s4284c1f2;
  ::S9624C35 s4284c1f3;
  ::S9857C33_nt s4284c1f4;
  ::S9624C47 s4284c1f5;
  ::S9857C33_nt s4284c1f6;
  virtual  ~S4284C1(); // _ZN7S4284C1D1Ev
  virtual void  v1(); // _ZN7S4284C12v1Ev
  virtual void  v2(); // _ZN7S4284C12v2Ev
  virtual void  v3(); // _ZN7S4284C12v3Ev
  virtual void  v4(); // _ZN7S4284C12v4Ev
  virtual void  v5(); // _ZN7S4284C12v5Ev
  virtual void  v6(); // _ZN7S4284C12v6Ev
  virtual void  v7(); // _ZN7S4284C12v7Ev
  virtual void  v8(); // _ZN7S4284C12v8Ev
  virtual void  v9(); // _ZN7S4284C12v9Ev
  virtual void  v10(); // _ZN7S4284C13v10Ev
  virtual void  v11(); // _ZN7S4284C13v11Ev
  virtual void  v12(); // _ZN7S4284C13v12Ev
  virtual void  v13(); // _ZN7S4284C13v13Ev
  virtual void  v14(); // _ZN7S4284C13v14Ev
  S4284C1(); // tgen
};
//SIG(1 S4284C1) C1{ BC2{ BC3{ vd v15} v16 v17 v18 v19 v20 v21 v22 Fp} BC4{ vd v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 FC5{ m FC6{ m Fp Fi FC7{ m} FC7}} FC8{ m FC9{ FL[4]}} Fi FC10{ m Fp Fi[2] FC11{ m}} FC8 FC6 FC8}


 S4284C1 ::~S4284C1(){ note_dtor("S4284C1", this);}
void  S4284C1 ::v1(){vfunc_called(this, "_ZN7S4284C12v1Ev");}
void  S4284C1 ::v2(){vfunc_called(this, "_ZN7S4284C12v2Ev");}
void  S4284C1 ::v3(){vfunc_called(this, "_ZN7S4284C12v3Ev");}
void  S4284C1 ::v4(){vfunc_called(this, "_ZN7S4284C12v4Ev");}
void  S4284C1 ::v5(){vfunc_called(this, "_ZN7S4284C12v5Ev");}
void  S4284C1 ::v6(){vfunc_called(this, "_ZN7S4284C12v6Ev");}
void  S4284C1 ::v7(){vfunc_called(this, "_ZN7S4284C12v7Ev");}
void  S4284C1 ::v8(){vfunc_called(this, "_ZN7S4284C12v8Ev");}
void  S4284C1 ::v9(){vfunc_called(this, "_ZN7S4284C12v9Ev");}
void  S4284C1 ::v10(){vfunc_called(this, "_ZN7S4284C13v10Ev");}
void  S4284C1 ::v11(){vfunc_called(this, "_ZN7S4284C13v11Ev");}
void  S4284C1 ::v12(){vfunc_called(this, "_ZN7S4284C13v12Ev");}
void  S4284C1 ::v13(){vfunc_called(this, "_ZN7S4284C13v13Ev");}
void  S4284C1 ::v14(){vfunc_called(this, "_ZN7S4284C13v14Ev");}
S4284C1 ::S4284C1(){ note_ctor("S4284C1", this);} // tgen

static void Test_S4284C1()
{
  extern Class_Descriptor cd_S4284C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,39)];
    init_test(&cd_S4284C1, buf);
    S4284C1 *dp, &lv = *(dp=new (buf) S4284C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,152), "sizeof(S4284C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4284C1)");
    check_base_class_offset(lv, (S4284C3*)(S4284C2*), 0, "S4284C1");
    check_base_class_offset(lv, (S4284C2*), 0, "S4284C1");
    check_base_class_offset(lv, (S4284C4*), ABISELECT(16,8), "S4284C1");
    check_field_offset(lv, s4284c1f0, ABISELECT(24,12), "S4284C1.s4284c1f0");
    check_field_offset(lv, s4284c1f1, ABISELECT(40,24), "S4284C1.s4284c1f1");
    check_field_offset(lv, s4284c1f2, ABISELECT(72,56), "S4284C1.s4284c1f2");
    check_field_offset(lv, s4284c1f3, ABISELECT(80,60), "S4284C1.s4284c1f3");
    check_field_offset(lv, s4284c1f4, ABISELECT(104,76), "S4284C1.s4284c1f4");
    check_field_offset(lv, s4284c1f5, ABISELECT(136,108), "S4284C1.s4284c1f5");
    check_field_offset(lv, s4284c1f6, ABISELECT(152,120), "S4284C1.s4284c1f6");
    test_class_info(&lv, &cd_S4284C1);
    dp->~S4284C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4284C1(Test_S4284C1, "S4284C1", ABISELECT(184,152));

#else // __cplusplus

extern void _ZN7S4284C1C1Ev();
extern void _ZN7S4284C1D1Ev();
Name_Map name_map_S4284C1[] = {
  NSPAIR(_ZN7S4284C1C1Ev),
  NSPAIR(_ZN7S4284C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4284C3;
extern VTBL_ENTRY _ZTI7S4284C3[];
extern  VTBL_ENTRY _ZTV7S4284C3[];
extern Class_Descriptor cd_S4284C2;
extern VTBL_ENTRY _ZTI7S4284C2[];
extern  VTBL_ENTRY _ZTV7S4284C2[];
extern Class_Descriptor cd_S4284C4;
extern VTBL_ENTRY _ZTI7S4284C4[];
extern  VTBL_ENTRY _ZTV7S4284C4[];
static Base_Class bases_S4284C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4284C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4284C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4284C4,    ABISELECT(16,8), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4284C1[];
extern void _ZN7S4284C1D1Ev();
extern void _ZN7S4284C1D0Ev();
extern void _ZN7S4284C33v15Ev();
extern void _ZN7S4284C23v16Ev();
extern void _ZN7S4284C23v17Ev();
extern void _ZN7S4284C23v18Ev();
extern void _ZN7S4284C23v19Ev();
extern void _ZN7S4284C23v20Ev();
extern void _ZN7S4284C23v21Ev();
extern void _ZN7S4284C23v22Ev();
extern void _ZN7S4284C12v1Ev();
extern void _ZN7S4284C12v2Ev();
extern void _ZN7S4284C12v3Ev();
extern void _ZN7S4284C12v4Ev();
extern void _ZN7S4284C12v5Ev();
extern void _ZN7S4284C12v6Ev();
extern void _ZN7S4284C12v7Ev();
extern void _ZN7S4284C12v8Ev();
extern void _ZN7S4284C12v9Ev();
extern void _ZN7S4284C13v10Ev();
extern void _ZN7S4284C13v11Ev();
extern void _ZN7S4284C13v12Ev();
extern void _ZN7S4284C13v13Ev();
extern void _ZN7S4284C13v14Ev();
extern void ABISELECT(_ZThn16_N7S4284C1D1Ev,_ZThn8_N7S4284C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S4284C1D0Ev,_ZThn8_N7S4284C1D0Ev)();
extern void _ZN7S4284C43v23Ev();
extern void _ZN7S4284C43v24Ev();
extern void _ZN7S4284C43v25Ev();
static  VTBL_ENTRY vtc_S4284C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4284C1[0]),
  (VTBL_ENTRY)&_ZN7S4284C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4284C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4284C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4284C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4284C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4284C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4284C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4284C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4284C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4284C13v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S4284C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4284C1D1Ev,_ZThn8_N7S4284C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4284C1D0Ev,_ZThn8_N7S4284C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4284C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4284C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4284C43v25Ev,
};
extern VTBL_ENTRY _ZTI7S4284C1[];
extern  VTBL_ENTRY _ZTV7S4284C1[];
Class_Descriptor cd_S4284C1 = {  "S4284C1", // class name
  bases_S4284C1, 3,
  &(vtc_S4284C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,152), // object size
  NSPAIRA(_ZTI7S4284C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4284C1),33, //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  S4283C3  {
  virtual  ~S4283C3(); // _ZN7S4283C3D1Ev
  virtual void  v15(); // _ZN7S4283C33v15Ev
  S4283C3(); // tgen
};
//SIG(-1 S4283C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4283C3C1Ev();
extern void _ZN7S4283C3D1Ev();
Name_Map name_map_S4283C3[] = {
  NSPAIR(_ZN7S4283C3C1Ev),
  NSPAIR(_ZN7S4283C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4283C3[];
extern void _ZN7S4283C3D1Ev();
extern void _ZN7S4283C3D0Ev();
extern void _ZN7S4283C33v15Ev();
static  VTBL_ENTRY vtc_S4283C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4283C3[0]),
  (VTBL_ENTRY)&_ZN7S4283C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4283C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4283C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S4283C3[];
extern  VTBL_ENTRY _ZTV7S4283C3[];
Class_Descriptor cd_S4283C3 = {  "S4283C3", // class name
  0,0,//no base classes
  &(vtc_S4283C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4283C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4283C3),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  S4283C2  : S4283C3 {
  void *s4283c2f0;
  virtual void  v16(); // _ZN7S4283C23v16Ev
  virtual void  v17(); // _ZN7S4283C23v17Ev
  virtual void  v18(); // _ZN7S4283C23v18Ev
  virtual void  v19(); // _ZN7S4283C23v19Ev
  virtual void  v20(); // _ZN7S4283C23v20Ev
  virtual void  v21(); // _ZN7S4283C23v21Ev
  virtual void  v22(); // _ZN7S4283C23v22Ev
  ~S4283C2(); // tgen
  S4283C2(); // tgen
};
//SIG(-1 S4283C2) C1{ BC2{ vd v8} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S4283C2 ::v16(){vfunc_called(this, "_ZN7S4283C23v16Ev");}
void  S4283C2 ::v17(){vfunc_called(this, "_ZN7S4283C23v17Ev");}
void  S4283C2 ::v18(){vfunc_called(this, "_ZN7S4283C23v18Ev");}
void  S4283C2 ::v19(){vfunc_called(this, "_ZN7S4283C23v19Ev");}
void  S4283C2 ::v20(){vfunc_called(this, "_ZN7S4283C23v20Ev");}
void  S4283C2 ::v21(){vfunc_called(this, "_ZN7S4283C23v21Ev");}
void  S4283C2 ::v22(){vfunc_called(this, "_ZN7S4283C23v22Ev");}
S4283C2 ::~S4283C2(){ note_dtor("S4283C2", this);} // tgen
S4283C2 ::S4283C2(){ note_ctor("S4283C2", this);} // tgen

static void Test_S4283C2()
{
  extern Class_Descriptor cd_S4283C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S4283C2, buf);
    S4283C2 *dp, &lv = *(dp=new (buf) S4283C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S4283C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4283C2)");
    check_base_class_offset(lv, (S4283C3*), 0, "S4283C2");
    check_field_offset(lv, s4283c2f0, ABISELECT(8,4), "S4283C2.s4283c2f0");
    test_class_info(&lv, &cd_S4283C2);
    dp->~S4283C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4283C2(Test_S4283C2, "S4283C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S4283C2C1Ev();
extern void _ZN7S4283C2D1Ev();
Name_Map name_map_S4283C2[] = {
  NSPAIR(_ZN7S4283C2C1Ev),
  NSPAIR(_ZN7S4283C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4283C3;
extern VTBL_ENTRY _ZTI7S4283C3[];
extern  VTBL_ENTRY _ZTV7S4283C3[];
static Base_Class bases_S4283C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4283C2[];
extern void _ZN7S4283C2D1Ev();
extern void _ZN7S4283C2D0Ev();
extern void _ZN7S4283C33v15Ev();
extern void _ZN7S4283C23v16Ev();
extern void _ZN7S4283C23v17Ev();
extern void _ZN7S4283C23v18Ev();
extern void _ZN7S4283C23v19Ev();
extern void _ZN7S4283C23v20Ev();
extern void _ZN7S4283C23v21Ev();
extern void _ZN7S4283C23v22Ev();
static  VTBL_ENTRY vtc_S4283C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4283C2[0]),
  (VTBL_ENTRY)&_ZN7S4283C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4283C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4283C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S4283C2[];
extern  VTBL_ENTRY _ZTV7S4283C2[];
Class_Descriptor cd_S4283C2 = {  "S4283C2", // class name
  bases_S4283C2, 1,
  &(vtc_S4283C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4283C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4283C2),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  S4283C4  {
  virtual  ~S4283C4(); // _ZN7S4283C4D1Ev
  virtual void  v23(); // _ZN7S4283C43v23Ev
  virtual void  v24(); // _ZN7S4283C43v24Ev
  virtual void  v25(); // _ZN7S4283C43v25Ev
  S4283C4(); // tgen
};
//SIG(-1 S4283C4) C1{ vd v1 v2 v3}


 S4283C4 ::~S4283C4(){ note_dtor("S4283C4", this);}
void  S4283C4 ::v23(){vfunc_called(this, "_ZN7S4283C43v23Ev");}
void  S4283C4 ::v24(){vfunc_called(this, "_ZN7S4283C43v24Ev");}
void  S4283C4 ::v25(){vfunc_called(this, "_ZN7S4283C43v25Ev");}
S4283C4 ::S4283C4(){ note_ctor("S4283C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S4283C4C1Ev();
extern void _ZN7S4283C4D1Ev();
Name_Map name_map_S4283C4[] = {
  NSPAIR(_ZN7S4283C4C1Ev),
  NSPAIR(_ZN7S4283C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4283C4[];
extern void _ZN7S4283C4D1Ev();
extern void _ZN7S4283C4D0Ev();
extern void _ZN7S4283C43v23Ev();
extern void _ZN7S4283C43v24Ev();
extern void _ZN7S4283C43v25Ev();
static  VTBL_ENTRY vtc_S4283C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4283C4[0]),
  (VTBL_ENTRY)&_ZN7S4283C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4283C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4283C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4283C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4283C43v25Ev,
};
extern VTBL_ENTRY _ZTI7S4283C4[];
extern  VTBL_ENTRY _ZTV7S4283C4[];
Class_Descriptor cd_S4283C4 = {  "S4283C4", // class name
  0,0,//no base classes
  &(vtc_S4283C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4283C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4283C4),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  S4283C1  : S4283C2 , S4283C4 {
  ::S9624C46_nt s4283c1f0;
  ::S9856C33_nt s4283c1f1;
  int s4283c1f2;
  ::S9624C35 s4283c1f3;
  ::S9856C33_nt s4283c1f4;
  ::S9624C47 s4283c1f5;
  ::S9856C33_nt s4283c1f6;
  virtual  ~S4283C1(); // _ZN7S4283C1D1Ev
  virtual void  v1(); // _ZN7S4283C12v1Ev
  virtual void  v2(); // _ZN7S4283C12v2Ev
  virtual void  v3(); // _ZN7S4283C12v3Ev
  virtual void  v4(); // _ZN7S4283C12v4Ev
  virtual void  v5(); // _ZN7S4283C12v5Ev
  virtual void  v6(); // _ZN7S4283C12v6Ev
  virtual void  v7(); // _ZN7S4283C12v7Ev
  virtual void  v8(); // _ZN7S4283C12v8Ev
  virtual void  v9(); // _ZN7S4283C12v9Ev
  virtual void  v10(); // _ZN7S4283C13v10Ev
  virtual void  v11(); // _ZN7S4283C13v11Ev
  virtual void  v12(); // _ZN7S4283C13v12Ev
  virtual void  v13(); // _ZN7S4283C13v13Ev
  virtual void  v14(); // _ZN7S4283C13v14Ev
  S4283C1(); // tgen
};
//SIG(1 S4283C1) C1{ BC2{ BC3{ vd v15} v16 v17 v18 v19 v20 v21 v22 Fp} BC4{ vd v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 FC5{ m FC6{ m Fp Fi FC7{ m} FC7}} FC8{ m FC9{ Fl[4]}} Fi FC10{ m Fp Fi[2] FC11{ m}} FC8 FC6 FC8}


 S4283C1 ::~S4283C1(){ note_dtor("S4283C1", this);}
void  S4283C1 ::v1(){vfunc_called(this, "_ZN7S4283C12v1Ev");}
void  S4283C1 ::v2(){vfunc_called(this, "_ZN7S4283C12v2Ev");}
void  S4283C1 ::v3(){vfunc_called(this, "_ZN7S4283C12v3Ev");}
void  S4283C1 ::v4(){vfunc_called(this, "_ZN7S4283C12v4Ev");}
void  S4283C1 ::v5(){vfunc_called(this, "_ZN7S4283C12v5Ev");}
void  S4283C1 ::v6(){vfunc_called(this, "_ZN7S4283C12v6Ev");}
void  S4283C1 ::v7(){vfunc_called(this, "_ZN7S4283C12v7Ev");}
void  S4283C1 ::v8(){vfunc_called(this, "_ZN7S4283C12v8Ev");}
void  S4283C1 ::v9(){vfunc_called(this, "_ZN7S4283C12v9Ev");}
void  S4283C1 ::v10(){vfunc_called(this, "_ZN7S4283C13v10Ev");}
void  S4283C1 ::v11(){vfunc_called(this, "_ZN7S4283C13v11Ev");}
void  S4283C1 ::v12(){vfunc_called(this, "_ZN7S4283C13v12Ev");}
void  S4283C1 ::v13(){vfunc_called(this, "_ZN7S4283C13v13Ev");}
void  S4283C1 ::v14(){vfunc_called(this, "_ZN7S4283C13v14Ev");}
S4283C1 ::S4283C1(){ note_ctor("S4283C1", this);} // tgen

static void Test_S4283C1()
{
  extern Class_Descriptor cd_S4283C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,27)];
    init_test(&cd_S4283C1, buf);
    S4283C1 *dp, &lv = *(dp=new (buf) S4283C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,104), "sizeof(S4283C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4283C1)");
    check_base_class_offset(lv, (S4283C3*)(S4283C2*), 0, "S4283C1");
    check_base_class_offset(lv, (S4283C2*), 0, "S4283C1");
    check_base_class_offset(lv, (S4283C4*), ABISELECT(16,8), "S4283C1");
    check_field_offset(lv, s4283c1f0, ABISELECT(24,12), "S4283C1.s4283c1f0");
    check_field_offset(lv, s4283c1f1, ABISELECT(40,24), "S4283C1.s4283c1f1");
    check_field_offset(lv, s4283c1f2, ABISELECT(72,40), "S4283C1.s4283c1f2");
    check_field_offset(lv, s4283c1f3, ABISELECT(80,44), "S4283C1.s4283c1f3");
    check_field_offset(lv, s4283c1f4, ABISELECT(104,60), "S4283C1.s4283c1f4");
    check_field_offset(lv, s4283c1f5, ABISELECT(136,76), "S4283C1.s4283c1f5");
    check_field_offset(lv, s4283c1f6, ABISELECT(152,88), "S4283C1.s4283c1f6");
    test_class_info(&lv, &cd_S4283C1);
    dp->~S4283C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4283C1(Test_S4283C1, "S4283C1", ABISELECT(184,104));

#else // __cplusplus

extern void _ZN7S4283C1C1Ev();
extern void _ZN7S4283C1D1Ev();
Name_Map name_map_S4283C1[] = {
  NSPAIR(_ZN7S4283C1C1Ev),
  NSPAIR(_ZN7S4283C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4283C3;
extern VTBL_ENTRY _ZTI7S4283C3[];
extern  VTBL_ENTRY _ZTV7S4283C3[];
extern Class_Descriptor cd_S4283C2;
extern VTBL_ENTRY _ZTI7S4283C2[];
extern  VTBL_ENTRY _ZTV7S4283C2[];
extern Class_Descriptor cd_S4283C4;
extern VTBL_ENTRY _ZTI7S4283C4[];
extern  VTBL_ENTRY _ZTV7S4283C4[];
static Base_Class bases_S4283C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4283C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4283C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4283C4,    ABISELECT(16,8), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4283C1[];
extern void _ZN7S4283C1D1Ev();
extern void _ZN7S4283C1D0Ev();
extern void _ZN7S4283C33v15Ev();
extern void _ZN7S4283C23v16Ev();
extern void _ZN7S4283C23v17Ev();
extern void _ZN7S4283C23v18Ev();
extern void _ZN7S4283C23v19Ev();
extern void _ZN7S4283C23v20Ev();
extern void _ZN7S4283C23v21Ev();
extern void _ZN7S4283C23v22Ev();
extern void _ZN7S4283C12v1Ev();
extern void _ZN7S4283C12v2Ev();
extern void _ZN7S4283C12v3Ev();
extern void _ZN7S4283C12v4Ev();
extern void _ZN7S4283C12v5Ev();
extern void _ZN7S4283C12v6Ev();
extern void _ZN7S4283C12v7Ev();
extern void _ZN7S4283C12v8Ev();
extern void _ZN7S4283C12v9Ev();
extern void _ZN7S4283C13v10Ev();
extern void _ZN7S4283C13v11Ev();
extern void _ZN7S4283C13v12Ev();
extern void _ZN7S4283C13v13Ev();
extern void _ZN7S4283C13v14Ev();
extern void ABISELECT(_ZThn16_N7S4283C1D1Ev,_ZThn8_N7S4283C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S4283C1D0Ev,_ZThn8_N7S4283C1D0Ev)();
extern void _ZN7S4283C43v23Ev();
extern void _ZN7S4283C43v24Ev();
extern void _ZN7S4283C43v25Ev();
static  VTBL_ENTRY vtc_S4283C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4283C1[0]),
  (VTBL_ENTRY)&_ZN7S4283C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4283C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4283C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4283C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4283C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4283C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4283C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4283C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4283C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4283C13v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S4283C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4283C1D1Ev,_ZThn8_N7S4283C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4283C1D0Ev,_ZThn8_N7S4283C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4283C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4283C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4283C43v25Ev,
};
extern VTBL_ENTRY _ZTI7S4283C1[];
extern  VTBL_ENTRY _ZTV7S4283C1[];
Class_Descriptor cd_S4283C1 = {  "S4283C1", // class name
  bases_S4283C1, 3,
  &(vtc_S4283C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,104), // object size
  NSPAIRA(_ZTI7S4283C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4283C1),33, //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  S2139C4  {
  virtual  ~S2139C4(); // _ZN7S2139C4D1Ev
  virtual void  v22(); // _ZN7S2139C43v22Ev
  S2139C4(); // tgen
};
//SIG(-1 S2139C4) C1{ vd v1}


 S2139C4 ::~S2139C4(){ note_dtor("S2139C4", this);}
void  S2139C4 ::v22(){vfunc_called(this, "_ZN7S2139C43v22Ev");}
S2139C4 ::S2139C4(){ note_ctor("S2139C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S2139C4C1Ev();
extern void _ZN7S2139C4D1Ev();
Name_Map name_map_S2139C4[] = {
  NSPAIR(_ZN7S2139C4C1Ev),
  NSPAIR(_ZN7S2139C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S2139C4[];
extern void _ZN7S2139C4D1Ev();
extern void _ZN7S2139C4D0Ev();
extern void _ZN7S2139C43v22Ev();
static  VTBL_ENTRY vtc_S2139C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2139C4[0]),
  (VTBL_ENTRY)&_ZN7S2139C4D1Ev,
  (VTBL_ENTRY)&_ZN7S2139C4D0Ev,
  (VTBL_ENTRY)&_ZN7S2139C43v22Ev,
};
extern VTBL_ENTRY _ZTI7S2139C4[];
extern  VTBL_ENTRY _ZTV7S2139C4[];
Class_Descriptor cd_S2139C4 = {  "S2139C4", // class name
  0,0,//no base classes
  &(vtc_S2139C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S2139C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S2139C4),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  S2139C3  : S2139C4 {
  void *s2139c3f0;
  virtual void  v23(); // _ZN7S2139C33v23Ev
  virtual void  v24(); // _ZN7S2139C33v24Ev
  virtual void  v25(); // _ZN7S2139C33v25Ev
  virtual void  v26(); // _ZN7S2139C33v26Ev
  virtual void  v27(); // _ZN7S2139C33v27Ev
  virtual void  v28(); // _ZN7S2139C33v28Ev
  virtual void  v29(); // _ZN7S2139C33v29Ev
  ~S2139C3(); // tgen
  S2139C3(); // tgen
};
//SIG(-1 S2139C3) C1{ BC2{ vd v8} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S2139C3 ::v23(){vfunc_called(this, "_ZN7S2139C33v23Ev");}
void  S2139C3 ::v24(){vfunc_called(this, "_ZN7S2139C33v24Ev");}
void  S2139C3 ::v25(){vfunc_called(this, "_ZN7S2139C33v25Ev");}
void  S2139C3 ::v26(){vfunc_called(this, "_ZN7S2139C33v26Ev");}
void  S2139C3 ::v27(){vfunc_called(this, "_ZN7S2139C33v27Ev");}
void  S2139C3 ::v28(){vfunc_called(this, "_ZN7S2139C33v28Ev");}
void  S2139C3 ::v29(){vfunc_called(this, "_ZN7S2139C33v29Ev");}
S2139C3 ::~S2139C3(){ note_dtor("S2139C3", this);} // tgen
S2139C3 ::S2139C3(){ note_ctor("S2139C3", this);} // tgen

static void Test_S2139C3()
{
  extern Class_Descriptor cd_S2139C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S2139C3, buf);
    S2139C3 *dp, &lv = *(dp=new (buf) S2139C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S2139C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2139C3)");
    check_base_class_offset(lv, (S2139C4*), 0, "S2139C3");
    check_field_offset(lv, s2139c3f0, ABISELECT(8,4), "S2139C3.s2139c3f0");
    test_class_info(&lv, &cd_S2139C3);
    dp->~S2139C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2139C3(Test_S2139C3, "S2139C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S2139C3C1Ev();
extern void _ZN7S2139C3D1Ev();
Name_Map name_map_S2139C3[] = {
  NSPAIR(_ZN7S2139C3C1Ev),
  NSPAIR(_ZN7S2139C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2139C4;
extern VTBL_ENTRY _ZTI7S2139C4[];
extern  VTBL_ENTRY _ZTV7S2139C4[];
static Base_Class bases_S2139C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2139C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2139C3[];
extern void _ZN7S2139C3D1Ev();
extern void _ZN7S2139C3D0Ev();
extern void _ZN7S2139C43v22Ev();
extern void _ZN7S2139C33v23Ev();
extern void _ZN7S2139C33v24Ev();
extern void _ZN7S2139C33v25Ev();
extern void _ZN7S2139C33v26Ev();
extern void _ZN7S2139C33v27Ev();
extern void _ZN7S2139C33v28Ev();
extern void _ZN7S2139C33v29Ev();
static  VTBL_ENTRY vtc_S2139C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2139C3[0]),
  (VTBL_ENTRY)&_ZN7S2139C3D1Ev,
  (VTBL_ENTRY)&_ZN7S2139C3D0Ev,
  (VTBL_ENTRY)&_ZN7S2139C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v23Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v24Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v25Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v26Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v27Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v28Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v29Ev,
};
extern VTBL_ENTRY _ZTI7S2139C3[];
extern  VTBL_ENTRY _ZTV7S2139C3[];
Class_Descriptor cd_S2139C3 = {  "S2139C3", // class name
  bases_S2139C3, 1,
  &(vtc_S2139C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S2139C3),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2139C3),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  S2139C2  : S2139C3 {
  char s2139c2f0[2];
  virtual  ~S2139C2(); // _ZN7S2139C2D1Ev
  virtual void  v30(); // _ZN7S2139C23v30Ev
  virtual void  v31(); // _ZN7S2139C23v31Ev
  virtual void  v32(); // _ZN7S2139C23v32Ev
  virtual void  v33(); // _ZN7S2139C23v33Ev
  virtual void  v34(); // _ZN7S2139C23v34Ev
  virtual void  v35(); // _ZN7S2139C23v35Ev
  virtual void  v36(); // _ZN7S2139C23v36Ev
  virtual void  v37(); // _ZN7S2139C23v37Ev
  virtual void  v38(); // _ZN7S2139C23v38Ev
  virtual void  v39(); // _ZN7S2139C23v39Ev
  virtual void  v40(); // _ZN7S2139C23v40Ev
  virtual void  v41(); // _ZN7S2139C23v41Ev
  virtual void  v42(); // _ZN7S2139C23v42Ev
  virtual void  v43(); // _ZN7S2139C23v43Ev
  virtual void  v44(); // _ZN7S2139C23v44Ev
  virtual void  v45(); // _ZN7S2139C23v45Ev
  virtual void  v46(); // _ZN7S2139C23v46Ev
  virtual void  v47(); // _ZN7S2139C23v47Ev
  virtual void  v48(); // _ZN7S2139C23v48Ev
  virtual void  v49(); // _ZN7S2139C23v49Ev
  virtual void  v50(); // _ZN7S2139C23v50Ev
  virtual void  v51(); // _ZN7S2139C23v51Ev
  S2139C2(); // tgen
};
//SIG(-1 S2139C2) C1{ BC2{ BC3{ vd v23} v24 v25 v26 v27 v28 v29 v30 Fp} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fc[2]}


 S2139C2 ::~S2139C2(){ note_dtor("S2139C2", this);}
void  S2139C2 ::v30(){vfunc_called(this, "_ZN7S2139C23v30Ev");}
void  S2139C2 ::v31(){vfunc_called(this, "_ZN7S2139C23v31Ev");}
void  S2139C2 ::v32(){vfunc_called(this, "_ZN7S2139C23v32Ev");}
void  S2139C2 ::v33(){vfunc_called(this, "_ZN7S2139C23v33Ev");}
void  S2139C2 ::v34(){vfunc_called(this, "_ZN7S2139C23v34Ev");}
void  S2139C2 ::v35(){vfunc_called(this, "_ZN7S2139C23v35Ev");}
void  S2139C2 ::v36(){vfunc_called(this, "_ZN7S2139C23v36Ev");}
void  S2139C2 ::v37(){vfunc_called(this, "_ZN7S2139C23v37Ev");}
void  S2139C2 ::v38(){vfunc_called(this, "_ZN7S2139C23v38Ev");}
void  S2139C2 ::v39(){vfunc_called(this, "_ZN7S2139C23v39Ev");}
void  S2139C2 ::v40(){vfunc_called(this, "_ZN7S2139C23v40Ev");}
void  S2139C2 ::v41(){vfunc_called(this, "_ZN7S2139C23v41Ev");}
void  S2139C2 ::v42(){vfunc_called(this, "_ZN7S2139C23v42Ev");}
void  S2139C2 ::v43(){vfunc_called(this, "_ZN7S2139C23v43Ev");}
void  S2139C2 ::v44(){vfunc_called(this, "_ZN7S2139C23v44Ev");}
void  S2139C2 ::v45(){vfunc_called(this, "_ZN7S2139C23v45Ev");}
void  S2139C2 ::v46(){vfunc_called(this, "_ZN7S2139C23v46Ev");}
void  S2139C2 ::v47(){vfunc_called(this, "_ZN7S2139C23v47Ev");}
void  S2139C2 ::v48(){vfunc_called(this, "_ZN7S2139C23v48Ev");}
void  S2139C2 ::v49(){vfunc_called(this, "_ZN7S2139C23v49Ev");}
void  S2139C2 ::v50(){vfunc_called(this, "_ZN7S2139C23v50Ev");}
void  S2139C2 ::v51(){vfunc_called(this, "_ZN7S2139C23v51Ev");}
S2139C2 ::S2139C2(){ note_ctor("S2139C2", this);} // tgen

static void Test_S2139C2()
{
  extern Class_Descriptor cd_S2139C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2139C2, buf);
    S2139C2 *dp, &lv = *(dp=new (buf) S2139C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2139C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2139C2)");
    check_base_class_offset(lv, (S2139C4*)(S2139C3*), 0, "S2139C2");
    check_base_class_offset(lv, (S2139C3*), 0, "S2139C2");
    check_field_offset(lv, s2139c2f0, ABISELECT(16,8), "S2139C2.s2139c2f0");
    test_class_info(&lv, &cd_S2139C2);
    dp->~S2139C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2139C2(Test_S2139C2, "S2139C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S2139C2C1Ev();
extern void _ZN7S2139C2D1Ev();
Name_Map name_map_S2139C2[] = {
  NSPAIR(_ZN7S2139C2C1Ev),
  NSPAIR(_ZN7S2139C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2139C4;
extern VTBL_ENTRY _ZTI7S2139C4[];
extern  VTBL_ENTRY _ZTV7S2139C4[];
extern Class_Descriptor cd_S2139C3;
extern VTBL_ENTRY _ZTI7S2139C3[];
extern  VTBL_ENTRY _ZTV7S2139C3[];
static Base_Class bases_S2139C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2139C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2139C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S2139C2[];
extern void _ZN7S2139C2D1Ev();
extern void _ZN7S2139C2D0Ev();
extern void _ZN7S2139C43v22Ev();
extern void _ZN7S2139C33v23Ev();
extern void _ZN7S2139C33v24Ev();
extern void _ZN7S2139C33v25Ev();
extern void _ZN7S2139C33v26Ev();
extern void _ZN7S2139C33v27Ev();
extern void _ZN7S2139C33v28Ev();
extern void _ZN7S2139C33v29Ev();
extern void _ZN7S2139C23v30Ev();
extern void _ZN7S2139C23v31Ev();
extern void _ZN7S2139C23v32Ev();
extern void _ZN7S2139C23v33Ev();
extern void _ZN7S2139C23v34Ev();
extern void _ZN7S2139C23v35Ev();
extern void _ZN7S2139C23v36Ev();
extern void _ZN7S2139C23v37Ev();
extern void _ZN7S2139C23v38Ev();
extern void _ZN7S2139C23v39Ev();
extern void _ZN7S2139C23v40Ev();
extern void _ZN7S2139C23v41Ev();
extern void _ZN7S2139C23v42Ev();
extern void _ZN7S2139C23v43Ev();
extern void _ZN7S2139C23v44Ev();
extern void _ZN7S2139C23v45Ev();
extern void _ZN7S2139C23v46Ev();
extern void _ZN7S2139C23v47Ev();
extern void _ZN7S2139C23v48Ev();
extern void _ZN7S2139C23v49Ev();
extern void _ZN7S2139C23v50Ev();
extern void _ZN7S2139C23v51Ev();
static  VTBL_ENTRY vtc_S2139C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2139C2[0]),
  (VTBL_ENTRY)&_ZN7S2139C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2139C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2139C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v23Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v24Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v25Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v26Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v27Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v28Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v29Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v30Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v31Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v32Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v33Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v34Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v35Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v36Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v37Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v38Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v39Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v40Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v41Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v42Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v43Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v44Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v45Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v46Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v47Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v48Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v49Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v50Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v51Ev,
};
extern VTBL_ENTRY _ZTI7S2139C2[];
extern  VTBL_ENTRY _ZTV7S2139C2[];
Class_Descriptor cd_S2139C2 = {  "S2139C2", // class name
  bases_S2139C2, 2,
  &(vtc_S2139C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S2139C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2139C2),34, //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  S2139C1  : S2139C2 {
  virtual  ~S2139C1(); // _ZN7S2139C1D1Ev
  virtual void  v1(); // _ZN7S2139C12v1Ev
  virtual void  v2(); // _ZN7S2139C12v2Ev
  virtual void  v3(); // _ZN7S2139C12v3Ev
  virtual void  v4(); // _ZN7S2139C12v4Ev
  virtual void  v5(); // _ZN7S2139C12v5Ev
  virtual void  v6(); // _ZN7S2139C12v6Ev
  virtual void  v7(); // _ZN7S2139C12v7Ev
  virtual void  v8(); // _ZN7S2139C12v8Ev
  virtual void  v9(); // _ZN7S2139C12v9Ev
  virtual void  v10(); // _ZN7S2139C13v10Ev
  virtual void  v11(); // _ZN7S2139C13v11Ev
  virtual void  v12(); // _ZN7S2139C13v12Ev
  virtual void  v13(); // _ZN7S2139C13v13Ev
  virtual void  v14(); // _ZN7S2139C13v14Ev
  virtual void  v15(); // _ZN7S2139C13v15Ev
  virtual void  v16(); // _ZN7S2139C13v16Ev
  virtual void  v17(); // _ZN7S2139C13v17Ev
  virtual void  v18(); // _ZN7S2139C13v18Ev
  virtual void  v19(); // _ZN7S2139C13v19Ev
  virtual void  v20(); // _ZN7S2139C13v20Ev
  virtual void  v21(); // _ZN7S2139C13v21Ev
  S2139C1(); // tgen
};
//SIG(1 S2139C1) C1{ BC2{ BC3{ BC4{ vd v22} v23 v24 v25 v26 v27 v28 v29 Fp} vd v30 v31 v32 v33 v34 v35 v36 v37 v38 v39 v40 v41 v42 v43 v44 v45 v46 v47 v48 v49 v50 v51 Fc[2]} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21}


 S2139C1 ::~S2139C1(){ note_dtor("S2139C1", this);}
void  S2139C1 ::v1(){vfunc_called(this, "_ZN7S2139C12v1Ev");}
void  S2139C1 ::v2(){vfunc_called(this, "_ZN7S2139C12v2Ev");}
void  S2139C1 ::v3(){vfunc_called(this, "_ZN7S2139C12v3Ev");}
void  S2139C1 ::v4(){vfunc_called(this, "_ZN7S2139C12v4Ev");}
void  S2139C1 ::v5(){vfunc_called(this, "_ZN7S2139C12v5Ev");}
void  S2139C1 ::v6(){vfunc_called(this, "_ZN7S2139C12v6Ev");}
void  S2139C1 ::v7(){vfunc_called(this, "_ZN7S2139C12v7Ev");}
void  S2139C1 ::v8(){vfunc_called(this, "_ZN7S2139C12v8Ev");}
void  S2139C1 ::v9(){vfunc_called(this, "_ZN7S2139C12v9Ev");}
void  S2139C1 ::v10(){vfunc_called(this, "_ZN7S2139C13v10Ev");}
void  S2139C1 ::v11(){vfunc_called(this, "_ZN7S2139C13v11Ev");}
void  S2139C1 ::v12(){vfunc_called(this, "_ZN7S2139C13v12Ev");}
void  S2139C1 ::v13(){vfunc_called(this, "_ZN7S2139C13v13Ev");}
void  S2139C1 ::v14(){vfunc_called(this, "_ZN7S2139C13v14Ev");}
void  S2139C1 ::v15(){vfunc_called(this, "_ZN7S2139C13v15Ev");}
void  S2139C1 ::v16(){vfunc_called(this, "_ZN7S2139C13v16Ev");}
void  S2139C1 ::v17(){vfunc_called(this, "_ZN7S2139C13v17Ev");}
void  S2139C1 ::v18(){vfunc_called(this, "_ZN7S2139C13v18Ev");}
void  S2139C1 ::v19(){vfunc_called(this, "_ZN7S2139C13v19Ev");}
void  S2139C1 ::v20(){vfunc_called(this, "_ZN7S2139C13v20Ev");}
void  S2139C1 ::v21(){vfunc_called(this, "_ZN7S2139C13v21Ev");}
S2139C1 ::S2139C1(){ note_ctor("S2139C1", this);} // tgen

static void Test_S2139C1()
{
  extern Class_Descriptor cd_S2139C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S2139C1, buf);
    S2139C1 *dp, &lv = *(dp=new (buf) S2139C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S2139C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2139C1)");
    check_base_class_offset(lv, (S2139C4*)(S2139C3*)(S2139C2*), 0, "S2139C1");
    check_base_class_offset(lv, (S2139C3*)(S2139C2*), 0, "S2139C1");
    check_base_class_offset(lv, (S2139C2*), 0, "S2139C1");
    test_class_info(&lv, &cd_S2139C1);
    dp->~S2139C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2139C1(Test_S2139C1, "S2139C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN7S2139C1C1Ev();
extern void _ZN7S2139C1D1Ev();
Name_Map name_map_S2139C1[] = {
  NSPAIR(_ZN7S2139C1C1Ev),
  NSPAIR(_ZN7S2139C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S2139C4;
extern VTBL_ENTRY _ZTI7S2139C4[];
extern  VTBL_ENTRY _ZTV7S2139C4[];
extern Class_Descriptor cd_S2139C3;
extern VTBL_ENTRY _ZTI7S2139C3[];
extern  VTBL_ENTRY _ZTV7S2139C3[];
extern Class_Descriptor cd_S2139C2;
extern VTBL_ENTRY _ZTI7S2139C2[];
extern  VTBL_ENTRY _ZTV7S2139C2[];
static Base_Class bases_S2139C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2139C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2139C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S2139C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S2139C1[];
extern void _ZN7S2139C1D1Ev();
extern void _ZN7S2139C1D0Ev();
extern void _ZN7S2139C43v22Ev();
extern void _ZN7S2139C33v23Ev();
extern void _ZN7S2139C33v24Ev();
extern void _ZN7S2139C33v25Ev();
extern void _ZN7S2139C33v26Ev();
extern void _ZN7S2139C33v27Ev();
extern void _ZN7S2139C33v28Ev();
extern void _ZN7S2139C33v29Ev();
extern void _ZN7S2139C23v30Ev();
extern void _ZN7S2139C23v31Ev();
extern void _ZN7S2139C23v32Ev();
extern void _ZN7S2139C23v33Ev();
extern void _ZN7S2139C23v34Ev();
extern void _ZN7S2139C23v35Ev();
extern void _ZN7S2139C23v36Ev();
extern void _ZN7S2139C23v37Ev();
extern void _ZN7S2139C23v38Ev();
extern void _ZN7S2139C23v39Ev();
extern void _ZN7S2139C23v40Ev();
extern void _ZN7S2139C23v41Ev();
extern void _ZN7S2139C23v42Ev();
extern void _ZN7S2139C23v43Ev();
extern void _ZN7S2139C23v44Ev();
extern void _ZN7S2139C23v45Ev();
extern void _ZN7S2139C23v46Ev();
extern void _ZN7S2139C23v47Ev();
extern void _ZN7S2139C23v48Ev();
extern void _ZN7S2139C23v49Ev();
extern void _ZN7S2139C23v50Ev();
extern void _ZN7S2139C23v51Ev();
extern void _ZN7S2139C12v1Ev();
extern void _ZN7S2139C12v2Ev();
extern void _ZN7S2139C12v3Ev();
extern void _ZN7S2139C12v4Ev();
extern void _ZN7S2139C12v5Ev();
extern void _ZN7S2139C12v6Ev();
extern void _ZN7S2139C12v7Ev();
extern void _ZN7S2139C12v8Ev();
extern void _ZN7S2139C12v9Ev();
extern void _ZN7S2139C13v10Ev();
extern void _ZN7S2139C13v11Ev();
extern void _ZN7S2139C13v12Ev();
extern void _ZN7S2139C13v13Ev();
extern void _ZN7S2139C13v14Ev();
extern void _ZN7S2139C13v15Ev();
extern void _ZN7S2139C13v16Ev();
extern void _ZN7S2139C13v17Ev();
extern void _ZN7S2139C13v18Ev();
extern void _ZN7S2139C13v19Ev();
extern void _ZN7S2139C13v20Ev();
extern void _ZN7S2139C13v21Ev();
static  VTBL_ENTRY vtc_S2139C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2139C1[0]),
  (VTBL_ENTRY)&_ZN7S2139C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2139C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2139C43v22Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v23Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v24Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v25Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v26Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v27Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v28Ev,
  (VTBL_ENTRY)&_ZN7S2139C33v29Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v30Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v31Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v32Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v33Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v34Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v35Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v36Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v37Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v38Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v39Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v40Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v41Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v42Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v43Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v44Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v45Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v46Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v47Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v48Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v49Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v50Ev,
  (VTBL_ENTRY)&_ZN7S2139C23v51Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2139C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v11Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v12Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v13Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v14Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v15Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v16Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v17Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v18Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v19Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v20Ev,
  (VTBL_ENTRY)&_ZN7S2139C13v21Ev,
};
extern VTBL_ENTRY _ZTI7S2139C1[];
extern  VTBL_ENTRY _ZTV7S2139C1[];
Class_Descriptor cd_S2139C1 = {  "S2139C1", // class name
  bases_S2139C1, 3,
  &(vtc_S2139C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI7S2139C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2139C1),55, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  3, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4285C3  {
  virtual  ~S4285C3(); // _ZN7S4285C3D1Ev
  virtual void  v15(); // _ZN7S4285C33v15Ev
  S4285C3(); // tgen
};
//SIG(-1 S4285C3) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN7S4285C3C1Ev();
extern void _ZN7S4285C3D1Ev();
Name_Map name_map_S4285C3[] = {
  NSPAIR(_ZN7S4285C3C1Ev),
  NSPAIR(_ZN7S4285C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4285C3[];
extern void _ZN7S4285C3D1Ev();
extern void _ZN7S4285C3D0Ev();
extern void _ZN7S4285C33v15Ev();
static  VTBL_ENTRY vtc_S4285C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4285C3[0]),
  (VTBL_ENTRY)&_ZN7S4285C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4285C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4285C33v15Ev,
};
extern VTBL_ENTRY _ZTI7S4285C3[];
extern  VTBL_ENTRY _ZTV7S4285C3[];
Class_Descriptor cd_S4285C3 = {  "S4285C3", // class name
  0,0,//no base classes
  &(vtc_S4285C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4285C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4285C3),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  S4285C2  : S4285C3 {
  void *s4285c2f0;
  virtual void  v16(); // _ZN7S4285C23v16Ev
  virtual void  v17(); // _ZN7S4285C23v17Ev
  virtual void  v18(); // _ZN7S4285C23v18Ev
  virtual void  v19(); // _ZN7S4285C23v19Ev
  virtual void  v20(); // _ZN7S4285C23v20Ev
  virtual void  v21(); // _ZN7S4285C23v21Ev
  virtual void  v22(); // _ZN7S4285C23v22Ev
  ~S4285C2(); // tgen
  S4285C2(); // tgen
};
//SIG(-1 S4285C2) C1{ BC2{ vd v8} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S4285C2 ::v16(){vfunc_called(this, "_ZN7S4285C23v16Ev");}
void  S4285C2 ::v17(){vfunc_called(this, "_ZN7S4285C23v17Ev");}
void  S4285C2 ::v18(){vfunc_called(this, "_ZN7S4285C23v18Ev");}
void  S4285C2 ::v19(){vfunc_called(this, "_ZN7S4285C23v19Ev");}
void  S4285C2 ::v20(){vfunc_called(this, "_ZN7S4285C23v20Ev");}
void  S4285C2 ::v21(){vfunc_called(this, "_ZN7S4285C23v21Ev");}
void  S4285C2 ::v22(){vfunc_called(this, "_ZN7S4285C23v22Ev");}
S4285C2 ::~S4285C2(){ note_dtor("S4285C2", this);} // tgen
S4285C2 ::S4285C2(){ note_ctor("S4285C2", this);} // tgen

static void Test_S4285C2()
{
  extern Class_Descriptor cd_S4285C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S4285C2, buf);
    S4285C2 *dp, &lv = *(dp=new (buf) S4285C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S4285C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4285C2)");
    check_base_class_offset(lv, (S4285C3*), 0, "S4285C2");
    check_field_offset(lv, s4285c2f0, ABISELECT(8,4), "S4285C2.s4285c2f0");
    test_class_info(&lv, &cd_S4285C2);
    dp->~S4285C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4285C2(Test_S4285C2, "S4285C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S4285C2C1Ev();
extern void _ZN7S4285C2D1Ev();
Name_Map name_map_S4285C2[] = {
  NSPAIR(_ZN7S4285C2C1Ev),
  NSPAIR(_ZN7S4285C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4285C3;
extern VTBL_ENTRY _ZTI7S4285C3[];
extern  VTBL_ENTRY _ZTV7S4285C3[];
static Base_Class bases_S4285C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4285C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4285C2[];
extern void _ZN7S4285C2D1Ev();
extern void _ZN7S4285C2D0Ev();
extern void _ZN7S4285C33v15Ev();
extern void _ZN7S4285C23v16Ev();
extern void _ZN7S4285C23v17Ev();
extern void _ZN7S4285C23v18Ev();
extern void _ZN7S4285C23v19Ev();
extern void _ZN7S4285C23v20Ev();
extern void _ZN7S4285C23v21Ev();
extern void _ZN7S4285C23v22Ev();
static  VTBL_ENTRY vtc_S4285C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4285C2[0]),
  (VTBL_ENTRY)&_ZN7S4285C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4285C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4285C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S4285C2[];
extern  VTBL_ENTRY _ZTV7S4285C2[];
Class_Descriptor cd_S4285C2 = {  "S4285C2", // class name
  bases_S4285C2, 1,
  &(vtc_S4285C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S4285C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4285C2),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  S4285C4  {
  virtual  ~S4285C4(); // _ZN7S4285C4D1Ev
  virtual void  v23(); // _ZN7S4285C43v23Ev
  virtual void  v24(); // _ZN7S4285C43v24Ev
  virtual void  v25(); // _ZN7S4285C43v25Ev
  S4285C4(); // tgen
};
//SIG(-1 S4285C4) C1{ vd v1 v2 v3}


 S4285C4 ::~S4285C4(){ note_dtor("S4285C4", this);}
void  S4285C4 ::v23(){vfunc_called(this, "_ZN7S4285C43v23Ev");}
void  S4285C4 ::v24(){vfunc_called(this, "_ZN7S4285C43v24Ev");}
void  S4285C4 ::v25(){vfunc_called(this, "_ZN7S4285C43v25Ev");}
S4285C4 ::S4285C4(){ note_ctor("S4285C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S4285C4C1Ev();
extern void _ZN7S4285C4D1Ev();
Name_Map name_map_S4285C4[] = {
  NSPAIR(_ZN7S4285C4C1Ev),
  NSPAIR(_ZN7S4285C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4285C4[];
extern void _ZN7S4285C4D1Ev();
extern void _ZN7S4285C4D0Ev();
extern void _ZN7S4285C43v23Ev();
extern void _ZN7S4285C43v24Ev();
extern void _ZN7S4285C43v25Ev();
static  VTBL_ENTRY vtc_S4285C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4285C4[0]),
  (VTBL_ENTRY)&_ZN7S4285C4D1Ev,
  (VTBL_ENTRY)&_ZN7S4285C4D0Ev,
  (VTBL_ENTRY)&_ZN7S4285C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4285C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4285C43v25Ev,
};
extern VTBL_ENTRY _ZTI7S4285C4[];
extern  VTBL_ENTRY _ZTV7S4285C4[];
Class_Descriptor cd_S4285C4 = {  "S4285C4", // class name
  0,0,//no base classes
  &(vtc_S4285C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S4285C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4285C4),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  S4285C1  : S4285C2 , S4285C4 {
  ::S9624C46_nt s4285c1f0;
  ::S9859C32_nt s4285c1f1;
  int s4285c1f2;
  ::S9624C35 s4285c1f3;
  ::S9859C32_nt s4285c1f4;
  ::S9624C47 s4285c1f5;
  ::S9859C32_nt s4285c1f6;
  virtual  ~S4285C1(); // _ZN7S4285C1D1Ev
  virtual void  v1(); // _ZN7S4285C12v1Ev
  virtual void  v2(); // _ZN7S4285C12v2Ev
  virtual void  v3(); // _ZN7S4285C12v3Ev
  virtual void  v4(); // _ZN7S4285C12v4Ev
  virtual void  v5(); // _ZN7S4285C12v5Ev
  virtual void  v6(); // _ZN7S4285C12v6Ev
  virtual void  v7(); // _ZN7S4285C12v7Ev
  virtual void  v8(); // _ZN7S4285C12v8Ev
  virtual void  v9(); // _ZN7S4285C12v9Ev
  virtual void  v10(); // _ZN7S4285C13v10Ev
  virtual void  v11(); // _ZN7S4285C13v11Ev
  virtual void  v12(); // _ZN7S4285C13v12Ev
  virtual void  v13(); // _ZN7S4285C13v13Ev
  virtual void  v14(); // _ZN7S4285C13v14Ev
  S4285C1(); // tgen
};
//SIG(1 S4285C1) C1{ BC2{ BC3{ vd v15} v16 v17 v18 v19 v20 v21 v22 Fp} BC4{ vd v23 v24 v25} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 FC5{ m FC6{ m Fp Fi FC7{ m} FC7}} FC8{ m FL[4]} Fi FC9{ m Fp Fi[2] FC10{ m}} FC8 FC6 FC8}


 S4285C1 ::~S4285C1(){ note_dtor("S4285C1", this);}
void  S4285C1 ::v1(){vfunc_called(this, "_ZN7S4285C12v1Ev");}
void  S4285C1 ::v2(){vfunc_called(this, "_ZN7S4285C12v2Ev");}
void  S4285C1 ::v3(){vfunc_called(this, "_ZN7S4285C12v3Ev");}
void  S4285C1 ::v4(){vfunc_called(this, "_ZN7S4285C12v4Ev");}
void  S4285C1 ::v5(){vfunc_called(this, "_ZN7S4285C12v5Ev");}
void  S4285C1 ::v6(){vfunc_called(this, "_ZN7S4285C12v6Ev");}
void  S4285C1 ::v7(){vfunc_called(this, "_ZN7S4285C12v7Ev");}
void  S4285C1 ::v8(){vfunc_called(this, "_ZN7S4285C12v8Ev");}
void  S4285C1 ::v9(){vfunc_called(this, "_ZN7S4285C12v9Ev");}
void  S4285C1 ::v10(){vfunc_called(this, "_ZN7S4285C13v10Ev");}
void  S4285C1 ::v11(){vfunc_called(this, "_ZN7S4285C13v11Ev");}
void  S4285C1 ::v12(){vfunc_called(this, "_ZN7S4285C13v12Ev");}
void  S4285C1 ::v13(){vfunc_called(this, "_ZN7S4285C13v13Ev");}
void  S4285C1 ::v14(){vfunc_called(this, "_ZN7S4285C13v14Ev");}
S4285C1 ::S4285C1(){ note_ctor("S4285C1", this);} // tgen

static void Test_S4285C1()
{
  extern Class_Descriptor cd_S4285C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,39)];
    init_test(&cd_S4285C1, buf);
    S4285C1 *dp, &lv = *(dp=new (buf) S4285C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,152), "sizeof(S4285C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4285C1)");
    check_base_class_offset(lv, (S4285C3*)(S4285C2*), 0, "S4285C1");
    check_base_class_offset(lv, (S4285C2*), 0, "S4285C1");
    check_base_class_offset(lv, (S4285C4*), ABISELECT(16,8), "S4285C1");
    check_field_offset(lv, s4285c1f0, ABISELECT(24,12), "S4285C1.s4285c1f0");
    check_field_offset(lv, s4285c1f1, ABISELECT(40,24), "S4285C1.s4285c1f1");
    check_field_offset(lv, s4285c1f2, ABISELECT(72,56), "S4285C1.s4285c1f2");
    check_field_offset(lv, s4285c1f3, ABISELECT(80,60), "S4285C1.s4285c1f3");
    check_field_offset(lv, s4285c1f4, ABISELECT(104,76), "S4285C1.s4285c1f4");
    check_field_offset(lv, s4285c1f5, ABISELECT(136,108), "S4285C1.s4285c1f5");
    check_field_offset(lv, s4285c1f6, ABISELECT(152,120), "S4285C1.s4285c1f6");
    test_class_info(&lv, &cd_S4285C1);
    dp->~S4285C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4285C1(Test_S4285C1, "S4285C1", ABISELECT(184,152));

#else // __cplusplus

extern void _ZN7S4285C1C1Ev();
extern void _ZN7S4285C1D1Ev();
Name_Map name_map_S4285C1[] = {
  NSPAIR(_ZN7S4285C1C1Ev),
  NSPAIR(_ZN7S4285C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4285C3;
extern VTBL_ENTRY _ZTI7S4285C3[];
extern  VTBL_ENTRY _ZTV7S4285C3[];
extern Class_Descriptor cd_S4285C2;
extern VTBL_ENTRY _ZTI7S4285C2[];
extern  VTBL_ENTRY _ZTV7S4285C2[];
extern Class_Descriptor cd_S4285C4;
extern VTBL_ENTRY _ZTI7S4285C4[];
extern  VTBL_ENTRY _ZTV7S4285C4[];
static Base_Class bases_S4285C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4285C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4285C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S4285C4,    ABISELECT(16,8), //bcp->offset
    26, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4285C1[];
extern void _ZN7S4285C1D1Ev();
extern void _ZN7S4285C1D0Ev();
extern void _ZN7S4285C33v15Ev();
extern void _ZN7S4285C23v16Ev();
extern void _ZN7S4285C23v17Ev();
extern void _ZN7S4285C23v18Ev();
extern void _ZN7S4285C23v19Ev();
extern void _ZN7S4285C23v20Ev();
extern void _ZN7S4285C23v21Ev();
extern void _ZN7S4285C23v22Ev();
extern void _ZN7S4285C12v1Ev();
extern void _ZN7S4285C12v2Ev();
extern void _ZN7S4285C12v3Ev();
extern void _ZN7S4285C12v4Ev();
extern void _ZN7S4285C12v5Ev();
extern void _ZN7S4285C12v6Ev();
extern void _ZN7S4285C12v7Ev();
extern void _ZN7S4285C12v8Ev();
extern void _ZN7S4285C12v9Ev();
extern void _ZN7S4285C13v10Ev();
extern void _ZN7S4285C13v11Ev();
extern void _ZN7S4285C13v12Ev();
extern void _ZN7S4285C13v13Ev();
extern void _ZN7S4285C13v14Ev();
extern void ABISELECT(_ZThn16_N7S4285C1D1Ev,_ZThn8_N7S4285C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S4285C1D0Ev,_ZThn8_N7S4285C1D0Ev)();
extern void _ZN7S4285C43v23Ev();
extern void _ZN7S4285C43v24Ev();
extern void _ZN7S4285C43v25Ev();
static  VTBL_ENTRY vtc_S4285C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4285C1[0]),
  (VTBL_ENTRY)&_ZN7S4285C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4285C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4285C33v15Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v16Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v17Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v18Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v19Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v20Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v21Ev,
  (VTBL_ENTRY)&_ZN7S4285C23v22Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v2Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v3Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v4Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v5Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v6Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v7Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v8Ev,
  (VTBL_ENTRY)&_ZN7S4285C12v9Ev,
  (VTBL_ENTRY)&_ZN7S4285C13v10Ev,
  (VTBL_ENTRY)&_ZN7S4285C13v11Ev,
  (VTBL_ENTRY)&_ZN7S4285C13v12Ev,
  (VTBL_ENTRY)&_ZN7S4285C13v13Ev,
  (VTBL_ENTRY)&_ZN7S4285C13v14Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S4285C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4285C1D1Ev,_ZThn8_N7S4285C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn16_N7S4285C1D0Ev,_ZThn8_N7S4285C1D0Ev),
  (VTBL_ENTRY)&_ZN7S4285C43v23Ev,
  (VTBL_ENTRY)&_ZN7S4285C43v24Ev,
  (VTBL_ENTRY)&_ZN7S4285C43v25Ev,
};
extern VTBL_ENTRY _ZTI7S4285C1[];
extern  VTBL_ENTRY _ZTV7S4285C1[];
Class_Descriptor cd_S4285C1 = {  "S4285C1", // class name
  bases_S4285C1, 3,
  &(vtc_S4285C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,152), // object size
  NSPAIRA(_ZTI7S4285C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S4285C1),33, //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  S20627C5  : virtual S9624C48 {
  int s20627c5f0;
  ~S20627C5(); // tgen
  S20627C5(); // tgen
};
//SIG(-1 S20627C5) C1{ VBC2{ m} Fi}


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

static void Test_S20627C5()
{
  extern Class_Descriptor cd_S20627C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20627C5, buf);
    S20627C5 *dp, &lv = *(dp=new (buf) S20627C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20627C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20627C5");
    check_field_offset(lv, s20627c5f0, ABISELECT(8,4), "S20627C5.s20627c5f0");
    test_class_info(&lv, &cd_S20627C5);
    dp->~S20627C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C5(Test_S20627C5, "S20627C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20627C5C1Ev();
extern void _ZN8S20627C5D1Ev();
Name_Map name_map_S20627C5[] = {
  NSPAIR(_ZN8S20627C5C1Ev),
  NSPAIR(_ZN8S20627C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20627C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20627C5[];
static  VTBL_ENTRY vtc_S20627C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
extern VTBL_ENTRY _ZTV8S20627C5[];
static  VTT_ENTRY vtt_S20627C5[] = {
  {&(_ZTV8S20627C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
Class_Descriptor cd_S20627C5 = {  "S20627C5", // class name
  bases_S20627C5, 1,
  &(vtc_S20627C5[0]), // expected_vtbl_contents
  &(vtt_S20627C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20627C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20627C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20627C5),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  S20627C2  : virtual S20489C8 , virtual S9624C48 , S20627C5 {
  virtual void  v1(); // _ZN8S20627C22v1Ev
  ~S20627C2(); // tgen
  S20627C2(); // tgen
};
//SIG(-1 S20627C2) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S20627C2()
{
  extern Class_Descriptor cd_S20627C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20627C2, buf);
    S20627C2 *dp, &lv = *(dp=new (buf) S20627C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20627C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C2)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20627C2");
    check_base_class_offset(lv, (S9624C48*), 0, "S20627C2");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*), 0, "S20627C2");
    check_base_class_offset(lv, (S20627C5*), 0, "S20627C2");
    test_class_info(&lv, &cd_S20627C2);
    dp->~S20627C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C2(Test_S20627C2, "S20627C2", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20627C2C1Ev();
extern void _ZN8S20627C2D1Ev();
Name_Map name_map_S20627C2[] = {
  NSPAIR(_ZN8S20627C2C1Ev),
  NSPAIR(_ZN8S20627C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
static Base_Class bases_S20627C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20627C5,    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 _ZTI8S20627C2[];
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY vtc_S20627C2[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C2[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
extern VTBL_ENTRY _ZTV8S20627C2[];
static  VTBL_ENTRY _tg__ZTV8S20627C5__8S20627C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C2[] = {
  {&(_ZTV8S20627C2[4]),  4,5},
  {&(_tg__ZTV8S20627C5__8S20627C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20627C2[];
extern  VTBL_ENTRY _ZTV8S20627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C2[];
Class_Descriptor cd_S20627C2 = {  "S20627C2", // class name
  bases_S20627C2, 3,
  &(vtc_S20627C2[0]), // expected_vtbl_contents
  &(vtt_S20627C2[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20627C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20627C2),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20627C2),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  S20627C7_nt  {
  char s20627c7f0;
  void  mf20627c7(); // _ZN11S20627C7_nt9mf20627c7Ev
};
//SIG(-1 S20627C7_nt) C1{ m Fc}


void  S20627C7_nt ::mf20627c7(){}

//skip512 S20627C7_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S20627C7_nt[];
VTBL_ENTRY *P__ZTI11S20627C7_nt = _ZTI11S20627C7_nt; 
Class_Descriptor cd_S20627C7_nt = {  "S20627C7_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  1, // object size
  NSPAIRA(_ZTI11S20627C7_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  S20627C8  : S20489C8 , virtual S9624C39 , S20489C10_nt {
  __tsi64 s20627c8f0;
  int s20627c8f1;
  ~S20627C8(); // tgen
  S20627C8(); // tgen
};
//SIG(-1 S20627C8) C1{ BC2{ m Fi:0 Fp} VBC3{ m} BC4{ m Fi} FL Fi}


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

static void Test_S20627C8()
{
  extern Class_Descriptor cd_S20627C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20627C8, buf);
    S20627C8 *dp, &lv = *(dp=new (buf) S20627C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20627C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C8)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(8,4), "S20627C8");
    check_base_class_offset(lv, (S9624C39*), 0, "S20627C8");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,8), "S20627C8");
    check_field_offset(lv, s20627c8f0, ABISELECT(24,12), "S20627C8.s20627c8f0");
    check_field_offset(lv, s20627c8f1, ABISELECT(32,20), "S20627C8.s20627c8f1");
    test_class_info(&lv, &cd_S20627C8);
    dp->~S20627C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C8(Test_S20627C8, "S20627C8", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20627C8C1Ev();
extern void _ZN8S20627C8D1Ev();
Name_Map name_map_S20627C8[] = {
  NSPAIR(_ZN8S20627C8C1Ev),
  NSPAIR(_ZN8S20627C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S20627C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20627C8[];
static  VTBL_ENTRY vtc_S20627C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C8[0]),
};
extern VTBL_ENTRY _ZTV8S20627C8[];
static  VTT_ENTRY vtt_S20627C8[] = {
  {&(_ZTV8S20627C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20627C8[];
extern  VTBL_ENTRY _ZTV8S20627C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C8[];
Class_Descriptor cd_S20627C8 = {  "S20627C8", // class name
  bases_S20627C8, 3,
  &(vtc_S20627C8[0]), // expected_vtbl_contents
  &(vtt_S20627C8[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20627C8),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20627C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20627C8),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  S20627C6  : virtual S20627C7_nt , S20627C2 , virtual S20627C8 {
  int s20627c6f0;
  ~S20627C6(); // tgen
  S20627C6(); // tgen
};
//SIG(-1 S20627C6) C1{ VBC2{ m Fc} BC3{ VBC4{ m Fi:0 Fp} VBC5{ m} BC6{ VBC5 Fi} v1} VBC7{ BC4 VBC8{ m} BC9{ m Fi} FL Fi} Fi}


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

static void Test_S20627C6()
{
  extern Class_Descriptor cd_S20627C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S20627C6, buf);
    S20627C6 *dp, &lv = *(dp=new (buf) S20627C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S20627C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C6)");
    check_base_class_offset(lv, (S20627C7_nt*), ABISELECT(16,12), "S20627C6");
    check_base_class_offset(lv, (S20489C8*)(S20627C2*), ABISELECT(24,16), "S20627C6");
    check_base_class_offset(lv, (S9624C48*)(S20627C2*), 0, "S20627C6");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C2*), 0, "S20627C6");
    check_base_class_offset(lv, (S20627C5*)(S20627C2*), 0, "S20627C6");
    check_base_class_offset(lv, (S20627C2*), 0, "S20627C6");
    check_base_class_offset(lv, (S20489C8*)(S20627C8*), ABISELECT(40,24), "S20627C6");
    check_base_class_offset(lv, (S9624C39*)(S20627C8*), 0, "S20627C6");
    check_base_class_offset(lv, (S20489C10_nt*)(S20627C8*), ABISELECT(48,28), "S20627C6");
    check_base_class_offset(lv, (S20627C8*), ABISELECT(32,20), "S20627C6");
    check_field_offset(lv, s20627c6f0, ABISELECT(12,8), "S20627C6.s20627c6f0");
    test_class_info(&lv, &cd_S20627C6);
    dp->~S20627C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C6(Test_S20627C6, "S20627C6", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN8S20627C6C1Ev();
extern void _ZN8S20627C6D1Ev();
Name_Map name_map_S20627C6[] = {
  NSPAIR(_ZN8S20627C6C1Ev),
  NSPAIR(_ZN8S20627C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20627C7_nt;
extern VTBL_ENTRY _ZTI11S20627C7_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20627C2;
extern VTBL_ENTRY _ZTI8S20627C2[];
extern  VTBL_ENTRY _ZTV8S20627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C2[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20627C8;
extern VTBL_ENTRY _ZTI8S20627C8[];
extern  VTBL_ENTRY _ZTV8S20627C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C8[];
static Base_Class bases_S20627C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20627C7_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    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
    4, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20627C5,    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
    4, //immediately_derived
  0, 0},
  {&cd_S20627C2,    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_S20489C8,    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
    8, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C10_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
    8, //immediately_derived
  0, 0},
  {&cd_S20627C8,    ABISELECT(32,20), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20627C6[];
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY vtc_S20627C6[] = {
  0,
  ABISELECT(32,20),
  ABISELECT(16,12),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C6[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S20627C6[0]),
};
extern VTBL_ENTRY _ZTV8S20627C6[];
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C2__8S20627C6[] = {
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C2[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C58S20627C2__8S20627C6[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C8__8S20627C6[] = {
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C8[0]),
};
static  VTT_ENTRY vtt_S20627C6[] = {
  {&(_ZTV8S20627C6[7]),  7,11},
  {&(_tg__ZTV8S20627C2__8S20627C6[4]),  4,5},
  {&(_tg__ZTV8S20627C58S20627C2__8S20627C6[3]),  3,3},
  {&(_ZTV8S20627C6[11]),  11,11},
  {&(_tg__ZTV8S20627C8__8S20627C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20627C6[];
extern  VTBL_ENTRY _ZTV8S20627C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C6[];
Class_Descriptor cd_S20627C6 = {  "S20627C6", // class name
  bases_S20627C6, 9,
  &(vtc_S20627C6[0]), // expected_vtbl_contents
  &(vtt_S20627C6[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI8S20627C6),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20627C6),11, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20627C6),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  S20627C13  : S9624C48 {
};
//SIG(-1 S20627C13) C1{ BC2{ m}}



static void Test_S20627C13()
{
  extern Class_Descriptor cd_S20627C13;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S20627C13, buf);
    S20627C13 &lv = *(new (buf) S20627C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S20627C13)");
    check2(__alignof__(lv), 1, "__alignof__(S20627C13)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20627C13");
    test_class_info(&lv, &cd_S20627C13);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C13(Test_S20627C13, "S20627C13", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20627C12  : virtual S9624C48 , S20627C5 , virtual S20627C13 , S20489C10_nt {
  ~S20627C12(); // tgen
  S20627C12(); // tgen
};
//SIG(-1 S20627C12) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S20627C12()
{
  extern Class_Descriptor cd_S20627C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20627C12, buf);
    S20627C12 *dp, &lv = *(dp=new (buf) S20627C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20627C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C12)");
    /*is_ambiguous_... S20627C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20627C12");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*), 0, "S20627C12");
    check_base_class_offset(lv, (S20627C5*), 0, "S20627C12");
    check_base_class_offset(lv, (S9624C48*)(S20627C13*), ABISELECT(16,12), "S20627C12");
    check_base_class_offset(lv, (S20627C13*), ABISELECT(16,12), "S20627C12");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(12,8), "S20627C12");
    test_class_info(&lv, &cd_S20627C12);
    dp->~S20627C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C12(Test_S20627C12, "S20627C12", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN9S20627C12C1Ev();
extern void _ZN9S20627C12D1Ev();
Name_Map name_map_S20627C12[] = {
  NSPAIR(_ZN9S20627C12C1Ev),
  NSPAIR(_ZN9S20627C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C13;
extern VTBL_ENTRY _ZTI9S20627C13[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S20627C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20627C5,    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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20627C13,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S20627C12[];
static  VTBL_ENTRY vtc_S20627C12[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C12[0]),
};
extern VTBL_ENTRY _ZTV9S20627C12[];
static  VTBL_ENTRY _tg__ZTV8S20627C5__9S20627C12[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C12[] = {
  {&(_ZTV9S20627C12[4]),  4,4},
  {&(_tg__ZTV8S20627C5__9S20627C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20627C12[];
extern  VTBL_ENTRY _ZTV9S20627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C12[];
Class_Descriptor cd_S20627C12 = {  "S20627C12", // class name
  bases_S20627C12, 5,
  &(vtc_S20627C12[0]), // expected_vtbl_contents
  &(vtt_S20627C12[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI9S20627C12),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20627C12),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20627C12),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  S20627C14  : S9624C19_nt , virtual S20627C5 , virtual S9624C39 {
  virtual  ~S20627C14(); // _ZN9S20627C14D2Ev
  S20627C14(); // tgen
};
//SIG(-1 S20627C14) C1{ BC2{ m} VBC3{ VBC4{ m} Fi} VBC5{ m} vd}


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

static void Test_S20627C14()
{
  extern Class_Descriptor cd_S20627C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20627C14, buf);
    S20627C14 *dp, &lv = *(dp=new (buf) S20627C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20627C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C14)");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S20627C14");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*), 0, "S20627C14");
    check_base_class_offset(lv, (S20627C5*), ABISELECT(8,4), "S20627C14");
    check_base_class_offset(lv, (S9624C39*), 0, "S20627C14");
    test_class_info(&lv, &cd_S20627C14);
    dp->~S20627C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C14(Test_S20627C14, "S20627C14", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20627C14C1Ev();
extern void _ZN9S20627C14D2Ev();
Name_Map name_map_S20627C14[] = {
  NSPAIR(_ZN9S20627C14C1Ev),
  NSPAIR(_ZN9S20627C14D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S20627C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20627C5,    ABISELECT(8,4), //bcp->offset
    7, //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_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S20627C14[];
extern void _ZN9S20627C14D1Ev();
extern void _ZN9S20627C14D0Ev();
static  VTBL_ENTRY vtc_S20627C14[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C14[0]),
  (VTBL_ENTRY)&_ZN9S20627C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20627C14D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20627C14[0]),
};
extern VTBL_ENTRY _ZTV9S20627C14[];
static  VTBL_ENTRY _tg__ZTV8S20627C5__9S20627C14[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C14[] = {
  {&(_ZTV9S20627C14[5]),  5,10},
  {&(_ZTV9S20627C14[10]),  10,10},
  {&(_tg__ZTV8S20627C5__9S20627C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20627C14[];
extern  VTBL_ENTRY _ZTV9S20627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C14[];
Class_Descriptor cd_S20627C14 = {  "S20627C14", // class name
  bases_S20627C14, 4,
  &(vtc_S20627C14[0]), // expected_vtbl_contents
  &(vtt_S20627C14[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20627C14),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20627C14),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20627C14),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  S20627C11  : S20627C12 , virtual S20489C8 , S20627C2 , virtual S20627C14 {
  ~S20627C11(); // tgen
  S20627C11(); // tgen
};
//SIG(-1 S20627C11) C1{ BC2{ VBC3{ m} BC4{ VBC3 Fi} VBC5{ BC3} BC6{ m Fi}} VBC7{ m Fi:0 Fp} BC8{ VBC7 VBC3 BC4 v1} VBC9{ BC10{ m} VBC4 VBC11{ m} vd}}


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

static void Test_S20627C11()
{
  extern Class_Descriptor cd_S20627C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S20627C11, buf);
    S20627C11 *dp, &lv = *(dp=new (buf) S20627C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S20627C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C11)");
    /*is_ambiguous_... S20627C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C12*), 0, "S20627C11");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C12*), 0, "S20627C11");
    check_base_class_offset(lv, (S9624C48*)(S20627C2*), 0, "S20627C11");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C2*), 0, "S20627C11");
    /*is_ambiguous_... S20627C11::S20627C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C5*), 0, "S20627C11");
    check_base_class_offset(lv, (S20627C5*)(S20627C12*), 0, "S20627C11");
    check_base_class_offset(lv, (S9624C48*)(S20627C13*), ABISELECT(28,20), "S20627C11");
    check_base_class_offset(lv, (S20627C13*)(S20627C12*), ABISELECT(28,20), "S20627C11");
    check_base_class_offset(lv, (S20489C10_nt*)(S20627C12*), ABISELECT(12,8), "S20627C11");
    check_base_class_offset(lv, (S20627C12*), 0, "S20627C11");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(32,20), "S20627C11");
    check_base_class_offset(lv, (S20489C8*)(S20627C2*), ABISELECT(32,20), "S20627C11");
    check_base_class_offset(lv, (S20627C5*)(S20627C2*), ABISELECT(16,12), "S20627C11");
    check_base_class_offset(lv, (S20627C2*), ABISELECT(16,12), "S20627C11");
    check_base_class_offset(lv, (S9624C19_nt*)(S20627C14*), ABISELECT(40,24), "S20627C11");
    check_base_class_offset(lv, (S20627C5*)(S20627C14*), ABISELECT(48,28), "S20627C11");
    check_base_class_offset(lv, (S9624C39*)(S20627C14*), 0, "S20627C11");
    check_base_class_offset(lv, (S20627C14*), ABISELECT(40,24), "S20627C11");
    test_class_info(&lv, &cd_S20627C11);
    dp->~S20627C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C11(Test_S20627C11, "S20627C11", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN9S20627C11C1Ev();
extern void _ZN9S20627C11D1Ev();
Name_Map name_map_S20627C11[] = {
  NSPAIR(_ZN9S20627C11C1Ev),
  NSPAIR(_ZN9S20627C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C13;
extern VTBL_ENTRY _ZTI9S20627C13[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20627C12;
extern VTBL_ENTRY _ZTI9S20627C12[];
extern  VTBL_ENTRY _ZTV9S20627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C12[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20627C2;
extern VTBL_ENTRY _ZTI8S20627C2[];
extern  VTBL_ENTRY _ZTV8S20627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C2[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20627C14;
extern VTBL_ENTRY _ZTI9S20627C14[];
extern  VTBL_ENTRY _ZTV9S20627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C14[];
static Base_Class bases_S20627C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20627C5,    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
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20627C13,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20627C12,    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_S20489C8,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S20627C5,    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
    8, //immediately_derived
  0, 0},
  {&cd_S20627C2,    ABISELECT(16,12), //bcp->offset
    10, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C19_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
    12, //immediately_derived
  0, 0},
  {&cd_S20627C5,    ABISELECT(48,28), //bcp->offset
    23, //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
    12, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20627C14,    ABISELECT(40,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20627C11[];
extern void _ZN9S20627C11D1Ev();
extern void _ZN9S20627C11D0Ev();
extern void _ZN8S20627C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N9S20627C11D1Ev,_ZTv0_n24_N9S20627C11D1Ev)();
extern void ABISELECT(_ZThn40_N9S20627C11D1Ev,_ZThn24_N9S20627C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20627C11D0Ev,_ZTv0_n24_N9S20627C11D0Ev)();
extern void ABISELECT(_ZThn40_N9S20627C11D0Ev,_ZThn24_N9S20627C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20627C11[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
  (VTBL_ENTRY)&_ZN9S20627C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20627C11D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20627C11D1Ev,_ZTv0_n24_N9S20627C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20627C11D0Ev,_ZTv0_n24_N9S20627C11D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
};
extern VTBL_ENTRY _ZTV9S20627C11[];
static  VTBL_ENTRY _tg__ZTV9S20627C12__9S20627C11[] = {
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C59S20627C12__9S20627C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C2__9S20627C11[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C2[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C58S20627C2__A1__9S20627C11[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
extern void _ZN9S20627C14D1Ev();
extern void _ZN9S20627C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20627C14__9S20627C11[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C14[0]),
  (VTBL_ENTRY)&_ZN9S20627C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20627C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C5__9S20627C14__9S20627C11[] = {
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20627C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C5__A2__9S20627C11[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C11[] = {
  {&(_ZTV9S20627C11[8]),  8,26},
  {&(_tg__ZTV9S20627C12__9S20627C11[4]),  4,4},
  {&(_tg__ZTV8S20627C59S20627C12__9S20627C11[3]),  3,3},
  {&(_tg__ZTV8S20627C2__9S20627C11[4]),  4,5},
  {&(_tg__ZTV8S20627C58S20627C2__A1__9S20627C11[3]),  3,3},
  {&(_ZTV9S20627C11[14]),  14,26},
  {&(_ZTV9S20627C11[21]),  21,26},
  {&(_ZTV9S20627C11[26]),  26,26},
  {&(_tg__ZTV9S20627C14__9S20627C11[5]),  5,7},
  {&(_tg__ZTV8S20627C5__9S20627C14__9S20627C11[3]),  3,3},
  {&(_tg__ZTV8S20627C5__A2__9S20627C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20627C11[];
extern  VTBL_ENTRY _ZTV9S20627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C11[];
static VTBL_ENTRY alt_thunk_names101[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20627C11D0Ev,_ZTv0_n24_N9S20627C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20627C11D0Ev,_ZThn24_N9S20627C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20627C11D1Ev,_ZTv0_n24_N9S20627C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N9S20627C11D1Ev,_ZThn24_N9S20627C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20627C11 = {  "S20627C11", // class name
  bases_S20627C11, 13,
  &(vtc_S20627C11[0]), // expected_vtbl_contents
  &(vtt_S20627C11[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI9S20627C11),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV9S20627C11),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20627C11),11, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names101,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20627C17  : S9624C48 , S20627C13 , S20627C5 , virtual S20489C10_nt , virtual S20489C8 {
  ::S20627C13 s20627c17f0;
  ~S20627C17(); // tgen
  S20627C17(); // tgen
};
//SIG(-1 S20627C17) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S20627C17()
{
  extern Class_Descriptor cd_S20627C17;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20627C17, buf);
    S20627C17 *dp, &lv = *(dp=new (buf) S20627C17());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20627C17)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C17)");
    /*is_ambiguous_... S20627C17::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20627C17");
    check_base_class_offset(lv, (S9624C48*)(S20627C13*), ABISELECT(12,8), "S20627C17");
    check_base_class_offset(lv, (S20627C13*), ABISELECT(12,8), "S20627C17");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*), ABISELECT(14,10), "S20627C17");
    check_base_class_offset(lv, (S20627C5*), 0, "S20627C17");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,12), "S20627C17");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S20627C17");
    check_field_offset(lv, s20627c17f0, ABISELECT(13,9), "S20627C17.s20627c17f0");
    test_class_info(&lv, &cd_S20627C17);
    dp->~S20627C17();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C17(Test_S20627C17, "S20627C17", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN9S20627C17C1Ev();
extern void _ZN9S20627C17D1Ev();
Name_Map name_map_S20627C17[] = {
  NSPAIR(_ZN9S20627C17C1Ev),
  NSPAIR(_ZN9S20627C17D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C13;
extern VTBL_ENTRY _ZTI9S20627C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S20627C17[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20627C13,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20627C5,    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_S20489C10_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20627C17[];
static  VTBL_ENTRY vtc_S20627C17[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C17[0]),
};
extern VTBL_ENTRY _ZTV9S20627C17[];
static  VTBL_ENTRY _tg__ZTV8S20627C5__9S20627C17[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C17[] = {
  {&(_ZTV9S20627C17[5]),  5,5},
  {&(_tg__ZTV8S20627C5__9S20627C17[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20627C17[];
extern  VTBL_ENTRY _ZTV9S20627C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C17[];
Class_Descriptor cd_S20627C17 = {  "S20627C17", // class name
  bases_S20627C17, 7,
  &(vtc_S20627C17[0]), // expected_vtbl_contents
  &(vtt_S20627C17[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI9S20627C17),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S20627C17),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20627C17),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  S20627C16  : virtual S20627C17 {
  int s20627c16f0;
  ~S20627C16(); // tgen
  S20627C16(); // tgen
};
//SIG(-1 S20627C16) C1{ VBC2{ BC3{ m} BC4{ BC3} BC5{ VBC3 Fi} VBC6{ m Fi} VBC7{ m Fi:0 Fp} FC4} Fi}


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

static void Test_S20627C16()
{
  extern Class_Descriptor cd_S20627C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S20627C16, buf);
    S20627C16 *dp, &lv = *(dp=new (buf) S20627C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20627C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C16)");
    /*is_ambiguous_... S20627C17::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C17*), ABISELECT(16,8), "S20627C16");
    check_base_class_offset(lv, (S9624C48*)(S20627C13*)(S20627C17*), ABISELECT(28,16), "S20627C16");
    check_base_class_offset(lv, (S20627C13*)(S20627C17*), ABISELECT(28,16), "S20627C16");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C17*), 0, "S20627C16");
    check_base_class_offset(lv, (S20627C5*)(S20627C17*), ABISELECT(16,8), "S20627C16");
    check_base_class_offset(lv, (S20489C10_nt*)(S20627C17*), ABISELECT(32,20), "S20627C16");
    check_base_class_offset(lv, (S20489C8*)(S20627C17*), ABISELECT(40,24), "S20627C16");
    check_base_class_offset(lv, (S20627C17*), ABISELECT(16,8), "S20627C16");
    check_field_offset(lv, s20627c16f0, ABISELECT(8,4), "S20627C16.s20627c16f0");
    test_class_info(&lv, &cd_S20627C16);
    dp->~S20627C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C16(Test_S20627C16, "S20627C16", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN9S20627C16C1Ev();
extern void _ZN9S20627C16D1Ev();
Name_Map name_map_S20627C16[] = {
  NSPAIR(_ZN9S20627C16C1Ev),
  NSPAIR(_ZN9S20627C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C13;
extern VTBL_ENTRY _ZTI9S20627C13[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20627C17;
extern VTBL_ENTRY _ZTI9S20627C17[];
extern  VTBL_ENTRY _ZTV9S20627C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C17[];
static Base_Class bases_S20627C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    2, //immediately_derived
  0, 0},
  {&cd_S20627C13,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20627C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S20627C17,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S20627C16[];
static  VTBL_ENTRY vtc_S20627C16[] = {
  ABISELECT(40,24),
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C16[0]),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20627C16[0]),
};
extern VTBL_ENTRY _ZTV9S20627C16[];
static  VTBL_ENTRY _tg__ZTV9S20627C17__9S20627C16[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C59S20627C17__9S20627C16[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C16[] = {
  {&(_ZTV9S20627C16[6]),  6,11},
  {&(_ZTV9S20627C16[11]),  11,11},
  {&(_tg__ZTV9S20627C17__9S20627C16[5]),  5,5},
  {&(_tg__ZTV8S20627C59S20627C17__9S20627C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20627C16[];
extern  VTBL_ENTRY _ZTV9S20627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C16[];
Class_Descriptor cd_S20627C16 = {  "S20627C16", // class name
  bases_S20627C16, 8,
  &(vtc_S20627C16[0]), // expected_vtbl_contents
  &(vtt_S20627C16[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI9S20627C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S20627C16),11, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20627C16),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20627C1  : virtual S20627C2 , virtual S20627C6 , S20627C11 , virtual S20627C16 {
  ::S20627C12 s20627c1f0[28];
  virtual  ~S20627C1(); // _ZN8S20627C1D2Ev
  S20627C1(); // tgen
};
//SIG(1 S20627C1) C1{ VBC2{ VBC3{ m Fi:0 Fp} VBC4{ m} BC5{ VBC4 Fi} v1} VBC6{ VBC7{ m Fc} BC2 VBC8{ BC3 VBC9{ m} BC10{ m Fi} FL Fi} Fi} BC11{ BC12{ VBC4 BC5 VBC13{ BC4} BC10} VBC3 BC2 VBC14{ BC15{ m} VBC5 VBC9 vd}} VBC16{ VBC17{ BC4 BC13 BC5 VBC10 VBC3 FC13} Fi} vd FC12[28]}


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

static void Test_S20627C1()
{
  extern Class_Descriptor cd_S20627C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(108,140)];
    init_test(&cd_S20627C1, buf);
    S20627C1 *dp, &lv = *(dp=new (buf) S20627C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(856,556), "sizeof(S20627C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20627C1)");
    /*is_ambiguous_... S20627C1::S20627C2 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20627C2*), ABISELECT(720,476), "S20627C1");
    check_base_class_offset(lv, (S20489C8*)(S20627C2*)(S20627C6*), ABISELECT(720,476), "S20627C1");
    check_base_class_offset(lv, (S20489C8*)(S20627C11*), ABISELECT(720,476), "S20627C1");
    check_base_class_offset(lv, (S20489C8*)(S20627C2*)(S20627C11*), ABISELECT(720,476), "S20627C1");
    check_base_class_offset(lv, (S20489C8*)(S20627C17*), ABISELECT(720,476), "S20627C1");
    /*is_ambiguous_... S20627C1::S20627C2 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C2*), 0, "S20627C1");
    /*is_ambiguous_... S20627C1::S20627C2 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C2*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C2*)(S20627C6*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C2*)(S20627C6*), 0, "S20627C1");
    /*is_ambiguous_... S20627C12::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C12*)(S20627C11*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C12*)(S20627C11*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C2*)(S20627C11*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C2*)(S20627C11*), 0, "S20627C1");
    /*is_ambiguous_... S20627C1::S20627C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C5*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C5*)(S20627C17*), 0, "S20627C1");
    /*is_ambiguous_... S20627C1::S20627C2 */ AMB_check_base_class_offset(lv, (S20627C5*)(S20627C2*), ABISELECT(704,468), "S20627C1");
    /*is_ambiguous_... S20627C1::S20627C2 */ AMB_check_base_class_offset(lv, (S20627C2*), ABISELECT(704,468), "S20627C1");
    check_base_class_offset(lv, (S20627C7_nt*)(S20627C6*), ABISELECT(744,492), "S20627C1");
    check_base_class_offset(lv, (S20627C5*)(S20627C2*)(S20627C6*), ABISELECT(728,480), "S20627C1");
    check_base_class_offset(lv, (S20627C2*)(S20627C6*), ABISELECT(728,480), "S20627C1");
    check_base_class_offset(lv, (S20489C8*)(S20627C8*), ABISELECT(760,500), "S20627C1");
    check_base_class_offset(lv, (S9624C39*)(S20627C8*), 0, "S20627C1");
    check_base_class_offset(lv, (S9624C39*)(S20627C14*), 0, "S20627C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20627C8*), ABISELECT(768,504), "S20627C1");
    check_base_class_offset(lv, (S20627C8*)(S20627C6*), ABISELECT(752,496), "S20627C1");
    check_base_class_offset(lv, (S20627C6*), ABISELECT(728,480), "S20627C1");
    check_base_class_offset(lv, (S20627C5*)(S20627C12*)(S20627C11*), 0, "S20627C1");
    /*is_ambiguous_... S20627C1::S20627C13 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C13*), ABISELECT(788,520), "S20627C1");
    check_base_class_offset(lv, (S20627C13*)(S20627C12*)(S20627C11*), ABISELECT(788,520), "S20627C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20627C12*)(S20627C11*), ABISELECT(12,8), "S20627C1");
    check_base_class_offset(lv, (S20627C12*)(S20627C11*), 0, "S20627C1");
    check_base_class_offset(lv, (S20627C5*)(S20627C2*)(S20627C11*), ABISELECT(16,12), "S20627C1");
    check_base_class_offset(lv, (S20627C2*)(S20627C11*), ABISELECT(16,12), "S20627C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S20627C14*), ABISELECT(792,520), "S20627C1");
    check_base_class_offset(lv, (S20627C5*)(S20627C14*), ABISELECT(800,524), "S20627C1");
    check_base_class_offset(lv, (S20627C14*)(S20627C11*), ABISELECT(792,520), "S20627C1");
    check_base_class_offset(lv, (S20627C11*), 0, "S20627C1");
    /*is_ambiguous_... S20627C17::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20627C17*), ABISELECT(832,540), "S20627C1");
    check_base_class_offset(lv, (S9624C48*)(S20627C13*)(S20627C17*), ABISELECT(844,548), "S20627C1");
    check_base_class_offset(lv, (S20627C13*)(S20627C17*), ABISELECT(844,548), "S20627C1");
    check_base_class_offset(lv, (S20627C5*)(S20627C17*), ABISELECT(832,540), "S20627C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20627C17*), ABISELECT(848,552), "S20627C1");
    check_base_class_offset(lv, (S20627C17*)(S20627C16*), ABISELECT(832,540), "S20627C1");
    check_base_class_offset(lv, (S20627C16*), ABISELECT(816,532), "S20627C1");
    check_field_offset(lv, s20627c1f0, ABISELECT(32,20), "S20627C1.s20627c1f0");
    test_class_info(&lv, &cd_S20627C1);
    dp->~S20627C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20627C1(Test_S20627C1, "S20627C1", ABISELECT(856,556));

#else // __cplusplus

extern void _ZN8S20627C1C1Ev();
extern void _ZN8S20627C1D2Ev();
Name_Map name_map_S20627C1[] = {
  NSPAIR(_ZN8S20627C1C1Ev),
  NSPAIR(_ZN8S20627C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20627C2;
extern VTBL_ENTRY _ZTI8S20627C2[];
extern  VTBL_ENTRY _ZTV8S20627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C2[];
extern Class_Descriptor cd_S20627C7_nt;
extern VTBL_ENTRY _ZTI11S20627C7_nt[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20627C2;
extern VTBL_ENTRY _ZTI8S20627C2[];
extern  VTBL_ENTRY _ZTV8S20627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C2[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20627C8;
extern VTBL_ENTRY _ZTI8S20627C8[];
extern  VTBL_ENTRY _ZTV8S20627C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C8[];
extern Class_Descriptor cd_S20627C6;
extern VTBL_ENTRY _ZTI8S20627C6[];
extern  VTBL_ENTRY _ZTV8S20627C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C6[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C13;
extern VTBL_ENTRY _ZTI9S20627C13[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20627C12;
extern VTBL_ENTRY _ZTI9S20627C12[];
extern  VTBL_ENTRY _ZTV9S20627C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C12[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20627C2;
extern VTBL_ENTRY _ZTI8S20627C2[];
extern  VTBL_ENTRY _ZTV8S20627C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C2[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20627C14;
extern VTBL_ENTRY _ZTI9S20627C14[];
extern  VTBL_ENTRY _ZTV9S20627C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C14[];
extern Class_Descriptor cd_S20627C11;
extern VTBL_ENTRY _ZTI9S20627C11[];
extern  VTBL_ENTRY _ZTV9S20627C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C11[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20627C13;
extern VTBL_ENTRY _ZTI9S20627C13[];
extern Class_Descriptor cd_S20627C5;
extern VTBL_ENTRY _ZTI8S20627C5[];
extern  VTBL_ENTRY _ZTV8S20627C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20627C17;
extern VTBL_ENTRY _ZTI9S20627C17[];
extern  VTBL_ENTRY _ZTV9S20627C17[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C17[];
extern Class_Descriptor cd_S20627C16;
extern VTBL_ENTRY _ZTI9S20627C16[];
extern  VTBL_ENTRY _ZTV9S20627C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20627C16[];
static Base_Class bases_S20627C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(720,476), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20627C5,    ABISELECT(704,468), //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
    1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20627C2,    ABISELECT(704,468), //bcp->offset
    22, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20627C7_nt,    ABISELECT(744,492), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20627C5,    ABISELECT(728,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20627C2,    ABISELECT(728,480), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(760,500), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20489C10_nt,    ABISELECT(768,504), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S20627C8,    ABISELECT(752,496), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S20627C6,    ABISELECT(728,480), //bcp->offset
    28, //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
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20627C5,    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
    12, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(788,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20627C13,    ABISELECT(788,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    16, //immediately_derived
  0, 0},
  {&cd_S20627C12,    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
    13, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S20627C5,    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
    14, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S20627C2,    ABISELECT(16,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    15, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S9624C19_nt,    ABISELECT(792,520), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20627C5,    ABISELECT(800,524), //bcp->offset
    48, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    21, //immediately_derived
  0, 1},
  {&cd_S20627C14,    ABISELECT(792,520), //bcp->offset
    40, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    22, //immediately_derived
  0, 1},
  {&cd_S20627C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    16, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(832,540), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(844,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
    -1, //init_seq
    25, //immediately_derived
  0, 0},
  {&cd_S20627C13,    ABISELECT(844,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
    -1, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20627C5,    ABISELECT(832,540), //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
    9, //init_seq
    28, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(848,552), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    28, //immediately_derived
  0, 1},
  {&cd_S20627C17,    ABISELECT(832,540), //bcp->offset
    57, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    30, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    29, //immediately_derived
  0, 1},
  {&cd_S20627C16,    ABISELECT(816,532), //bcp->offset
    51, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    28, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20627C1[];
extern void _ZN8S20627C1D1Ev();
extern void _ZN8S20627C1D0Ev();
extern void _ZN8S20627C22v1Ev();
extern void _ZN8S20627C22v1Ev();
extern void _ZN8S20627C22v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S20627C1D1Ev,_ZTv0_n24_N8S20627C1D1Ev)();
extern void ABISELECT(_ZThn792_N8S20627C1D1Ev,_ZThn520_N8S20627C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20627C1D0Ev,_ZTv0_n24_N8S20627C1D0Ev)();
extern void ABISELECT(_ZThn792_N8S20627C1D0Ev,_ZThn520_N8S20627C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20627C1[] = {
  ABISELECT(848,552),
  ABISELECT(832,540),
  ABISELECT(816,532),
  ABISELECT(752,496),
  ABISELECT(744,492),
  ABISELECT(728,480),
  ABISELECT(704,468),
  0,
  ABISELECT(800,524),
  ABISELECT(792,520),
  ABISELECT(720,476),
  ABISELECT(788,520),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  (VTBL_ENTRY)&_ZN8S20627C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20627C1D0Ev,
  ABISELECT(704,464),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
  0,
  ABISELECT(16,8),
  ABISELECT(-704,-468),
  ABISELECT(-704,-468),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
  0,
  ABISELECT(-728,-480),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-728,-480),
  ABISELECT(-728,-480),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
  ABISELECT(-752,-496),
  ABISELECT(-752,-496),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  ABISELECT(-792,-520),
  ABISELECT(-792,-520),
  ABISELECT(-792,-520),
  ABISELECT(8,4),
  ABISELECT(-792,-520),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20627C1D1Ev,_ZTv0_n24_N8S20627C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20627C1D0Ev,_ZTv0_n24_N8S20627C1D0Ev),
  ABISELECT(-800,-524),
  ABISELECT(-800,-524),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  ABISELECT(-96,-56),
  ABISELECT(32,20),
  ABISELECT(-816,-532),
  ABISELECT(16,8),
  ABISELECT(-816,-532),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(-832,-540),
  ABISELECT(-832,-540),
  (VTBL_ENTRY)&(_ZTI8S20627C1[0]),
};
extern VTBL_ENTRY _ZTV8S20627C1[];
extern void _ZN9S20627C11D1Ev();
extern void _ZN9S20627C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20627C11__8S20627C1[] = {
  0,
  ABISELECT(800,524),
  ABISELECT(792,520),
  ABISELECT(720,476),
  ABISELECT(788,520),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
  (VTBL_ENTRY)&_ZN9S20627C11D1Ev,
  (VTBL_ENTRY)&_ZN9S20627C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV9S20627C129S20627C11__8S20627C1[] = {
  ABISELECT(788,520),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C59S20627C129S20627C11__A2__8S20627C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C29S20627C11__A2__8S20627C1[] = {
  ABISELECT(704,464),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C2[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C58S20627C29S20627C11__A3__8S20627C1[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C2__9S20627C11__8S20627C1[] = {
  ABISELECT(704,464),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N9S20627C11D1Ev,_ZTv0_n24_N9S20627C11D1Ev)();
extern void ABISELECT(_ZThn792_N9S20627C11D1Ev,_ZThn520_N9S20627C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N9S20627C11D0Ev,_ZTv0_n24_N9S20627C11D0Ev)();
extern void ABISELECT(_ZThn792_N9S20627C11D0Ev,_ZThn520_N9S20627C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S20627C14__9S20627C11__8S20627C1[] = {
  ABISELECT(-792,-520),
  ABISELECT(-792,-520),
  ABISELECT(-792,-520),
  ABISELECT(8,4),
  ABISELECT(-792,-520),
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20627C11D1Ev,_ZTv0_n24_N9S20627C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N9S20627C11D0Ev,_ZTv0_n24_N9S20627C11D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S20627C5__A2__9S20627C11__8S20627C1[] = {
  ABISELECT(-800,-524),
  ABISELECT(-800,-524),
  (VTBL_ENTRY)&(_ZTI9S20627C11[0]),
};
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C2__8S20627C1[] = {
  ABISELECT(16,8),
  ABISELECT(-704,-468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C2[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C58S20627C2__8S20627C1[] = {
  ABISELECT(-704,-468),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C6__8S20627C1[] = {
  ABISELECT(-728,-480),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-8,-4),
  ABISELECT(-728,-480),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C6[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
extern void _ZN8S20627C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20627C28S20627C6__A1__8S20627C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-728,-480),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C2[0]),
  (VTBL_ENTRY)&_ZN8S20627C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C58S20627C28S20627C6__A1__8S20627C1[] = {
  ABISELECT(-728,-480),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C8__8S20627C6__8S20627C1[] = {
  ABISELECT(-752,-496),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S20627C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C8__8S20627C1[] = {
  ABISELECT(-752,-496),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C8[0]),
};
extern void _ZN9S20627C14D1Ev();
extern void _ZN9S20627C14D0Ev();
static  VTBL_ENTRY _tg__ZTV9S20627C14__8S20627C1[] = {
  ABISELECT(-792,-520),
  ABISELECT(-792,-520),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C14[0]),
  (VTBL_ENTRY)&_ZN9S20627C14D1Ev,
  (VTBL_ENTRY)&_ZN9S20627C14D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20627C5__9S20627C14__8S20627C1[] = {
  ABISELECT(-800,-524),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S20627C14[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C5__A4__8S20627C1[] = {
  ABISELECT(-800,-524),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20627C16__8S20627C1[] = {
  ABISELECT(-96,-56),
  ABISELECT(32,20),
  ABISELECT(-816,-532),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20627C17__9S20627C16__8S20627C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(-832,-540),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S20627C16[0]),
};
static  VTBL_ENTRY _tg__ZTV9S20627C17__8S20627C1[] = {
  ABISELECT(-112,-64),
  ABISELECT(16,12),
  ABISELECT(-832,-540),
  0,
  (VTBL_ENTRY)&(_ZTI9S20627C17[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20627C59S20627C17__A5__8S20627C1[] = {
  ABISELECT(-832,-540),
  0,
  (VTBL_ENTRY)&(_ZTI8S20627C5[0]),
};
static  VTT_ENTRY vtt_S20627C1[] = {
  {&(_ZTV8S20627C1[15]),  15,62},
  {&(_tg__ZTV9S20627C11__8S20627C1[8]),  8,10},
  {&(_tg__ZTV9S20627C129S20627C11__8S20627C1[4]),  4,4},
  {&(_tg__ZTV8S20627C59S20627C129S20627C11__A2__8S20627C1[3]),  3,3},
  {&(_tg__ZTV8S20627C29S20627C11__A2__8S20627C1[4]),  4,5},
  {&(_tg__ZTV8S20627C58S20627C29S20627C11__A3__8S20627C1[3]),  3,3},
  {&(_tg__ZTV8S20627C2__9S20627C11__8S20627C1[4]),  4,5},
  {&(_tg__ZTV9S20627C14__9S20627C11__8S20627C1[6]),  6,8},
  {&(_tg__ZTV8S20627C5__A2__9S20627C11__8S20627C1[3]),  3,3},
  {&(_ZTV8S20627C1[27]),  27,62},
  {&(_ZTV8S20627C1[36]),  36,62},
  {&(_ZTV8S20627C1[40]),  40,62},
  {&(_ZTV8S20627C1[21]),  21,62},
  {&(_ZTV8S20627C1[46]),  46,62},
  {&(_ZTV8S20627C1[51]),  51,62},
  {&(_ZTV8S20627C1[57]),  57,62},
  {&(_ZTV8S20627C1[62]),  62,62},
  {&(_tg__ZTV8S20627C2__8S20627C1[4]),  4,5},
  {&(_tg__ZTV8S20627C58S20627C2__8S20627C1[3]),  3,3},
  {&(_tg__ZTV8S20627C6__8S20627C1[7]),  7,8},
  {&(_tg__ZTV8S20627C28S20627C6__A1__8S20627C1[4]),  4,5},
  {&(_tg__ZTV8S20627C58S20627C28S20627C6__A1__8S20627C1[3]),  3,3},
  {&(_tg__ZTV8S20627C8__8S20627C6__8S20627C1[3]),  3,3},
  {&(_tg__ZTV8S20627C8__8S20627C1[3]),  3,3},
  {&(_tg__ZTV9S20627C14__8S20627C1[5]),  5,7},
  {&(_tg__ZTV8S20627C5__9S20627C14__8S20627C1[3]),  3,3},
  {&(_tg__ZTV8S20627C5__A4__8S20627C1[3]),  3,3},
  {&(_tg__ZTV9S20627C16__8S20627C1[6]),  6,6},
  {&(_tg__ZTV9S20627C17__9S20627C16__8S20627C1[5]),  5,5},
  {&(_tg__ZTV9S20627C17__8S20627C1[5]),  5,5},
  {&(_tg__ZTV8S20627C59S20627C17__A5__8S20627C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20627C1[];
extern  VTBL_ENTRY _ZTV8S20627C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20627C1[];
static VTBL_ENTRY alt_thunk_names102[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20627C11D0Ev,_ZTv0_n24_N9S20627C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S20627C11D0Ev,_ZThn520_N9S20627C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N9S20627C11D1Ev,_ZTv0_n24_N9S20627C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N9S20627C11D1Ev,_ZThn520_N9S20627C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20627C1D0Ev,_ZTv0_n24_N8S20627C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S20627C1D0Ev,_ZThn520_N8S20627C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20627C1D1Ev,_ZTv0_n24_N8S20627C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn792_N8S20627C1D1Ev,_ZThn520_N8S20627C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20627C1 = {  "S20627C1", // class name
  bases_S20627C1, 30,
  &(vtc_S20627C1[0]), // expected_vtbl_contents
  &(vtt_S20627C1[0]), // expected_vtt_contents
  ABISELECT(856,556), // object size
  NSPAIRA(_ZTI8S20627C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20627C1),62, //virtual function table var
  15, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20627C1),31, //virtual table table var
  16, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names102,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7156C2_nt  {
  virtual void  v8(); // _ZN10S7156C2_nt2v8Ev
  virtual void  v9(); // _ZN10S7156C2_nt2v9Ev
  virtual void  v10(); // _ZN10S7156C2_nt3v10Ev
  ~S7156C2_nt(); // tgen
  S7156C2_nt(); // tgen
};
//SIG(-1 S7156C2_nt) C1{ v1 v2 v3}


void  S7156C2_nt ::v8(){vfunc_called(this, "_ZN10S7156C2_nt2v8Ev");}
void  S7156C2_nt ::v9(){vfunc_called(this, "_ZN10S7156C2_nt2v9Ev");}
void  S7156C2_nt ::v10(){vfunc_called(this, "_ZN10S7156C2_nt3v10Ev");}
S7156C2_nt ::~S7156C2_nt(){ note_dtor("S7156C2_nt", this);} // tgen
S7156C2_nt ::S7156C2_nt(){ note_ctor("S7156C2_nt", this);} // tgen

//skip512 S7156C2_nt

#else // __cplusplus

extern void _ZN10S7156C2_ntC1Ev();
extern void _ZN10S7156C2_ntD1Ev();
Name_Map name_map_S7156C2_nt[] = {
  NSPAIR(_ZN10S7156C2_ntC1Ev),
  NSPAIR(_ZN10S7156C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7156C2_nt[];
extern void _ZN10S7156C2_nt2v8Ev();
extern void _ZN10S7156C2_nt2v9Ev();
extern void _ZN10S7156C2_nt3v10Ev();
static  VTBL_ENTRY vtc_S7156C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7156C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S7156C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7156C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7156C2_nt3v10Ev,
};
extern VTBL_ENTRY _ZTI10S7156C2_nt[];
VTBL_ENTRY *P__ZTI10S7156C2_nt = _ZTI10S7156C2_nt; 
extern  VTBL_ENTRY _ZTV10S7156C2_nt[];
Class_Descriptor cd_S7156C2_nt = {  "S7156C2_nt", // class name
  0,0,//no base classes
  &(vtc_S7156C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S7156C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7156C2_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  S7156C4  {
  ::S19101C6 s7156c4f0[4];
  virtual  ~S7156C4(); // _ZN7S7156C4D1Ev
  virtual void  v11(); // _ZN7S7156C43v11Ev
  virtual void  v12(); // _ZN7S7156C43v12Ev
  virtual void  v13(); // _ZN7S7156C43v13Ev
  virtual void  v14(); // _ZN7S7156C43v14Ev
  virtual void  v15(); // _ZN7S7156C43v15Ev
  virtual void  v16(); // _ZN7S7156C43v16Ev
  virtual void  v17(); // _ZN7S7156C43v17Ev
  S7156C4(); // tgen
};
//SIG(-1 S7156C4) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ vd v8 v9 v10 v11 v12 v13 Fs}[4]}


 S7156C4 ::~S7156C4(){ note_dtor("S7156C4", this);}
void  S7156C4 ::v11(){vfunc_called(this, "_ZN7S7156C43v11Ev");}
void  S7156C4 ::v12(){vfunc_called(this, "_ZN7S7156C43v12Ev");}
void  S7156C4 ::v13(){vfunc_called(this, "_ZN7S7156C43v13Ev");}
void  S7156C4 ::v14(){vfunc_called(this, "_ZN7S7156C43v14Ev");}
void  S7156C4 ::v15(){vfunc_called(this, "_ZN7S7156C43v15Ev");}
void  S7156C4 ::v16(){vfunc_called(this, "_ZN7S7156C43v16Ev");}
void  S7156C4 ::v17(){vfunc_called(this, "_ZN7S7156C43v17Ev");}
S7156C4 ::S7156C4(){ note_ctor("S7156C4", this);} // tgen

static void Test_S7156C4()
{
  extern Class_Descriptor cd_S7156C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S7156C4, buf);
    S7156C4 *dp, &lv = *(dp=new (buf) S7156C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S7156C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7156C4)");
    check_field_offset(lv, s7156c4f0, ABISELECT(8,4), "S7156C4.s7156c4f0");
    test_class_info(&lv, &cd_S7156C4);
    dp->~S7156C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7156C4(Test_S7156C4, "S7156C4", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S7156C4C1Ev();
extern void _ZN7S7156C4D1Ev();
Name_Map name_map_S7156C4[] = {
  NSPAIR(_ZN7S7156C4C1Ev),
  NSPAIR(_ZN7S7156C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7156C4[];
extern void _ZN7S7156C4D1Ev();
extern void _ZN7S7156C4D0Ev();
extern void _ZN7S7156C43v11Ev();
extern void _ZN7S7156C43v12Ev();
extern void _ZN7S7156C43v13Ev();
extern void _ZN7S7156C43v14Ev();
extern void _ZN7S7156C43v15Ev();
extern void _ZN7S7156C43v16Ev();
extern void _ZN7S7156C43v17Ev();
static  VTBL_ENTRY vtc_S7156C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C4[0]),
  (VTBL_ENTRY)&_ZN7S7156C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7156C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v17Ev,
};
extern VTBL_ENTRY _ZTI7S7156C4[];
extern  VTBL_ENTRY _ZTV7S7156C4[];
Class_Descriptor cd_S7156C4 = {  "S7156C4", // class name
  0,0,//no base classes
  &(vtc_S7156C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S7156C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7156C4),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7156C7  {
  virtual void  v18(); // _ZN7S7156C73v18Ev
  ~S7156C7(); // tgen
  S7156C7(); // tgen
};
//SIG(-1 S7156C7) C1{ v1}


void  S7156C7 ::v18(){vfunc_called(this, "_ZN7S7156C73v18Ev");}
S7156C7 ::~S7156C7(){ note_dtor("S7156C7", this);} // tgen
S7156C7 ::S7156C7(){ note_ctor("S7156C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7156C7C1Ev();
extern void _ZN7S7156C7D1Ev();
Name_Map name_map_S7156C7[] = {
  NSPAIR(_ZN7S7156C7C1Ev),
  NSPAIR(_ZN7S7156C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7156C7[];
extern void _ZN7S7156C73v18Ev();
static  VTBL_ENTRY vtc_S7156C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C7[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
};
extern VTBL_ENTRY _ZTI7S7156C7[];
extern  VTBL_ENTRY _ZTV7S7156C7[];
Class_Descriptor cd_S7156C7 = {  "S7156C7", // class name
  0,0,//no base classes
  &(vtc_S7156C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7156C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7156C7),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  S7156C6  : virtual S7156C7 {
  virtual void  v19(); // _ZN7S7156C63v19Ev
  ~S7156C6(); // tgen
  S7156C6(); // tgen
};
//SIG(-1 S7156C6) C1{ VBC2{ v2} v1}


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

static void Test_S7156C6()
{
  extern Class_Descriptor cd_S7156C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7156C6, buf);
    S7156C6 *dp, &lv = *(dp=new (buf) S7156C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7156C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7156C6)");
    check_base_class_offset(lv, (S7156C7*), 0, "S7156C6");
    test_class_info(&lv, &cd_S7156C6);
    dp->~S7156C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7156C6(Test_S7156C6, "S7156C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7156C6C1Ev();
extern void _ZN7S7156C6D1Ev();
Name_Map name_map_S7156C6[] = {
  NSPAIR(_ZN7S7156C6C1Ev),
  NSPAIR(_ZN7S7156C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7156C7;
extern VTBL_ENTRY _ZTI7S7156C7[];
extern  VTBL_ENTRY _ZTV7S7156C7[];
static Base_Class bases_S7156C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7156C7,    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 _ZTI7S7156C6[];
extern void _ZN7S7156C73v18Ev();
extern void _ZN7S7156C63v19Ev();
static  VTBL_ENTRY vtc_S7156C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C6[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7156C63v19Ev,
};
extern VTBL_ENTRY _ZTV7S7156C6[];
static  VTT_ENTRY vtt_S7156C6[] = {
  {&(_ZTV7S7156C6[4]),  4,6},
  {&(_ZTV7S7156C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7156C6[];
extern  VTBL_ENTRY _ZTV7S7156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7156C6[];
Class_Descriptor cd_S7156C6 = {  "S7156C6", // class name
  bases_S7156C6, 1,
  &(vtc_S7156C6[0]), // expected_vtbl_contents
  &(vtt_S7156C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7156C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7156C6),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7156C6),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  S7156C3  : S7156C4 , S7156C6 {
  char s7156c3f0:8;
  virtual void  v20(); // _ZN7S7156C33v20Ev
  ~S7156C3(); // tgen
  S7156C3(); // tgen
};
//SIG(-1 S7156C3) C1{ BC2{ vd v2 v3 v4 v5 v6 v7 v8 FC3{ vd v11 v12 v13 v14 v15 v16 Fs}[4]} BC4{ VBC5{ v9} v10} v1 Fc:8}


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

static void Test_S7156C3()
{
  extern Class_Descriptor cd_S7156C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S7156C3, buf);
    S7156C3 *dp, &lv = *(dp=new (buf) S7156C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S7156C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7156C3)");
    check_base_class_offset(lv, (S7156C4*), 0, "S7156C3");
    check_base_class_offset(lv, (S7156C7*)(S7156C6*), ABISELECT(72,36), "S7156C3");
    check_base_class_offset(lv, (S7156C6*), ABISELECT(72,36), "S7156C3");
    set_bf_and_test(lv, s7156c3f0, ABISELECT(80,40), 0, 8, 1, "S7156C3");
    set_bf_and_test(lv, s7156c3f0, ABISELECT(80,40), 0, 8, hide_sll(1LL<<7), "S7156C3");
    test_class_info(&lv, &cd_S7156C3);
    dp->~S7156C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7156C3(Test_S7156C3, "S7156C3", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S7156C3C1Ev();
extern void _ZN7S7156C3D1Ev();
Name_Map name_map_S7156C3[] = {
  NSPAIR(_ZN7S7156C3C1Ev),
  NSPAIR(_ZN7S7156C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7156C4;
extern VTBL_ENTRY _ZTI7S7156C4[];
extern  VTBL_ENTRY _ZTV7S7156C4[];
extern Class_Descriptor cd_S7156C7;
extern VTBL_ENTRY _ZTI7S7156C7[];
extern  VTBL_ENTRY _ZTV7S7156C7[];
extern Class_Descriptor cd_S7156C6;
extern VTBL_ENTRY _ZTI7S7156C6[];
extern  VTBL_ENTRY _ZTV7S7156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7156C6[];
static Base_Class bases_S7156C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7156C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7156C7,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7156C6,    ABISELECT(72,36), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7156C3[];
extern void _ZN7S7156C3D1Ev();
extern void _ZN7S7156C3D0Ev();
extern void _ZN7S7156C43v11Ev();
extern void _ZN7S7156C43v12Ev();
extern void _ZN7S7156C43v13Ev();
extern void _ZN7S7156C43v14Ev();
extern void _ZN7S7156C43v15Ev();
extern void _ZN7S7156C43v16Ev();
extern void _ZN7S7156C43v17Ev();
extern void _ZN7S7156C33v20Ev();
extern void _ZN7S7156C73v18Ev();
extern void _ZN7S7156C63v19Ev();
static  VTBL_ENTRY vtc_S7156C3[] = {
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C3[0]),
  (VTBL_ENTRY)&_ZN7S7156C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7156C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7156C33v20Ev,
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7156C3[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7156C63v19Ev,
};
extern VTBL_ENTRY _ZTV7S7156C3[];
extern void _ZN7S7156C73v18Ev();
extern void _ZN7S7156C63v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7156C6__7S7156C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C6[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7156C63v19Ev,
};
static  VTT_ENTRY vtt_S7156C3[] = {
  {&(_ZTV7S7156C3[3]),  3,19},
  {&(_tg__ZTV7S7156C6__7S7156C3[4]),  4,6},
  {&(_tg__ZTV7S7156C6__7S7156C3[4]),  4,6},
  {&(_ZTV7S7156C3[17]),  17,19},
  {&(_ZTV7S7156C3[17]),  17,19},
};
extern VTBL_ENTRY _ZTI7S7156C3[];
extern  VTBL_ENTRY _ZTV7S7156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7156C3[];
Class_Descriptor cd_S7156C3 = {  "S7156C3", // class name
  bases_S7156C3, 3,
  &(vtc_S7156C3[0]), // expected_vtbl_contents
  &(vtt_S7156C3[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S7156C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7156C3),19, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7156C3),5, //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  S7156C1  : S7156C2_nt , virtual S7156C3 {
  ::S19101C7 s7156c1f0;
  virtual  ~S7156C1(); // _ZN7S7156C1D2Ev
  virtual void  v1(); // _ZN7S7156C12v1Ev
  virtual void  v2(); // _ZN7S7156C12v2Ev
  virtual void  v3(); // _ZN7S7156C12v3Ev
  virtual void  v4(); // _ZN7S7156C12v4Ev
  virtual void  v5(); // _ZN7S7156C12v5Ev
  virtual void  v6(); // _ZN7S7156C12v6Ev
  virtual void  v7(); // _ZN7S7156C12v7Ev
  S7156C1(); // tgen
};
//SIG(1 S7156C1) C1{ BC2{ v8 v9 v10} VBC3{ BC4{ vd v11 v12 v13 v14 v15 v16 v17 FC5{ vd v31 v32 v33 v34 v35 v36 Fs}[4]} BC6{ VBC7{ v18} v19} v20 Fc:8} vd v1 v2 v3 v4 v5 v6 v7 FC8{ BC9{ v23 v24 v25 v26 v27 Fi} vd v21 v22 FC10{ BC9 vd v28 v29 v30 FC11{}}}}


 S7156C1 ::~S7156C1(){ note_dtor("S7156C1", this);}
void  S7156C1 ::v1(){vfunc_called(this, "_ZN7S7156C12v1Ev");}
void  S7156C1 ::v2(){vfunc_called(this, "_ZN7S7156C12v2Ev");}
void  S7156C1 ::v3(){vfunc_called(this, "_ZN7S7156C12v3Ev");}
void  S7156C1 ::v4(){vfunc_called(this, "_ZN7S7156C12v4Ev");}
void  S7156C1 ::v5(){vfunc_called(this, "_ZN7S7156C12v5Ev");}
void  S7156C1 ::v6(){vfunc_called(this, "_ZN7S7156C12v6Ev");}
void  S7156C1 ::v7(){vfunc_called(this, "_ZN7S7156C12v7Ev");}
S7156C1 ::S7156C1(){ note_ctor("S7156C1", this);} // tgen

static void Test_S7156C1()
{
  extern Class_Descriptor cd_S7156C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S7156C1, buf);
    S7156C1 *dp, &lv = *(dp=new (buf) S7156C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S7156C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7156C1)");
    check_base_class_offset(lv, (S7156C2_nt*), 0, "S7156C1");
    check_base_class_offset(lv, (S7156C4*)(S7156C3*), ABISELECT(40,24), "S7156C1");
    check_base_class_offset(lv, (S7156C7*)(S7156C6*)(S7156C3*), ABISELECT(112,60), "S7156C1");
    check_base_class_offset(lv, (S7156C6*)(S7156C3*), ABISELECT(112,60), "S7156C1");
    check_base_class_offset(lv, (S7156C3*), ABISELECT(40,24), "S7156C1");
    check_field_offset(lv, s7156c1f0, ABISELECT(8,4), "S7156C1.s7156c1f0");
    test_class_info(&lv, &cd_S7156C1);
    dp->~S7156C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7156C1(Test_S7156C1, "S7156C1", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN7S7156C1C1Ev();
extern void _ZN7S7156C1D2Ev();
Name_Map name_map_S7156C1[] = {
  NSPAIR(_ZN7S7156C1C1Ev),
  NSPAIR(_ZN7S7156C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7156C2_nt;
extern VTBL_ENTRY _ZTI10S7156C2_nt[];
extern  VTBL_ENTRY _ZTV10S7156C2_nt[];
extern Class_Descriptor cd_S7156C4;
extern VTBL_ENTRY _ZTI7S7156C4[];
extern  VTBL_ENTRY _ZTV7S7156C4[];
extern Class_Descriptor cd_S7156C7;
extern VTBL_ENTRY _ZTI7S7156C7[];
extern  VTBL_ENTRY _ZTV7S7156C7[];
extern Class_Descriptor cd_S7156C6;
extern VTBL_ENTRY _ZTI7S7156C6[];
extern  VTBL_ENTRY _ZTV7S7156C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7156C6[];
extern Class_Descriptor cd_S7156C3;
extern VTBL_ENTRY _ZTI7S7156C3[];
extern  VTBL_ENTRY _ZTV7S7156C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7156C3[];
static Base_Class bases_S7156C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7156C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7156C4,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7156C7,    ABISELECT(112,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7156C6,    ABISELECT(112,60), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7156C3,    ABISELECT(40,24), //bcp->offset
    16, //bcp->virtual_function_table_offset
    13, //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 _ZTI7S7156C1[];
extern void _ZN10S7156C2_nt2v8Ev();
extern void _ZN10S7156C2_nt2v9Ev();
extern void _ZN10S7156C2_nt3v10Ev();
extern void _ZN7S7156C1D1Ev();
extern void _ZN7S7156C1D0Ev();
extern void _ZN7S7156C12v1Ev();
extern void _ZN7S7156C12v2Ev();
extern void _ZN7S7156C12v3Ev();
extern void _ZN7S7156C12v4Ev();
extern void _ZN7S7156C12v5Ev();
extern void _ZN7S7156C12v6Ev();
extern void _ZN7S7156C12v7Ev();
extern void ABISELECT(_ZTv0_n32_N7S7156C1D1Ev,_ZTv0_n16_N7S7156C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S7156C1D1Ev,_ZThn24_N7S7156C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7156C1D0Ev,_ZTv0_n16_N7S7156C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S7156C1D0Ev,_ZThn24_N7S7156C1D0Ev)() __attribute__((weak));
extern void _ZN7S7156C43v11Ev();
extern void _ZN7S7156C43v12Ev();
extern void _ZN7S7156C43v13Ev();
extern void _ZN7S7156C43v14Ev();
extern void _ZN7S7156C43v15Ev();
extern void _ZN7S7156C43v16Ev();
extern void _ZN7S7156C43v17Ev();
extern void _ZN7S7156C33v20Ev();
extern void _ZN7S7156C73v18Ev();
extern void _ZN7S7156C63v19Ev();
static  VTBL_ENTRY vtc_S7156C1[] = {
  ABISELECT(112,60),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C1[0]),
  (VTBL_ENTRY)&_ZN10S7156C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7156C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7156C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN7S7156C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7156C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7156C12v7Ev,
  ABISELECT(72,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(72,36),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7156C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7156C1D1Ev,_ZTv0_n16_N7S7156C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7156C1D0Ev,_ZTv0_n16_N7S7156C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7156C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7156C33v20Ev,
  0,
  0,
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI7S7156C1[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7156C63v19Ev,
};
extern VTBL_ENTRY _ZTV7S7156C1[];
extern void _ZN7S7156C3D1Ev();
extern void _ZN7S7156C3D0Ev();
extern void _ZN7S7156C43v11Ev();
extern void _ZN7S7156C43v12Ev();
extern void _ZN7S7156C43v13Ev();
extern void _ZN7S7156C43v14Ev();
extern void _ZN7S7156C43v15Ev();
extern void _ZN7S7156C43v16Ev();
extern void _ZN7S7156C43v17Ev();
extern void _ZN7S7156C33v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7156C3__7S7156C1[] = {
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C3[0]),
  (VTBL_ENTRY)&_ZN7S7156C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7156C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7156C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7156C33v20Ev,
};
extern void _ZN7S7156C73v18Ev();
extern void _ZN7S7156C63v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7156C67S7156C3__7S7156C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7156C6[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7156C63v19Ev,
};
extern void _ZN7S7156C73v18Ev();
extern void _ZN7S7156C63v19Ev();
static  VTBL_ENTRY _tg__ZTV7S7156C6__7S7156C3__7S7156C1[] = {
  0,
  0,
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7156C3[0]),
  (VTBL_ENTRY)&_ZN7S7156C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7156C63v19Ev,
};
static  VTT_ENTRY vtt_S7156C1[] = {
  {&(_ZTV7S7156C1[4]),  4,45},
  {&(_ZTV7S7156C1[29]),  29,45},
  {&(_ZTV7S7156C1[43]),  43,45},
  {&(_ZTV7S7156C1[43]),  43,45},
  {&(_tg__ZTV7S7156C3__7S7156C1[3]),  3,13},
  {&(_tg__ZTV7S7156C67S7156C3__7S7156C1[4]),  4,6},
  {&(_tg__ZTV7S7156C67S7156C3__7S7156C1[4]),  4,6},
  {&(_tg__ZTV7S7156C6__7S7156C3__7S7156C1[4]),  4,6},
  {&(_tg__ZTV7S7156C6__7S7156C3__7S7156C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7156C1[];
extern  VTBL_ENTRY _ZTV7S7156C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7156C1[];
static VTBL_ENTRY alt_thunk_names103[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7156C1D0Ev,_ZTv0_n16_N7S7156C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7156C1D0Ev,_ZThn24_N7S7156C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7156C1D1Ev,_ZTv0_n16_N7S7156C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7156C1D1Ev,_ZThn24_N7S7156C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7156C1 = {  "S7156C1", // class name
  bases_S7156C1, 5,
  &(vtc_S7156C1[0]), // expected_vtbl_contents
  &(vtt_S7156C1[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI7S7156C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7156C1),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7156C1),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names103,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7685C3_nt  {
  long s7685c3f0;
  virtual void  v8(); // _ZN10S7685C3_nt2v8Ev
  virtual void  v9(); // _ZN10S7685C3_nt2v9Ev
  virtual void  v10(); // _ZN10S7685C3_nt3v10Ev
  virtual void  v11(); // _ZN10S7685C3_nt3v11Ev
  virtual void  v12(); // _ZN10S7685C3_nt3v12Ev
  ~S7685C3_nt(); // tgen
  S7685C3_nt(); // tgen
};
//SIG(-1 S7685C3_nt) C1{ v1 v2 v3 v4 v5 Fl}


void  S7685C3_nt ::v8(){vfunc_called(this, "_ZN10S7685C3_nt2v8Ev");}
void  S7685C3_nt ::v9(){vfunc_called(this, "_ZN10S7685C3_nt2v9Ev");}
void  S7685C3_nt ::v10(){vfunc_called(this, "_ZN10S7685C3_nt3v10Ev");}
void  S7685C3_nt ::v11(){vfunc_called(this, "_ZN10S7685C3_nt3v11Ev");}
void  S7685C3_nt ::v12(){vfunc_called(this, "_ZN10S7685C3_nt3v12Ev");}
S7685C3_nt ::~S7685C3_nt(){ note_dtor("S7685C3_nt", this);} // tgen
S7685C3_nt ::S7685C3_nt(){ note_ctor("S7685C3_nt", this);} // tgen

//skip512 S7685C3_nt

#else // __cplusplus

extern void _ZN10S7685C3_ntC1Ev();
extern void _ZN10S7685C3_ntD1Ev();
Name_Map name_map_S7685C3_nt[] = {
  NSPAIR(_ZN10S7685C3_ntC1Ev),
  NSPAIR(_ZN10S7685C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
static  VTBL_ENTRY vtc_S7685C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S7685C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
};
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
VTBL_ENTRY *P__ZTI10S7685C3_nt = _ZTI10S7685C3_nt; 
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
Class_Descriptor cd_S7685C3_nt = {  "S7685C3_nt", // class name
  0,0,//no base classes
  &(vtc_S7685C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S7685C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S7685C3_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  S7685C6  {
  short s7685c6f0;
  virtual  ~S7685C6(); // _ZN7S7685C6D1Ev
  virtual void  v13(); // _ZN7S7685C63v13Ev
  virtual void  v14(); // _ZN7S7685C63v14Ev
  virtual void  v15(); // _ZN7S7685C63v15Ev
  virtual void  v16(); // _ZN7S7685C63v16Ev
  virtual void  v17(); // _ZN7S7685C63v17Ev
  virtual void  v18(); // _ZN7S7685C63v18Ev
  S7685C6(); // tgen
};
//SIG(-1 S7685C6) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S7685C6 ::~S7685C6(){ note_dtor("S7685C6", this);}
void  S7685C6 ::v13(){vfunc_called(this, "_ZN7S7685C63v13Ev");}
void  S7685C6 ::v14(){vfunc_called(this, "_ZN7S7685C63v14Ev");}
void  S7685C6 ::v15(){vfunc_called(this, "_ZN7S7685C63v15Ev");}
void  S7685C6 ::v16(){vfunc_called(this, "_ZN7S7685C63v16Ev");}
void  S7685C6 ::v17(){vfunc_called(this, "_ZN7S7685C63v17Ev");}
void  S7685C6 ::v18(){vfunc_called(this, "_ZN7S7685C63v18Ev");}
S7685C6 ::S7685C6(){ note_ctor("S7685C6", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7685C6C1Ev();
extern void _ZN7S7685C6D1Ev();
Name_Map name_map_S7685C6[] = {
  NSPAIR(_ZN7S7685C6C1Ev),
  NSPAIR(_ZN7S7685C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7685C6[];
extern void _ZN7S7685C6D1Ev();
extern void _ZN7S7685C6D0Ev();
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY vtc_S7685C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C6[0]),
  (VTBL_ENTRY)&_ZN7S7685C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern VTBL_ENTRY _ZTI7S7685C6[];
extern  VTBL_ENTRY _ZTV7S7685C6[];
Class_Descriptor cd_S7685C6 = {  "S7685C6", // class name
  0,0,//no base classes
  &(vtc_S7685C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7685C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7685C6),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7685C5  : virtual S7685C6 , S7685C3_nt {
  char s7685c5f0;
  virtual  ~S7685C5(); // _ZN7S7685C5D2Ev
  S7685C5(); // tgen
};
//SIG(-1 S7685C5) C1{ VBC2{ vd v1 v2 v3 v4 v5 v6 Fs} BC3{ v7 v8 v9 v10 v11 Fl} vd Fc}


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

static void Test_S7685C5()
{
  extern Class_Descriptor cd_S7685C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7685C5, buf);
    S7685C5 *dp, &lv = *(dp=new (buf) S7685C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7685C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7685C5)");
    check_base_class_offset(lv, (S7685C6*), ABISELECT(24,12), "S7685C5");
    check_base_class_offset(lv, (S7685C3_nt*), 0, "S7685C5");
    check_field_offset(lv, s7685c5f0, ABISELECT(16,8), "S7685C5.s7685c5f0");
    test_class_info(&lv, &cd_S7685C5);
    dp->~S7685C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7685C5(Test_S7685C5, "S7685C5", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7685C5C1Ev();
extern void _ZN7S7685C5D2Ev();
Name_Map name_map_S7685C5[] = {
  NSPAIR(_ZN7S7685C5C1Ev),
  NSPAIR(_ZN7S7685C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7685C6;
extern VTBL_ENTRY _ZTI7S7685C6[];
extern  VTBL_ENTRY _ZTV7S7685C6[];
extern Class_Descriptor cd_S7685C3_nt;
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
static Base_Class bases_S7685C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7685C6,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7685C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7685C5[];
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void _ZN7S7685C5D1Ev();
extern void _ZN7S7685C5D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY vtc_S7685C5[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern VTBL_ENTRY _ZTV7S7685C5[];
static  VTT_ENTRY vtt_S7685C5[] = {
  {&(_ZTV7S7685C5[3]),  3,27},
  {&(_ZTV7S7685C5[19]),  19,27},
};
extern VTBL_ENTRY _ZTI7S7685C5[];
extern  VTBL_ENTRY _ZTV7S7685C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C5[];
static VTBL_ENTRY alt_thunk_names104[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7685C5 = {  "S7685C5", // class name
  bases_S7685C5, 2,
  &(vtc_S7685C5[0]), // expected_vtbl_contents
  &(vtt_S7685C5[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7685C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7685C5),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7685C5),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names104,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7685C4  : virtual S7685C5 {
  ::S7685C6 s7685c4f0;
  virtual void  v19(); // _ZN7S7685C43v19Ev
  virtual void  v20(); // _ZN7S7685C43v20Ev
  virtual void  v21(); // _ZN7S7685C43v21Ev
  virtual void  v22(); // _ZN7S7685C43v22Ev
  virtual void  v23(); // _ZN7S7685C43v23Ev
  virtual void  v24(); // _ZN7S7685C43v24Ev
  ~S7685C4(); // tgen
  S7685C4(); // tgen
};
//SIG(-1 S7685C4) C1{ VBC2{ VBC3{ vd v7 v8 v9 v10 v11 v12 Fs} BC4{ v13 v14 v15 v16 v17 Fl} vd Fc} v1 v2 v3 v4 v5 v6 FC3}


void  S7685C4 ::v19(){vfunc_called(this, "_ZN7S7685C43v19Ev");}
void  S7685C4 ::v20(){vfunc_called(this, "_ZN7S7685C43v20Ev");}
void  S7685C4 ::v21(){vfunc_called(this, "_ZN7S7685C43v21Ev");}
void  S7685C4 ::v22(){vfunc_called(this, "_ZN7S7685C43v22Ev");}
void  S7685C4 ::v23(){vfunc_called(this, "_ZN7S7685C43v23Ev");}
void  S7685C4 ::v24(){vfunc_called(this, "_ZN7S7685C43v24Ev");}
S7685C4 ::~S7685C4(){ note_dtor("S7685C4", this);} // tgen
S7685C4 ::S7685C4(){ note_ctor("S7685C4", this);} // tgen

static void Test_S7685C4()
{
  extern Class_Descriptor cd_S7685C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7685C4, buf);
    S7685C4 *dp, &lv = *(dp=new (buf) S7685C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7685C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7685C4)");
    check_base_class_offset(lv, (S7685C6*)(S7685C5*), ABISELECT(48,24), "S7685C4");
    check_base_class_offset(lv, (S7685C3_nt*)(S7685C5*), ABISELECT(24,12), "S7685C4");
    check_base_class_offset(lv, (S7685C5*), ABISELECT(24,12), "S7685C4");
    check_field_offset(lv, s7685c4f0, ABISELECT(8,4), "S7685C4.s7685c4f0");
    test_class_info(&lv, &cd_S7685C4);
    dp->~S7685C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7685C4(Test_S7685C4, "S7685C4", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7685C4C1Ev();
extern void _ZN7S7685C4D1Ev();
Name_Map name_map_S7685C4[] = {
  NSPAIR(_ZN7S7685C4C1Ev),
  NSPAIR(_ZN7S7685C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7685C6;
extern VTBL_ENTRY _ZTI7S7685C6[];
extern  VTBL_ENTRY _ZTV7S7685C6[];
extern Class_Descriptor cd_S7685C3_nt;
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
extern Class_Descriptor cd_S7685C5;
extern VTBL_ENTRY _ZTI7S7685C5[];
extern  VTBL_ENTRY _ZTV7S7685C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C5[];
static Base_Class bases_S7685C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7685C6,    ABISELECT(48,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7685C3_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7685C5,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7685C4[];
extern void _ZN7S7685C43v19Ev();
extern void _ZN7S7685C43v20Ev();
extern void _ZN7S7685C43v21Ev();
extern void _ZN7S7685C43v22Ev();
extern void _ZN7S7685C43v23Ev();
extern void _ZN7S7685C43v24Ev();
extern void _ZN7S7685C4D1Ev();
extern void _ZN7S7685C4D0Ev();
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S7685C4D1Ev,_ZThn12_N7S7685C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S7685C4D0Ev,_ZThn12_N7S7685C4D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev)();
extern void ABISELECT(_ZThn48_N7S7685C4D1Ev,_ZThn24_N7S7685C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev)();
extern void ABISELECT(_ZThn48_N7S7685C4D0Ev,_ZThn24_N7S7685C4D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY vtc_S7685C4[] = {
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&_ZN7S7685C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7685C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C4D0Ev,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern VTBL_ENTRY _ZTV7S7685C4[];
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void _ZN7S7685C5D1Ev();
extern void _ZN7S7685C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C5__7S7685C4[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C6__7S7685C5__7S7685C4[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
static  VTT_ENTRY vtt_S7685C4[] = {
  {&(_ZTV7S7685C4[4]),  4,45},
  {&(_ZTV7S7685C4[21]),  21,45},
  {&(_ZTV7S7685C4[37]),  37,45},
  {&(_tg__ZTV7S7685C5__7S7685C4[3]),  3,10},
  {&(_tg__ZTV7S7685C6__7S7685C5__7S7685C4[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7685C4[];
extern  VTBL_ENTRY _ZTV7S7685C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C4[];
static VTBL_ENTRY alt_thunk_names105[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7685C4D0Ev,_ZThn24_N7S7685C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7685C4D1Ev,_ZThn24_N7S7685C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C4D0Ev,_ZThn12_N7S7685C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C4D1Ev,_ZThn12_N7S7685C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7685C4 = {  "S7685C4", // class name
  bases_S7685C4, 3,
  &(vtc_S7685C4[0]), // expected_vtbl_contents
  &(vtt_S7685C4[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7685C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7685C4),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7685C4),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names105,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7685C2  : virtual S7685C3_nt , S7685C4 {
  virtual  ~S7685C2(); // _ZN7S7685C2D2Ev
  virtual void  v25(); // _ZN7S7685C23v25Ev
  S7685C2(); // tgen
};
//SIG(-1 S7685C2) C1{ VBC2{ v2 v3 v4 v5 v6 Fl} BC3{ VBC4{ VBC5{ vd v7 v8 v9 v10 v11 v12 Fs} BC2 vd Fc} v13 v14 v15 v16 v17 v18 FC5} vd v1}


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

static void Test_S7685C2()
{
  extern Class_Descriptor cd_S7685C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7685C2, buf);
    S7685C2 *dp, &lv = *(dp=new (buf) S7685C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7685C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7685C2)");
    /*is_ambiguous_... S7685C2::S7685C3_nt */ AMB_check_base_class_offset(lv, (S7685C3_nt*), ABISELECT(24,12), "S7685C2");
    check_base_class_offset(lv, (S7685C6*)(S7685C5*), ABISELECT(64,32), "S7685C2");
    check_base_class_offset(lv, (S7685C3_nt*)(S7685C5*), ABISELECT(40,20), "S7685C2");
    check_base_class_offset(lv, (S7685C5*)(S7685C4*), ABISELECT(40,20), "S7685C2");
    check_base_class_offset(lv, (S7685C4*), 0, "S7685C2");
    test_class_info(&lv, &cd_S7685C2);
    dp->~S7685C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7685C2(Test_S7685C2, "S7685C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7685C2C1Ev();
extern void _ZN7S7685C2D2Ev();
Name_Map name_map_S7685C2[] = {
  NSPAIR(_ZN7S7685C2C1Ev),
  NSPAIR(_ZN7S7685C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7685C3_nt;
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
extern Class_Descriptor cd_S7685C6;
extern VTBL_ENTRY _ZTI7S7685C6[];
extern  VTBL_ENTRY _ZTV7S7685C6[];
extern Class_Descriptor cd_S7685C3_nt;
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
extern Class_Descriptor cd_S7685C5;
extern VTBL_ENTRY _ZTI7S7685C5[];
extern  VTBL_ENTRY _ZTV7S7685C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C5[];
extern Class_Descriptor cd_S7685C4;
extern VTBL_ENTRY _ZTI7S7685C4[];
extern  VTBL_ENTRY _ZTV7S7685C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C4[];
static Base_Class bases_S7685C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7685C3_nt,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7685C6,    ABISELECT(64,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7685C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7685C5,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7685C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7685C2[];
extern void _ZN7S7685C43v19Ev();
extern void _ZN7S7685C43v20Ev();
extern void _ZN7S7685C43v21Ev();
extern void _ZN7S7685C43v22Ev();
extern void _ZN7S7685C43v23Ev();
extern void _ZN7S7685C43v24Ev();
extern void _ZN7S7685C2D1Ev();
extern void _ZN7S7685C2D0Ev();
extern void _ZN7S7685C23v25Ev();
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void ABISELECT(_ZTv0_n72_N7S7685C2D1Ev,_ZTv0_n36_N7S7685C2D1Ev)();
extern void ABISELECT(_ZThn40_N7S7685C2D1Ev,_ZThn20_N7S7685C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7685C2D0Ev,_ZTv0_n36_N7S7685C2D0Ev)();
extern void ABISELECT(_ZThn40_N7S7685C2D0Ev,_ZThn20_N7S7685C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C2D1Ev,_ZTv0_n12_N7S7685C2D1Ev)();
extern void ABISELECT(_ZThn64_N7S7685C2D1Ev,_ZThn32_N7S7685C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C2D0Ev,_ZTv0_n12_N7S7685C2D0Ev)();
extern void ABISELECT(_ZThn64_N7S7685C2D0Ev,_ZThn32_N7S7685C2D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY vtc_S7685C2[] = {
  ABISELECT(24,12),
  ABISELECT(64,32),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&_ZN7S7685C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7685C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7685C23v25Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C2D1Ev,_ZTv0_n36_N7S7685C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C2D0Ev,_ZTv0_n36_N7S7685C2D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C2D1Ev,_ZTv0_n12_N7S7685C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C2D0Ev,_ZTv0_n12_N7S7685C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern VTBL_ENTRY _ZTV7S7685C2[];
extern void _ZN7S7685C43v19Ev();
extern void _ZN7S7685C43v20Ev();
extern void _ZN7S7685C43v21Ev();
extern void _ZN7S7685C43v22Ev();
extern void _ZN7S7685C43v23Ev();
extern void _ZN7S7685C43v24Ev();
extern void _ZN7S7685C4D1Ev();
extern void _ZN7S7685C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C4__7S7685C2[] = {
  ABISELECT(64,32),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&_ZN7S7685C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7685C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C4D0Ev,
};
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev)();
extern void ABISELECT(_ZThn40_N7S7685C4D1Ev,_ZThn20_N7S7685C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev)();
extern void ABISELECT(_ZThn40_N7S7685C4D0Ev,_ZThn20_N7S7685C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7685C5__7S7685C4__7S7685C2[] = {
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev)();
extern void ABISELECT(_ZThn64_N7S7685C4D1Ev,_ZThn32_N7S7685C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev)();
extern void ABISELECT(_ZThn64_N7S7685C4D0Ev,_ZThn32_N7S7685C4D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C6__7S7685C4__7S7685C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void _ZN7S7685C5D1Ev();
extern void _ZN7S7685C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C5__7S7685C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C6__7S7685C5__7S7685C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
static  VTT_ENTRY vtt_S7685C2[] = {
  {&(_ZTV7S7685C2[5]),  5,59},
  {&(_tg__ZTV7S7685C4__7S7685C2[4]),  4,12},
  {&(_tg__ZTV7S7685C5__7S7685C4__7S7685C2[9]),  9,16},
  {&(_tg__ZTV7S7685C6__7S7685C4__7S7685C2[9]),  9,17},
  {&(_ZTV7S7685C2[21]),  21,59},
  {&(_ZTV7S7685C2[35]),  35,59},
  {&(_ZTV7S7685C2[51]),  51,59},
  {&(_tg__ZTV7S7685C5__7S7685C2[3]),  3,10},
  {&(_tg__ZTV7S7685C6__7S7685C5__7S7685C2[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7685C2[];
extern  VTBL_ENTRY _ZTV7S7685C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C2[];
static VTBL_ENTRY alt_thunk_names106[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7685C4D0Ev,_ZThn32_N7S7685C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7685C4D1Ev,_ZThn32_N7S7685C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7685C4D0Ev,_ZThn20_N7S7685C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7685C4D1Ev,_ZThn20_N7S7685C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C2D0Ev,_ZTv0_n12_N7S7685C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7685C2D0Ev,_ZThn32_N7S7685C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C2D1Ev,_ZTv0_n12_N7S7685C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7685C2D1Ev,_ZThn32_N7S7685C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C2D0Ev,_ZTv0_n36_N7S7685C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7685C2D0Ev,_ZThn20_N7S7685C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C2D1Ev,_ZTv0_n36_N7S7685C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7685C2D1Ev,_ZThn20_N7S7685C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7685C2 = {  "S7685C2", // class name
  bases_S7685C2, 5,
  &(vtc_S7685C2[0]), // expected_vtbl_contents
  &(vtt_S7685C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7685C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7685C2),59, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7685C2),9, //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  S7685C8  {
  int s7685c8f0;
  virtual void  v26(); // _ZN7S7685C83v26Ev
  virtual void  v27(); // _ZN7S7685C83v27Ev
  virtual void  v28(); // _ZN7S7685C83v28Ev
  virtual void  v29(); // _ZN7S7685C83v29Ev
  virtual void  v30(); // _ZN7S7685C83v30Ev
  ~S7685C8(); // tgen
  S7685C8(); // tgen
};
//SIG(-1 S7685C8) C1{ v1 v2 v3 v4 v5 Fi}


void  S7685C8 ::v26(){vfunc_called(this, "_ZN7S7685C83v26Ev");}
void  S7685C8 ::v27(){vfunc_called(this, "_ZN7S7685C83v27Ev");}
void  S7685C8 ::v28(){vfunc_called(this, "_ZN7S7685C83v28Ev");}
void  S7685C8 ::v29(){vfunc_called(this, "_ZN7S7685C83v29Ev");}
void  S7685C8 ::v30(){vfunc_called(this, "_ZN7S7685C83v30Ev");}
S7685C8 ::~S7685C8(){ note_dtor("S7685C8", this);} // tgen
S7685C8 ::S7685C8(){ note_ctor("S7685C8", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7685C8C1Ev();
extern void _ZN7S7685C8D1Ev();
Name_Map name_map_S7685C8[] = {
  NSPAIR(_ZN7S7685C8C1Ev),
  NSPAIR(_ZN7S7685C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7685C8[];
extern void _ZN7S7685C83v26Ev();
extern void _ZN7S7685C83v27Ev();
extern void _ZN7S7685C83v28Ev();
extern void _ZN7S7685C83v29Ev();
extern void _ZN7S7685C83v30Ev();
static  VTBL_ENTRY vtc_S7685C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C8[0]),
  (VTBL_ENTRY)&_ZN7S7685C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v30Ev,
};
extern VTBL_ENTRY _ZTI7S7685C8[];
extern  VTBL_ENTRY _ZTV7S7685C8[];
Class_Descriptor cd_S7685C8 = {  "S7685C8", // class name
  0,0,//no base classes
  &(vtc_S7685C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7685C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7685C8),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  S7685C7  : S7685C8 {
  ::S19101C9 s7685c7f0;
  virtual  ~S7685C7(); // _ZN7S7685C7D1Ev
  virtual void  v31(); // _ZN7S7685C73v31Ev
  virtual void  v32(); // _ZN7S7685C73v32Ev
  S7685C7(); // tgen
};
//SIG(-1 S7685C7) C1{ BC2{ v3 v4 v5 v6 v7 Fi} vd v1 v2 FC3{ BC4{ v11 v12 v13 v14 v15 Fi} vd v8 v9 v10 FC5{}}}


 S7685C7 ::~S7685C7(){ note_dtor("S7685C7", this);}
void  S7685C7 ::v31(){vfunc_called(this, "_ZN7S7685C73v31Ev");}
void  S7685C7 ::v32(){vfunc_called(this, "_ZN7S7685C73v32Ev");}
S7685C7 ::S7685C7(){ note_ctor("S7685C7", this);} // tgen

static void Test_S7685C7()
{
  extern Class_Descriptor cd_S7685C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7685C7, buf);
    S7685C7 *dp, &lv = *(dp=new (buf) S7685C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7685C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7685C7)");
    check_base_class_offset(lv, (S7685C8*), 0, "S7685C7");
    check_field_offset(lv, s7685c7f0, ABISELECT(16,8), "S7685C7.s7685c7f0");
    test_class_info(&lv, &cd_S7685C7);
    dp->~S7685C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7685C7(Test_S7685C7, "S7685C7", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7685C7C1Ev();
extern void _ZN7S7685C7D1Ev();
Name_Map name_map_S7685C7[] = {
  NSPAIR(_ZN7S7685C7C1Ev),
  NSPAIR(_ZN7S7685C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7685C8;
extern VTBL_ENTRY _ZTI7S7685C8[];
extern  VTBL_ENTRY _ZTV7S7685C8[];
static Base_Class bases_S7685C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7685C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7685C7[];
extern void _ZN7S7685C83v26Ev();
extern void _ZN7S7685C83v27Ev();
extern void _ZN7S7685C83v28Ev();
extern void _ZN7S7685C83v29Ev();
extern void _ZN7S7685C83v30Ev();
extern void _ZN7S7685C7D1Ev();
extern void _ZN7S7685C7D0Ev();
extern void _ZN7S7685C73v31Ev();
extern void _ZN7S7685C73v32Ev();
static  VTBL_ENTRY vtc_S7685C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C7[0]),
  (VTBL_ENTRY)&_ZN7S7685C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v30Ev,
  (VTBL_ENTRY)&_ZN7S7685C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7685C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7685C73v32Ev,
};
extern VTBL_ENTRY _ZTI7S7685C7[];
extern  VTBL_ENTRY _ZTV7S7685C7[];
Class_Descriptor cd_S7685C7 = {  "S7685C7", // class name
  bases_S7685C7, 1,
  &(vtc_S7685C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7685C7),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7685C7),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  S7685C1  : S7685C2 , S7685C7 {
  virtual  ~S7685C1(); // _ZN7S7685C1D2Ev
  virtual void  v1(); // _ZN7S7685C12v1Ev
  virtual void  v2(); // _ZN7S7685C12v2Ev
  virtual void  v3(); // _ZN7S7685C12v3Ev
  virtual void  v4(); // _ZN7S7685C12v4Ev
  virtual void  v5(); // _ZN7S7685C12v5Ev
  virtual void  v6(); // _ZN7S7685C12v6Ev
  virtual void  v7(); // _ZN7S7685C12v7Ev
  S7685C1(); // tgen
};
//SIG(1 S7685C1) C1{ BC2{ VBC3{ v8 v9 v10 v11 v12 Fl} BC4{ VBC5{ VBC6{ vd v13 v14 v15 v16 v17 v18 Fs} BC3 vd Fc} v19 v20 v21 v22 v23 v24 FC6} vd v25} BC7{ BC8{ v26 v27 v28 v29 v30 Fi} vd v31 v32 FC9{ BC10{ v36 v37 v38 v39 v40 Fi} vd v33 v34 v35 FC11{}}} vd v1 v2 v3 v4 v5 v6 v7}


 S7685C1 ::~S7685C1(){ note_dtor("S7685C1", this);}
void  S7685C1 ::v1(){vfunc_called(this, "_ZN7S7685C12v1Ev");}
void  S7685C1 ::v2(){vfunc_called(this, "_ZN7S7685C12v2Ev");}
void  S7685C1 ::v3(){vfunc_called(this, "_ZN7S7685C12v3Ev");}
void  S7685C1 ::v4(){vfunc_called(this, "_ZN7S7685C12v4Ev");}
void  S7685C1 ::v5(){vfunc_called(this, "_ZN7S7685C12v5Ev");}
void  S7685C1 ::v6(){vfunc_called(this, "_ZN7S7685C12v6Ev");}
void  S7685C1 ::v7(){vfunc_called(this, "_ZN7S7685C12v7Ev");}
S7685C1 ::S7685C1(){ note_ctor("S7685C1", this);} // tgen

static void Test_S7685C1()
{
  extern Class_Descriptor cd_S7685C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,16)];
    init_test(&cd_S7685C1, buf);
    S7685C1 *dp, &lv = *(dp=new (buf) S7685C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,60), "sizeof(S7685C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7685C1)");
    /*is_ambiguous_... S7685C2::S7685C3_nt */ AMB_check_base_class_offset(lv, (S7685C3_nt*)(S7685C2*), ABISELECT(56,32), "S7685C1");
    check_base_class_offset(lv, (S7685C6*)(S7685C5*), ABISELECT(96,52), "S7685C1");
    check_base_class_offset(lv, (S7685C3_nt*)(S7685C5*), ABISELECT(72,40), "S7685C1");
    check_base_class_offset(lv, (S7685C5*)(S7685C4*)(S7685C2*), ABISELECT(72,40), "S7685C1");
    check_base_class_offset(lv, (S7685C4*)(S7685C2*), 0, "S7685C1");
    check_base_class_offset(lv, (S7685C2*), 0, "S7685C1");
    check_base_class_offset(lv, (S7685C8*)(S7685C7*), ABISELECT(24,12), "S7685C1");
    check_base_class_offset(lv, (S7685C7*), ABISELECT(24,12), "S7685C1");
    test_class_info(&lv, &cd_S7685C1);
    dp->~S7685C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7685C1(Test_S7685C1, "S7685C1", ABISELECT(112,60));

#else // __cplusplus

extern void _ZN7S7685C1C1Ev();
extern void _ZN7S7685C1D2Ev();
Name_Map name_map_S7685C1[] = {
  NSPAIR(_ZN7S7685C1C1Ev),
  NSPAIR(_ZN7S7685C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7685C3_nt;
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
extern Class_Descriptor cd_S7685C6;
extern VTBL_ENTRY _ZTI7S7685C6[];
extern  VTBL_ENTRY _ZTV7S7685C6[];
extern Class_Descriptor cd_S7685C3_nt;
extern VTBL_ENTRY _ZTI10S7685C3_nt[];
extern  VTBL_ENTRY _ZTV10S7685C3_nt[];
extern Class_Descriptor cd_S7685C5;
extern VTBL_ENTRY _ZTI7S7685C5[];
extern  VTBL_ENTRY _ZTV7S7685C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C5[];
extern Class_Descriptor cd_S7685C4;
extern VTBL_ENTRY _ZTI7S7685C4[];
extern  VTBL_ENTRY _ZTV7S7685C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C4[];
extern Class_Descriptor cd_S7685C2;
extern VTBL_ENTRY _ZTI7S7685C2[];
extern  VTBL_ENTRY _ZTV7S7685C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C2[];
extern Class_Descriptor cd_S7685C8;
extern VTBL_ENTRY _ZTI7S7685C8[];
extern  VTBL_ENTRY _ZTV7S7685C8[];
extern Class_Descriptor cd_S7685C7;
extern VTBL_ENTRY _ZTI7S7685C7[];
extern  VTBL_ENTRY _ZTV7S7685C7[];
static Base_Class bases_S7685C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7685C3_nt,    ABISELECT(56,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7685C6,    ABISELECT(96,52), //bcp->offset
    60, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7685C3_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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7685C5,    ABISELECT(72,40), //bcp->offset
    44, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7685C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7685C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7685C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S7685C7,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7685C1[];
extern void _ZN7S7685C43v19Ev();
extern void _ZN7S7685C43v20Ev();
extern void _ZN7S7685C43v21Ev();
extern void _ZN7S7685C43v22Ev();
extern void _ZN7S7685C43v23Ev();
extern void _ZN7S7685C43v24Ev();
extern void _ZN7S7685C1D1Ev();
extern void _ZN7S7685C1D0Ev();
extern void _ZN7S7685C23v25Ev();
extern void _ZN7S7685C12v1Ev();
extern void _ZN7S7685C12v2Ev();
extern void _ZN7S7685C12v3Ev();
extern void _ZN7S7685C12v4Ev();
extern void _ZN7S7685C12v5Ev();
extern void _ZN7S7685C12v6Ev();
extern void _ZN7S7685C12v7Ev();
extern void _ZN7S7685C83v26Ev();
extern void _ZN7S7685C83v27Ev();
extern void _ZN7S7685C83v28Ev();
extern void _ZN7S7685C83v29Ev();
extern void _ZN7S7685C83v30Ev();
extern void ABISELECT(_ZThn24_N7S7685C1D1Ev,_ZThn12_N7S7685C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7685C1D0Ev,_ZThn12_N7S7685C1D0Ev)();
extern void _ZN7S7685C73v31Ev();
extern void _ZN7S7685C73v32Ev();
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void ABISELECT(_ZTv0_n72_N7S7685C1D1Ev,_ZTv0_n36_N7S7685C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7685C1D1Ev,_ZThn40_N7S7685C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7685C1D0Ev,_ZTv0_n36_N7S7685C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S7685C1D0Ev,_ZThn40_N7S7685C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C1D1Ev,_ZTv0_n12_N7S7685C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7685C1D1Ev,_ZThn52_N7S7685C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C1D0Ev,_ZTv0_n12_N7S7685C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7685C1D0Ev,_ZThn52_N7S7685C1D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY vtc_S7685C1[] = {
  ABISELECT(56,32),
  ABISELECT(96,52),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C1[0]),
  (VTBL_ENTRY)&_ZN7S7685C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7685C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7685C23v25Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7685C12v7Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C1[0]),
  (VTBL_ENTRY)&_ZN7S7685C83v26Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v27Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v28Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v29Ev,
  (VTBL_ENTRY)&_ZN7S7685C83v30Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7685C1D1Ev,_ZThn12_N7S7685C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N7S7685C1D0Ev,_ZThn12_N7S7685C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C73v31Ev,
  (VTBL_ENTRY)&_ZN7S7685C73v32Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7685C1[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  ABISELECT(-72,-40),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7685C1[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C1D1Ev,_ZTv0_n36_N7S7685C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C1D0Ev,_ZTv0_n36_N7S7685C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7685C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C1D1Ev,_ZTv0_n12_N7S7685C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C1D0Ev,_ZTv0_n12_N7S7685C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern VTBL_ENTRY _ZTV7S7685C1[];
extern void _ZN7S7685C43v19Ev();
extern void _ZN7S7685C43v20Ev();
extern void _ZN7S7685C43v21Ev();
extern void _ZN7S7685C43v22Ev();
extern void _ZN7S7685C43v23Ev();
extern void _ZN7S7685C43v24Ev();
extern void _ZN7S7685C2D1Ev();
extern void _ZN7S7685C2D0Ev();
extern void _ZN7S7685C23v25Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C2__7S7685C1[] = {
  ABISELECT(56,32),
  ABISELECT(96,52),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&_ZN7S7685C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7685C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7685C23v25Ev,
};
extern void _ZN7S7685C43v19Ev();
extern void _ZN7S7685C43v20Ev();
extern void _ZN7S7685C43v21Ev();
extern void _ZN7S7685C43v22Ev();
extern void _ZN7S7685C43v23Ev();
extern void _ZN7S7685C43v24Ev();
extern void _ZN7S7685C4D1Ev();
extern void _ZN7S7685C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C47S7685C2__7S7685C1[] = {
  ABISELECT(96,52),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&_ZN7S7685C43v19Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v20Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v21Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v22Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v23Ev,
  (VTBL_ENTRY)&_ZN7S7685C43v24Ev,
  (VTBL_ENTRY)&_ZN7S7685C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C4D0Ev,
};
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev)();
extern void ABISELECT(_ZThn72_N7S7685C4D1Ev,_ZThn40_N7S7685C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev)();
extern void ABISELECT(_ZThn72_N7S7685C4D0Ev,_ZThn40_N7S7685C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7685C5__7S7685C47S7685C2__7S7685C1[] = {
  ABISELECT(-72,-40),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev)();
extern void ABISELECT(_ZThn96_N7S7685C4D1Ev,_ZThn52_N7S7685C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev)();
extern void ABISELECT(_ZThn96_N7S7685C4D0Ev,_ZThn52_N7S7685C4D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C6__7S7685C47S7685C2__7S7685C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7685C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
static  VTBL_ENTRY _tg__ZTV10S7685C3_nt__7S7685C2__7S7685C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
};
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void ABISELECT(_ZTv0_n72_N7S7685C2D1Ev,_ZTv0_n36_N7S7685C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7685C2D1Ev,_ZThn40_N7S7685C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7685C2D0Ev,_ZTv0_n36_N7S7685C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7685C2D0Ev,_ZThn40_N7S7685C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7685C5__7S7685C2__7S7685C1[] = {
  ABISELECT(-72,-40),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C2D1Ev,_ZTv0_n36_N7S7685C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7685C2D0Ev,_ZTv0_n36_N7S7685C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7685C2D1Ev,_ZTv0_n12_N7S7685C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7685C2D1Ev,_ZThn52_N7S7685C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C2D0Ev,_ZTv0_n12_N7S7685C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7685C2D0Ev,_ZThn52_N7S7685C2D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C6__7S7685C2__7S7685C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI7S7685C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C2D1Ev,_ZTv0_n12_N7S7685C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C2D0Ev,_ZTv0_n12_N7S7685C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
extern void _ZN10S7685C3_nt2v8Ev();
extern void _ZN10S7685C3_nt2v9Ev();
extern void _ZN10S7685C3_nt3v10Ev();
extern void _ZN10S7685C3_nt3v11Ev();
extern void _ZN10S7685C3_nt3v12Ev();
extern void _ZN7S7685C5D1Ev();
extern void _ZN7S7685C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C5__7S7685C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt2v9Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v10Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v11Ev,
  (VTBL_ENTRY)&_ZN10S7685C3_nt3v12Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7685C5D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev)() __attribute__((weak));
extern void _ZN7S7685C63v13Ev();
extern void _ZN7S7685C63v14Ev();
extern void _ZN7S7685C63v15Ev();
extern void _ZN7S7685C63v16Ev();
extern void _ZN7S7685C63v17Ev();
extern void _ZN7S7685C63v18Ev();
static  VTBL_ENTRY _tg__ZTV7S7685C6__7S7685C5__7S7685C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7685C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7685C63v13Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v14Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v15Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v16Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v17Ev,
  (VTBL_ENTRY)&_ZN7S7685C63v18Ev,
};
static  VTT_ENTRY vtt_S7685C1[] = {
  {&(_ZTV7S7685C1[5]),  5,77},
  {&(_tg__ZTV7S7685C2__7S7685C1[5]),  5,14},
  {&(_tg__ZTV7S7685C47S7685C2__7S7685C1[4]),  4,12},
  {&(_tg__ZTV7S7685C5__7S7685C47S7685C2__7S7685C1[9]),  9,16},
  {&(_tg__ZTV7S7685C6__7S7685C47S7685C2__7S7685C1[9]),  9,17},
  {&(_tg__ZTV10S7685C3_nt__7S7685C2__7S7685C1[7]),  7,12},
  {&(_tg__ZTV7S7685C5__7S7685C2__7S7685C1[9]),  9,16},
  {&(_tg__ZTV7S7685C6__7S7685C2__7S7685C1[9]),  9,17},
  {&(_ZTV7S7685C1[39]),  39,77},
  {&(_ZTV7S7685C1[53]),  53,77},
  {&(_ZTV7S7685C1[69]),  69,77},
  {&(_tg__ZTV7S7685C5__7S7685C1[3]),  3,10},
  {&(_tg__ZTV7S7685C6__7S7685C5__7S7685C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7685C1[];
extern  VTBL_ENTRY _ZTV7S7685C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7685C1[];
static VTBL_ENTRY alt_thunk_names107[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D0Ev,_ZTv0_n12_N7S7685C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D0Ev,_ZThn12_N7S7685C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C5D1Ev,_ZTv0_n12_N7S7685C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7685C5D1Ev,_ZThn12_N7S7685C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C2D0Ev,_ZTv0_n12_N7S7685C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7685C2D0Ev,_ZThn52_N7S7685C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C2D1Ev,_ZTv0_n12_N7S7685C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7685C2D1Ev,_ZThn52_N7S7685C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C2D0Ev,_ZTv0_n36_N7S7685C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7685C2D0Ev,_ZThn40_N7S7685C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C2D1Ev,_ZTv0_n36_N7S7685C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7685C2D1Ev,_ZThn40_N7S7685C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C4D0Ev,_ZTv0_n12_N7S7685C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7685C4D0Ev,_ZThn52_N7S7685C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C4D1Ev,_ZTv0_n12_N7S7685C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7685C4D1Ev,_ZThn52_N7S7685C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C4D0Ev,_ZTv0_n36_N7S7685C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7685C4D0Ev,_ZThn40_N7S7685C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C4D1Ev,_ZTv0_n36_N7S7685C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7685C4D1Ev,_ZThn40_N7S7685C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C1D0Ev,_ZTv0_n12_N7S7685C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7685C1D0Ev,_ZThn52_N7S7685C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7685C1D1Ev,_ZTv0_n12_N7S7685C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7685C1D1Ev,_ZThn52_N7S7685C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C1D0Ev,_ZTv0_n36_N7S7685C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7685C1D0Ev,_ZThn40_N7S7685C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7685C1D1Ev,_ZTv0_n36_N7S7685C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7685C1D1Ev,_ZThn40_N7S7685C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7685C1 = {  "S7685C1", // class name
  bases_S7685C1, 8,
  &(vtc_S7685C1[0]), // expected_vtbl_contents
  &(vtt_S7685C1[0]), // expected_vtt_contents
  ABISELECT(112,60), // object size
  NSPAIRA(_ZTI7S7685C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7685C1),77, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7685C1),13, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names107,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7364C6  {
  virtual void  v2(); // _ZN7S7364C62v2Ev
  ~S7364C6(); // tgen
  S7364C6(); // tgen
};
//SIG(-1 S7364C6) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7364C6C1Ev();
extern void _ZN7S7364C6D1Ev();
Name_Map name_map_S7364C6[] = {
  NSPAIR(_ZN7S7364C6C1Ev),
  NSPAIR(_ZN7S7364C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7364C6[];
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY vtc_S7364C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C6[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
Class_Descriptor cd_S7364C6 = {  "S7364C6", // class name
  0,0,//no base classes
  &(vtc_S7364C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7364C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7364C6),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  S7364C7  : virtual S7364C6 {
  virtual void  v3(); // _ZN7S7364C72v3Ev
  ~S7364C7(); // tgen
  S7364C7(); // tgen
};
//SIG(-1 S7364C7) C1{ VBC2{ v2} v1}


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

static void Test_S7364C7()
{
  extern Class_Descriptor cd_S7364C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7364C7, buf);
    S7364C7 *dp, &lv = *(dp=new (buf) S7364C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7364C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C7)");
    check_base_class_offset(lv, (S7364C6*), 0, "S7364C7");
    test_class_info(&lv, &cd_S7364C7);
    dp->~S7364C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C7(Test_S7364C7, "S7364C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7364C7C1Ev();
extern void _ZN7S7364C7D1Ev();
Name_Map name_map_S7364C7[] = {
  NSPAIR(_ZN7S7364C7C1Ev),
  NSPAIR(_ZN7S7364C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7364C6;
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
static Base_Class bases_S7364C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7364C6,    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 _ZTI7S7364C7[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY vtc_S7364C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern VTBL_ENTRY _ZTV7S7364C7[];
static  VTT_ENTRY vtt_S7364C7[] = {
  {&(_ZTV7S7364C7[4]),  4,6},
  {&(_ZTV7S7364C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
Class_Descriptor cd_S7364C7 = {  "S7364C7", // class name
  bases_S7364C7, 1,
  &(vtc_S7364C7[0]), // expected_vtbl_contents
  &(vtt_S7364C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7364C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7364C7),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7364C7),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  S7364C5  : virtual S7364C6 , S7364C7 {
  int s7364c5f0;
  virtual  ~S7364C5(); // _ZN7S7364C5D2Ev
  virtual void  v4(); // _ZN7S7364C52v4Ev
  virtual void  v5(); // _ZN7S7364C52v5Ev
  S7364C5(); // tgen
};
//SIG(-1 S7364C5) C1{ VBC2{ v3} BC3{ VBC2 v4} vd v1 v2 Fi}


 S7364C5 ::~S7364C5(){ note_dtor("S7364C5", this);}
void  S7364C5 ::v4(){vfunc_called(this, "_ZN7S7364C52v4Ev");}
void  S7364C5 ::v5(){vfunc_called(this, "_ZN7S7364C52v5Ev");}
S7364C5 ::S7364C5(){ note_ctor("S7364C5", this);} // tgen

static void Test_S7364C5()
{
  extern Class_Descriptor cd_S7364C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7364C5, buf);
    S7364C5 *dp, &lv = *(dp=new (buf) S7364C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7364C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C5)");
    check_base_class_offset(lv, (S7364C6*), 0, "S7364C5");
    check_base_class_offset(lv, (S7364C6*)(S7364C7*), 0, "S7364C5");
    check_base_class_offset(lv, (S7364C7*), 0, "S7364C5");
    check_field_offset(lv, s7364c5f0, ABISELECT(8,4), "S7364C5.s7364c5f0");
    test_class_info(&lv, &cd_S7364C5);
    dp->~S7364C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C5(Test_S7364C5, "S7364C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7364C5C1Ev();
extern void _ZN7S7364C5D2Ev();
Name_Map name_map_S7364C5[] = {
  NSPAIR(_ZN7S7364C5C1Ev),
  NSPAIR(_ZN7S7364C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7364C6;
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
static Base_Class bases_S7364C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7364C6,    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
  1, 1},
  {&cd_S7364C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7364C5[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY vtc_S7364C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7364C5[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C7__7S7364C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
static  VTT_ENTRY vtt_S7364C5[] = {
  {&(_ZTV7S7364C5[4]),  4,10},
  {&(_tg__ZTV7S7364C7__7S7364C5[4]),  4,6},
  {&(_tg__ZTV7S7364C7__7S7364C5[4]),  4,6},
  {&(_ZTV7S7364C5[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
Class_Descriptor cd_S7364C5 = {  "S7364C5", // class name
  bases_S7364C5, 2,
  &(vtc_S7364C5[0]), // expected_vtbl_contents
  &(vtt_S7364C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7364C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7364C5),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7364C5),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  S7364C8  {
  char s7364c8f0;
  void *s7364c8f1;
  int s7364c8f2;
  __tsi64 s7364c8f3:8;
  virtual void  v23(); // _ZN7S7364C83v23Ev
  virtual void  v24(); // _ZN7S7364C83v24Ev
  virtual void  v25(); // _ZN7S7364C83v25Ev
  virtual void  v26(); // _ZN7S7364C83v26Ev
  ~S7364C8(); // tgen
  S7364C8(); // tgen
};
//SIG(-1 S7364C8) C1{ v1 v2 v3 v4 Fc Fp Fi FL:8}


void  S7364C8 ::v23(){vfunc_called(this, "_ZN7S7364C83v23Ev");}
void  S7364C8 ::v24(){vfunc_called(this, "_ZN7S7364C83v24Ev");}
void  S7364C8 ::v25(){vfunc_called(this, "_ZN7S7364C83v25Ev");}
void  S7364C8 ::v26(){vfunc_called(this, "_ZN7S7364C83v26Ev");}
S7364C8 ::~S7364C8(){ note_dtor("S7364C8", this);} // tgen
S7364C8 ::S7364C8(){ note_ctor("S7364C8", this);} // tgen

static void Test_S7364C8()
{
  extern Class_Descriptor cd_S7364C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S7364C8, buf);
    S7364C8 *dp, &lv = *(dp=new (buf) S7364C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S7364C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C8)");
    check_field_offset(lv, s7364c8f0, ABISELECT(8,4), "S7364C8.s7364c8f0");
    check_field_offset(lv, s7364c8f1, ABISELECT(16,8), "S7364C8.s7364c8f1");
    check_field_offset(lv, s7364c8f2, ABISELECT(24,12), "S7364C8.s7364c8f2");
    set_bf_and_test(lv, s7364c8f3, ABISELECT(28,16), 0, 8, 1, "S7364C8");
    set_bf_and_test(lv, s7364c8f3, ABISELECT(28,16), 0, 8, hide_sll(1LL<<7), "S7364C8");
    test_class_info(&lv, &cd_S7364C8);
    dp->~S7364C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C8(Test_S7364C8, "S7364C8", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S7364C8C1Ev();
extern void _ZN7S7364C8D1Ev();
Name_Map name_map_S7364C8[] = {
  NSPAIR(_ZN7S7364C8C1Ev),
  NSPAIR(_ZN7S7364C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7364C8[];
extern void _ZN7S7364C83v23Ev();
extern void _ZN7S7364C83v24Ev();
extern void _ZN7S7364C83v25Ev();
extern void _ZN7S7364C83v26Ev();
static  VTBL_ENTRY vtc_S7364C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C8[0]),
  (VTBL_ENTRY)&_ZN7S7364C83v23Ev,
  (VTBL_ENTRY)&_ZN7S7364C83v24Ev,
  (VTBL_ENTRY)&_ZN7S7364C83v25Ev,
  (VTBL_ENTRY)&_ZN7S7364C83v26Ev,
};
extern VTBL_ENTRY _ZTI7S7364C8[];
extern  VTBL_ENTRY _ZTV7S7364C8[];
Class_Descriptor cd_S7364C8 = {  "S7364C8", // class name
  0,0,//no base classes
  &(vtc_S7364C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S7364C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7364C8),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  S7364C4  : virtual S7364C5 {
  int s7364c4f0;
  short s7364c4f1;
  void *s7364c4f2;
  ::S7364C8 s7364c4f3;
  virtual  ~S7364C4(); // _ZN7S7364C4D2Ev
  virtual void  v6(); // _ZN7S7364C42v6Ev
  virtual void  v7(); // _ZN7S7364C42v7Ev
  virtual void  v8(); // _ZN7S7364C42v8Ev
  virtual void  v9(); // _ZN7S7364C42v9Ev
  virtual void  v10(); // _ZN7S7364C43v10Ev
  virtual void  v11(); // _ZN7S7364C43v11Ev
  S7364C4(); // tgen
};
//SIG(-1 S7364C4) C1{ VBC2{ VBC3{ v7} BC4{ VBC3 v8} vd v9 v10 Fi} vd v1 v2 v3 v4 v5 v6 Fi Fs Fp FC5{ v11 v12 v13 v14 Fc Fp Fi FL:8}}


 S7364C4 ::~S7364C4(){ note_dtor("S7364C4", this);}
void  S7364C4 ::v6(){vfunc_called(this, "_ZN7S7364C42v6Ev");}
void  S7364C4 ::v7(){vfunc_called(this, "_ZN7S7364C42v7Ev");}
void  S7364C4 ::v8(){vfunc_called(this, "_ZN7S7364C42v8Ev");}
void  S7364C4 ::v9(){vfunc_called(this, "_ZN7S7364C42v9Ev");}
void  S7364C4 ::v10(){vfunc_called(this, "_ZN7S7364C43v10Ev");}
void  S7364C4 ::v11(){vfunc_called(this, "_ZN7S7364C43v11Ev");}
S7364C4 ::S7364C4(){ note_ctor("S7364C4", this);} // tgen

static void Test_S7364C4()
{
  extern Class_Descriptor cd_S7364C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S7364C4, buf);
    S7364C4 *dp, &lv = *(dp=new (buf) S7364C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S7364C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C4)");
    check_base_class_offset(lv, (S7364C6*)(S7364C5*), 0, "S7364C4");
    check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*), 0, "S7364C4");
    check_base_class_offset(lv, (S7364C7*)(S7364C5*), ABISELECT(56,36), "S7364C4");
    check_base_class_offset(lv, (S7364C5*), ABISELECT(56,36), "S7364C4");
    check_field_offset(lv, s7364c4f0, ABISELECT(8,4), "S7364C4.s7364c4f0");
    check_field_offset(lv, s7364c4f1, ABISELECT(12,8), "S7364C4.s7364c4f1");
    check_field_offset(lv, s7364c4f2, ABISELECT(16,12), "S7364C4.s7364c4f2");
    check_field_offset(lv, s7364c4f3, ABISELECT(24,16), "S7364C4.s7364c4f3");
    test_class_info(&lv, &cd_S7364C4);
    dp->~S7364C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C4(Test_S7364C4, "S7364C4", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S7364C4C1Ev();
extern void _ZN7S7364C4D2Ev();
Name_Map name_map_S7364C4[] = {
  NSPAIR(_ZN7S7364C4C1Ev),
  NSPAIR(_ZN7S7364C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7364C6;
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
static Base_Class bases_S7364C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7364C6,    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_S7364C7,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(56,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7364C4[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C4D1Ev();
extern void _ZN7S7364C4D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7364C4D1Ev,_ZThn36_N7S7364C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7364C4D0Ev,_ZThn36_N7S7364C4D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY vtc_S7364C4[] = {
  0,
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  0,
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7364C4[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C4[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C5__7S7364C4[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C4[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C5__7S7364C4[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
static  VTT_ENTRY vtt_S7364C4[] = {
  {&(_ZTV7S7364C4[5]),  5,28},
  {&(_ZTV7S7364C4[22]),  22,28},
  {&(_ZTV7S7364C4[5]),  5,28},
  {&(_tg__ZTV7S7364C5__7S7364C4[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C5__7S7364C4[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C4[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C5__7S7364C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7364C4[];
extern  VTBL_ENTRY _ZTV7S7364C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C4[];
static VTBL_ENTRY alt_thunk_names108[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7364C4D0Ev,_ZThn36_N7S7364C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7364C4D1Ev,_ZThn36_N7S7364C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7364C4 = {  "S7364C4", // class name
  bases_S7364C4, 3,
  &(vtc_S7364C4[0]), // expected_vtbl_contents
  &(vtt_S7364C4[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S7364C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7364C4),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7364C4),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names108,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7364C3  : S7364C4 , S7364C5 {
  void *s7364c3f0;
  virtual  ~S7364C3(); // _ZN7S7364C3D2Ev
  virtual void  v12(); // _ZN7S7364C33v12Ev
  virtual void  v13(); // _ZN7S7364C33v13Ev
  virtual void  v14(); // _ZN7S7364C33v14Ev
  virtual void  v15(); // _ZN7S7364C33v15Ev
  virtual void  v16(); // _ZN7S7364C33v16Ev
  virtual void  v17(); // _ZN7S7364C33v17Ev
  S7364C3(); // tgen
};
//SIG(-1 S7364C3) C1{ BC2{ VBC3{ VBC4{ v7} BC5{ VBC4 v8} vd v9 v10 Fi} vd v11 v12 v13 v14 v15 v16 Fi Fs Fp FC6{ v17 v18 v19 v20 Fc Fp Fi FL:8}} BC3 vd v1 v2 v3 v4 v5 v6 Fp}


 S7364C3 ::~S7364C3(){ note_dtor("S7364C3", this);}
void  S7364C3 ::v12(){vfunc_called(this, "_ZN7S7364C33v12Ev");}
void  S7364C3 ::v13(){vfunc_called(this, "_ZN7S7364C33v13Ev");}
void  S7364C3 ::v14(){vfunc_called(this, "_ZN7S7364C33v14Ev");}
void  S7364C3 ::v15(){vfunc_called(this, "_ZN7S7364C33v15Ev");}
void  S7364C3 ::v16(){vfunc_called(this, "_ZN7S7364C33v16Ev");}
void  S7364C3 ::v17(){vfunc_called(this, "_ZN7S7364C33v17Ev");}
S7364C3 ::S7364C3(){ note_ctor("S7364C3", this);} // tgen

static void Test_S7364C3()
{
  extern Class_Descriptor cd_S7364C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S7364C3, buf);
    S7364C3 *dp, &lv = *(dp=new (buf) S7364C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S7364C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C3)");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C5*), 0, "S7364C3");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*), 0, "S7364C3");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C5*), 0, "S7364C3");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*), 0, "S7364C3");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C7*)(S7364C5*), ABISELECT(80,48), "S7364C3");
    check_base_class_offset(lv, (S7364C5*)(S7364C4*), ABISELECT(80,48), "S7364C3");
    check_base_class_offset(lv, (S7364C4*), 0, "S7364C3");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C7*)(S7364C5*), ABISELECT(56,36), "S7364C3");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C5*), ABISELECT(56,36), "S7364C3");
    check_field_offset(lv, s7364c3f0, ABISELECT(72,44), "S7364C3.s7364c3f0");
    test_class_info(&lv, &cd_S7364C3);
    dp->~S7364C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C3(Test_S7364C3, "S7364C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S7364C3C1Ev();
extern void _ZN7S7364C3D2Ev();
Name_Map name_map_S7364C3[] = {
  NSPAIR(_ZN7S7364C3C1Ev),
  NSPAIR(_ZN7S7364C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7364C6;
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
extern Class_Descriptor cd_S7364C4;
extern VTBL_ENTRY _ZTI7S7364C4[];
extern  VTBL_ENTRY _ZTV7S7364C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C4[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
static Base_Class bases_S7364C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7364C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7364C7,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(80,48), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //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
    3, //immediately_derived
  0, 1},
  {&cd_S7364C4,    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_S7364C7,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(56,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7364C3[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C3D1Ev();
extern void _ZN7S7364C3D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C33v12Ev();
extern void _ZN7S7364C33v13Ev();
extern void _ZN7S7364C33v14Ev();
extern void _ZN7S7364C33v15Ev();
extern void _ZN7S7364C33v16Ev();
extern void _ZN7S7364C33v17Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZThn56_N7S7364C3D1Ev,_ZThn36_N7S7364C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7364C3D0Ev,_ZThn36_N7S7364C3D0Ev)();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7364C3D1Ev,_ZThn48_N7S7364C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7364C3D0Ev,_ZThn48_N7S7364C3D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY vtc_S7364C3[] = {
  0,
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v17Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7364C3D1Ev,_ZThn36_N7S7364C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7364C3D0Ev,_ZThn36_N7S7364C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7364C3[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C4D1Ev();
extern void _ZN7S7364C4D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C4__7S7364C3[] = {
  0,
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7364C4D1Ev,_ZThn48_N7S7364C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7364C4D0Ev,_ZThn48_N7S7364C4D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C4__7S7364C3[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__A__7S7364C3[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C5__A1__7S7364C3[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C5__A1__7S7364C3[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C5__A__7S7364C3[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C3[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C5__7S7364C3[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C3[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C5__7S7364C3[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
static  VTT_ENTRY vtt_S7364C3[] = {
  {&(_ZTV7S7364C3[5]),  5,44},
  {&(_tg__ZTV7S7364C4__7S7364C3[5]),  5,14},
  {&(_tg__ZTV7S7364C5__7S7364C4__7S7364C3[8]),  8,14},
  {&(_tg__ZTV7S7364C4__7S7364C3[5]),  5,14},
  {&(_tg__ZTV7S7364C5__A__7S7364C3[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C5__A1__7S7364C3[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C5__A1__7S7364C3[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C5__A__7S7364C3[3]),  3,4},
  {&(_ZTV7S7364C3[38]),  38,44},
  {&(_ZTV7S7364C3[5]),  5,44},
  {&(_ZTV7S7364C3[24]),  24,44},
  {&(_tg__ZTV7S7364C5__7S7364C3[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C5__7S7364C3[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C3[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C5__7S7364C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7364C3[];
extern  VTBL_ENTRY _ZTV7S7364C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C3[];
static VTBL_ENTRY alt_thunk_names109[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C4D0Ev,_ZThn48_N7S7364C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C4D1Ev,_ZThn48_N7S7364C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C3D0Ev,_ZThn48_N7S7364C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C3D1Ev,_ZThn48_N7S7364C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7364C3 = {  "S7364C3", // class name
  bases_S7364C3, 6,
  &(vtc_S7364C3[0]), // expected_vtbl_contents
  &(vtt_S7364C3[0]), // expected_vtt_contents
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S7364C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7364C3),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7364C3),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names109,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7364C2  : virtual S7364C3 {
  char s7364c2f0[9];
  ::S10296C15_nt s7364c2f1;
  virtual void  v18(); // _ZN7S7364C23v18Ev
  virtual void  v19(); // _ZN7S7364C23v19Ev
  virtual void  v20(); // _ZN7S7364C23v20Ev
  virtual void  v21(); // _ZN7S7364C23v21Ev
  virtual void  v22(); // _ZN7S7364C23v22Ev
  ~S7364C2(); // tgen
  S7364C2(); // tgen
};
//SIG(-1 S7364C2) C1{ VBC2{ BC3{ VBC4{ VBC5{ v6} BC6{ VBC5 v7} vd v8 v9 Fi} vd v10 v11 v12 v13 v14 v15 Fi Fs Fp FC7{ v22 v23 v24 v25 Fc Fp Fi FL:8}} BC4 vd v16 v17 v18 v19 v20 v21 Fp} v1 v2 v3 v4 v5 Fc[9] FC8{}}


void  S7364C2 ::v18(){vfunc_called(this, "_ZN7S7364C23v18Ev");}
void  S7364C2 ::v19(){vfunc_called(this, "_ZN7S7364C23v19Ev");}
void  S7364C2 ::v20(){vfunc_called(this, "_ZN7S7364C23v20Ev");}
void  S7364C2 ::v21(){vfunc_called(this, "_ZN7S7364C23v21Ev");}
void  S7364C2 ::v22(){vfunc_called(this, "_ZN7S7364C23v22Ev");}
S7364C2 ::~S7364C2(){ note_dtor("S7364C2", this);} // tgen
S7364C2 ::S7364C2(){ note_ctor("S7364C2", this);} // tgen

static void Test_S7364C2()
{
  extern Class_Descriptor cd_S7364C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S7364C2, buf);
    S7364C2 *dp, &lv = *(dp=new (buf) S7364C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S7364C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C2)");
    /*is_ambiguous_... S7364C2::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C5*), 0, "S7364C2");
    /*is_ambiguous_... S7364C2::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*), 0, "S7364C2");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C5*)(S7364C3*), 0, "S7364C2");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*)(S7364C3*), 0, "S7364C2");
    /*is_ambiguous_... S7364C2::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C7*)(S7364C5*), ABISELECT(104,64), "S7364C2");
    check_base_class_offset(lv, (S7364C5*)(S7364C4*)(S7364C3*), ABISELECT(104,64), "S7364C2");
    check_base_class_offset(lv, (S7364C4*)(S7364C3*), ABISELECT(24,16), "S7364C2");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C7*)(S7364C5*)(S7364C3*), ABISELECT(80,52), "S7364C2");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C5*)(S7364C3*), ABISELECT(80,52), "S7364C2");
    check_base_class_offset(lv, (S7364C3*), ABISELECT(24,16), "S7364C2");
    check_field_offset(lv, s7364c2f0, ABISELECT(8,4), "S7364C2.s7364c2f0");
    check_field_offset(lv, s7364c2f1, ABISELECT(17,13), "S7364C2.s7364c2f1");
    test_class_info(&lv, &cd_S7364C2);
    dp->~S7364C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C2(Test_S7364C2, "S7364C2", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN7S7364C2C1Ev();
extern void _ZN7S7364C2D1Ev();
Name_Map name_map_S7364C2[] = {
  NSPAIR(_ZN7S7364C2C1Ev),
  NSPAIR(_ZN7S7364C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7364C6;
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
extern Class_Descriptor cd_S7364C4;
extern VTBL_ENTRY _ZTI7S7364C4[];
extern  VTBL_ENTRY _ZTV7S7364C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C4[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
extern Class_Descriptor cd_S7364C3;
extern VTBL_ENTRY _ZTI7S7364C3[];
extern  VTBL_ENTRY _ZTV7S7364C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C3[];
static Base_Class bases_S7364C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7364C6,    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_S7364C7,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(104,64), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7364C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7364C7,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(80,52), //bcp->offset
    50, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7364C3,    ABISELECT(24,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7364C2[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C23v18Ev();
extern void _ZN7S7364C23v19Ev();
extern void _ZN7S7364C23v20Ev();
extern void _ZN7S7364C23v21Ev();
extern void _ZN7S7364C23v22Ev();
extern void _ZN7S7364C2D1Ev();
extern void _ZN7S7364C2D0Ev();
extern void _ZN7S7364C62v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7364C2D1Ev,_ZThn16_N7S7364C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7364C2D0Ev,_ZThn16_N7S7364C2D0Ev)() __attribute__((weak));
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C33v12Ev();
extern void _ZN7S7364C33v13Ev();
extern void _ZN7S7364C33v14Ev();
extern void _ZN7S7364C33v15Ev();
extern void _ZN7S7364C33v16Ev();
extern void _ZN7S7364C33v17Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTvn56_n48_N7S7364C2D1Ev,_ZTvn36_n24_N7S7364C2D1Ev)();
extern void ABISELECT(_ZTvn56_n48_N7S7364C2D0Ev,_ZTvn36_n24_N7S7364C2D0Ev)();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S7364C2D1Ev,_ZThn64_N7S7364C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S7364C2D0Ev,_ZThn64_N7S7364C2D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY vtc_S7364C2[] = {
  0,
  ABISELECT(104,64),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7364C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C2D0Ev,
  ABISELECT(56,36),
  ABISELECT(56,36),
  ABISELECT(56,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v17Ev,
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7364C2D1Ev,_ZTvn36_n24_N7S7364C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7364C2D0Ev,_ZTvn36_n24_N7S7364C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
  0,
  0,
  ABISELECT(-104,-64),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7364C2[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C3D1Ev();
extern void _ZN7S7364C3D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C33v12Ev();
extern void _ZN7S7364C33v13Ev();
extern void _ZN7S7364C33v14Ev();
extern void _ZN7S7364C33v15Ev();
extern void _ZN7S7364C33v16Ev();
extern void _ZN7S7364C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C3__7S7364C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v17Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C4D1Ev();
extern void _ZN7S7364C4D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C47S7364C3__7S7364C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7364C4D1Ev,_ZThn48_N7S7364C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7364C4D0Ev,_ZThn48_N7S7364C4D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C47S7364C3__7S7364C2[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C47S7364C3__7S7364C2[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C57S7364C3__A1__7S7364C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C57S7364C3__A1__7S7364C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C57S7364C3__A1__7S7364C2[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C57S7364C3__A1__7S7364C2[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7364C3D1Ev,_ZThn48_N7S7364C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7364C3D0Ev,_ZThn48_N7S7364C3D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C3__7S7364C2[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C3__7S7364C2[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZThn56_N7S7364C3D1Ev,_ZThn36_N7S7364C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7364C3D0Ev,_ZThn36_N7S7364C3D0Ev)();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__A__7S7364C3__7S7364C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7364C3D1Ev,_ZThn36_N7S7364C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7364C3D0Ev,_ZThn36_N7S7364C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C5__7S7364C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C2[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C5__7S7364C2[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
static  VTT_ENTRY vtt_S7364C2[] = {
  {&(_ZTV7S7364C2[6]),  6,74},
  {&(_ZTV7S7364C2[35]),  35,74},
  {&(_ZTV7S7364C2[68]),  68,74},
  {&(_ZTV7S7364C2[6]),  6,74},
  {&(_ZTV7S7364C2[54]),  54,74},
  {&(_tg__ZTV7S7364C3__7S7364C2[5]),  5,20},
  {&(_tg__ZTV7S7364C47S7364C3__7S7364C2[5]),  5,14},
  {&(_tg__ZTV7S7364C5__7S7364C47S7364C3__7S7364C2[8]),  8,14},
  {&(_tg__ZTV7S7364C6__7S7364C47S7364C3__7S7364C2[3]),  3,4},
  {&(_tg__ZTV7S7364C57S7364C3__A1__7S7364C2[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C57S7364C3__A1__7S7364C2[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C57S7364C3__A1__7S7364C2[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C57S7364C3__A1__7S7364C2[3]),  3,4},
  {&(_tg__ZTV7S7364C5__7S7364C3__7S7364C2[8]),  8,14},
  {&(_tg__ZTV7S7364C6__7S7364C3__7S7364C2[3]),  3,4},
  {&(_tg__ZTV7S7364C5__A__7S7364C3__7S7364C2[4]),  4,10},
  {&(_tg__ZTV7S7364C5__7S7364C2[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C5__7S7364C2[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C2[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C5__7S7364C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7364C2[];
extern  VTBL_ENTRY _ZTV7S7364C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C2[];
static VTBL_ENTRY alt_thunk_names110[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C3D0Ev,_ZThn48_N7S7364C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C3D1Ev,_ZThn48_N7S7364C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C4D0Ev,_ZThn48_N7S7364C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C4D1Ev,_ZThn48_N7S7364C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7364C2D0Ev,_ZThn64_N7S7364C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7364C2D0Ev,_ZThn16_N7S7364C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7364C2D1Ev,_ZThn64_N7S7364C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7364C2D1Ev,_ZThn16_N7S7364C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7364C2 = {  "S7364C2", // class name
  bases_S7364C2, 7,
  &(vtc_S7364C2[0]), // expected_vtbl_contents
  &(vtt_S7364C2[0]), // expected_vtt_contents
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI7S7364C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7364C2),74, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7364C2),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names110,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7364C1  : S7364C2 , S9624C48 {
  virtual void  v1(); // _ZN7S7364C12v1Ev
  ~S7364C1(); // tgen
  S7364C1(); // tgen
};
//SIG(1 S7364C1) C1{ BC2{ VBC3{ BC4{ VBC5{ VBC6{ v2} BC7{ VBC6 v3} vd v4 v5 Fi} vd v6 v7 v8 v9 v10 v11 Fi Fs Fp FC8{ v23 v24 v25 v26 Fc Fp Fi FL:8}} BC5 vd v12 v13 v14 v15 v16 v17 Fp} v18 v19 v20 v21 v22 Fc[9] FC9{}} BC10{ m} v1}


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

static void Test_S7364C1()
{
  extern Class_Descriptor cd_S7364C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S7364C1, buf);
    S7364C1 *dp, &lv = *(dp=new (buf) S7364C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S7364C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7364C1)");
    /*is_ambiguous_... S7364C1::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C5*), 0, "S7364C1");
    /*is_ambiguous_... S7364C1::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*), 0, "S7364C1");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C5*)(S7364C3*), 0, "S7364C1");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C6*)(S7364C7*)(S7364C5*)(S7364C3*), 0, "S7364C1");
    /*is_ambiguous_... S7364C1::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C7*)(S7364C5*), ABISELECT(104,64), "S7364C1");
    check_base_class_offset(lv, (S7364C5*)(S7364C4*)(S7364C3*), ABISELECT(104,64), "S7364C1");
    check_base_class_offset(lv, (S7364C4*)(S7364C3*), ABISELECT(24,16), "S7364C1");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C7*)(S7364C5*)(S7364C3*), ABISELECT(80,52), "S7364C1");
    /*is_ambiguous_... S7364C3::S7364C5 */ AMB_check_base_class_offset(lv, (S7364C5*)(S7364C3*), ABISELECT(80,52), "S7364C1");
    check_base_class_offset(lv, (S7364C3*)(S7364C2*), ABISELECT(24,16), "S7364C1");
    check_base_class_offset(lv, (S7364C2*), 0, "S7364C1");
    check_base_class_offset(lv, (S9624C48*), 0, "S7364C1");
    test_class_info(&lv, &cd_S7364C1);
    dp->~S7364C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7364C1(Test_S7364C1, "S7364C1", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN7S7364C1C1Ev();
extern void _ZN7S7364C1D1Ev();
Name_Map name_map_S7364C1[] = {
  NSPAIR(_ZN7S7364C1C1Ev),
  NSPAIR(_ZN7S7364C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7364C6;
extern VTBL_ENTRY _ZTI7S7364C6[];
extern  VTBL_ENTRY _ZTV7S7364C6[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
extern Class_Descriptor cd_S7364C4;
extern VTBL_ENTRY _ZTI7S7364C4[];
extern  VTBL_ENTRY _ZTV7S7364C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C4[];
extern Class_Descriptor cd_S7364C7;
extern VTBL_ENTRY _ZTI7S7364C7[];
extern  VTBL_ENTRY _ZTV7S7364C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C7[];
extern Class_Descriptor cd_S7364C5;
extern VTBL_ENTRY _ZTI7S7364C5[];
extern  VTBL_ENTRY _ZTV7S7364C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C5[];
extern Class_Descriptor cd_S7364C3;
extern VTBL_ENTRY _ZTI7S7364C3[];
extern  VTBL_ENTRY _ZTV7S7364C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C3[];
extern Class_Descriptor cd_S7364C2;
extern VTBL_ENTRY _ZTI7S7364C2[];
extern  VTBL_ENTRY _ZTV7S7364C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C2[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S7364C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7364C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7364C7,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(104,64), //bcp->offset
    61, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7364C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7364C7,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7364C5,    ABISELECT(80,52), //bcp->offset
    51, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7364C3,    ABISELECT(24,16), //bcp->offset
    15, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7364C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7364C1[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C23v18Ev();
extern void _ZN7S7364C23v19Ev();
extern void _ZN7S7364C23v20Ev();
extern void _ZN7S7364C23v21Ev();
extern void _ZN7S7364C23v22Ev();
extern void _ZN7S7364C1D1Ev();
extern void _ZN7S7364C1D0Ev();
extern void _ZN7S7364C12v1Ev();
extern void _ZN7S7364C62v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C1D1Ev,_ZTv0_n24_N7S7364C1D1Ev)();
extern void ABISELECT(_ZThn24_N7S7364C1D1Ev,_ZThn16_N7S7364C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C1D0Ev,_ZTv0_n24_N7S7364C1D0Ev)();
extern void ABISELECT(_ZThn24_N7S7364C1D0Ev,_ZThn16_N7S7364C1D0Ev)() __attribute__((weak));
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C33v12Ev();
extern void _ZN7S7364C33v13Ev();
extern void _ZN7S7364C33v14Ev();
extern void _ZN7S7364C33v15Ev();
extern void _ZN7S7364C33v16Ev();
extern void _ZN7S7364C33v17Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTvn56_n48_N7S7364C1D1Ev,_ZTvn36_n24_N7S7364C1D1Ev)();
extern void ABISELECT(_ZTvn56_n48_N7S7364C1D0Ev,_ZTvn36_n24_N7S7364C1D0Ev)();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C1D1Ev,_ZTv0_n24_N7S7364C1D1Ev)();
extern void ABISELECT(_ZThn104_N7S7364C1D1Ev,_ZThn64_N7S7364C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C1D0Ev,_ZTv0_n24_N7S7364C1D0Ev)();
extern void ABISELECT(_ZThn104_N7S7364C1D0Ev,_ZThn64_N7S7364C1D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY vtc_S7364C1[] = {
  0,
  ABISELECT(104,64),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C1[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7364C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C12v1Ev,
  ABISELECT(56,36),
  ABISELECT(56,36),
  ABISELECT(56,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7364C1[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C1D1Ev,_ZTv0_n24_N7S7364C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C1D0Ev,_ZTv0_n24_N7S7364C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v17Ev,
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7364C1[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7364C1D1Ev,_ZTvn36_n24_N7S7364C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7364C1D0Ev,_ZTvn36_n24_N7S7364C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
  0,
  0,
  ABISELECT(-104,-64),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7364C1[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C1D1Ev,_ZTv0_n24_N7S7364C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C1D0Ev,_ZTv0_n24_N7S7364C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern VTBL_ENTRY _ZTV7S7364C1[];
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C23v18Ev();
extern void _ZN7S7364C23v19Ev();
extern void _ZN7S7364C23v20Ev();
extern void _ZN7S7364C23v21Ev();
extern void _ZN7S7364C23v22Ev();
extern void _ZN7S7364C2D1Ev();
extern void _ZN7S7364C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C2__7S7364C1[] = {
  0,
  ABISELECT(104,64),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7364C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7364C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C2D0Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7364C2D1Ev,_ZThn16_N7S7364C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7364C2D0Ev,_ZThn16_N7S7364C2D0Ev)() __attribute__((weak));
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C33v12Ev();
extern void _ZN7S7364C33v13Ev();
extern void _ZN7S7364C33v14Ev();
extern void _ZN7S7364C33v15Ev();
extern void _ZN7S7364C33v16Ev();
extern void _ZN7S7364C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C3__7S7364C2__7S7364C1[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  ABISELECT(56,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v17Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S7364C2D1Ev,_ZThn64_N7S7364C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S7364C2D0Ev,_ZThn64_N7S7364C2D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C2__7S7364C1[] = {
  0,
  0,
  ABISELECT(-104,-64),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTvn56_n48_N7S7364C2D1Ev,_ZTvn36_n24_N7S7364C2D1Ev)();
extern void ABISELECT(_ZTvn56_n48_N7S7364C2D0Ev,_ZTvn36_n24_N7S7364C2D0Ev)();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C57S7364C3__A1__7S7364C2__7S7364C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7364C2[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7364C2D1Ev,_ZTvn36_n24_N7S7364C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7364C2D0Ev,_ZTvn36_n24_N7S7364C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C3D1Ev();
extern void _ZN7S7364C3D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
extern void _ZN7S7364C33v12Ev();
extern void _ZN7S7364C33v13Ev();
extern void _ZN7S7364C33v14Ev();
extern void _ZN7S7364C33v15Ev();
extern void _ZN7S7364C33v16Ev();
extern void _ZN7S7364C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C3__7S7364C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v16Ev,
  (VTBL_ENTRY)&_ZN7S7364C33v17Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C4D1Ev();
extern void _ZN7S7364C4D0Ev();
extern void _ZN7S7364C42v6Ev();
extern void _ZN7S7364C42v7Ev();
extern void _ZN7S7364C42v8Ev();
extern void _ZN7S7364C42v9Ev();
extern void _ZN7S7364C43v10Ev();
extern void _ZN7S7364C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C47S7364C3__7S7364C1[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7364C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7364C43v11Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7364C4D1Ev,_ZThn48_N7S7364C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7364C4D0Ev,_ZThn48_N7S7364C4D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C47S7364C3__7S7364C1[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C47S7364C3__7S7364C1[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7364C4[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C57S7364C3__A1__7S7364C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C57S7364C3__A1__7S7364C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C57S7364C3__A1__7S7364C1[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C57S7364C3__A1__7S7364C1[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7364C3D1Ev,_ZThn48_N7S7364C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7364C3D0Ev,_ZThn48_N7S7364C3D0Ev)() __attribute__((weak));
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C3__7S7364C1[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C3__7S7364C1[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void ABISELECT(_ZThn56_N7S7364C3D1Ev,_ZThn36_N7S7364C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7364C3D0Ev,_ZThn36_N7S7364C3D0Ev)();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__A__7S7364C3__7S7364C1[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7364C3[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7364C3D1Ev,_ZThn36_N7S7364C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7364C3D0Ev,_ZThn36_N7S7364C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
extern void _ZN7S7364C5D1Ev();
extern void _ZN7S7364C5D0Ev();
extern void _ZN7S7364C52v4Ev();
extern void _ZN7S7364C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C5__7S7364C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7364C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v4Ev,
  (VTBL_ENTRY)&_ZN7S7364C52v5Ev,
};
extern void _ZN7S7364C62v2Ev();
extern void _ZN7S7364C72v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C77S7364C5__7S7364C1[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
  (VTBL_ENTRY)&_ZN7S7364C72v3Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C1[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7364C7[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
extern void _ZN7S7364C62v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7364C6__7S7364C5__7S7364C1[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7364C5[0]),
  (VTBL_ENTRY)&_ZN7S7364C62v2Ev,
};
static  VTT_ENTRY vtt_S7364C1[] = {
  {&(_ZTV7S7364C1[6]),  6,75},
  {&(_tg__ZTV7S7364C2__7S7364C1[6]),  6,14},
  {&(_tg__ZTV7S7364C3__7S7364C2__7S7364C1[21]),  21,36},
  {&(_tg__ZTV7S7364C5__7S7364C2__7S7364C1[8]),  8,14},
  {&(_tg__ZTV7S7364C2__7S7364C1[6]),  6,14},
  {&(_tg__ZTV7S7364C57S7364C3__A1__7S7364C2__7S7364C1[4]),  4,10},
  {&(_ZTV7S7364C1[36]),  36,75},
  {&(_ZTV7S7364C1[69]),  69,75},
  {&(_ZTV7S7364C1[6]),  6,75},
  {&(_ZTV7S7364C1[55]),  55,75},
  {&(_tg__ZTV7S7364C3__7S7364C1[5]),  5,20},
  {&(_tg__ZTV7S7364C47S7364C3__7S7364C1[5]),  5,14},
  {&(_tg__ZTV7S7364C5__7S7364C47S7364C3__7S7364C1[8]),  8,14},
  {&(_tg__ZTV7S7364C6__7S7364C47S7364C3__7S7364C1[3]),  3,4},
  {&(_tg__ZTV7S7364C57S7364C3__A1__7S7364C1[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C57S7364C3__A1__7S7364C1[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C57S7364C3__A1__7S7364C1[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C57S7364C3__A1__7S7364C1[3]),  3,4},
  {&(_tg__ZTV7S7364C5__7S7364C3__7S7364C1[8]),  8,14},
  {&(_tg__ZTV7S7364C6__7S7364C3__7S7364C1[3]),  3,4},
  {&(_tg__ZTV7S7364C5__A__7S7364C3__7S7364C1[4]),  4,10},
  {&(_tg__ZTV7S7364C5__7S7364C1[4]),  4,10},
  {&(_tg__ZTV7S7364C77S7364C5__7S7364C1[4]),  4,6},
  {&(_tg__ZTV7S7364C6__7S7364C77S7364C5__7S7364C1[3]),  3,4},
  {&(_tg__ZTV7S7364C6__7S7364C5__7S7364C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7364C1[];
extern  VTBL_ENTRY _ZTV7S7364C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7364C1[];
static VTBL_ENTRY alt_thunk_names111[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C3D0Ev,_ZTv0_n24_N7S7364C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C3D0Ev,_ZThn48_N7S7364C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C3D1Ev,_ZTv0_n24_N7S7364C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C3D1Ev,_ZThn48_N7S7364C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D0Ev,_ZTv0_n24_N7S7364C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C4D0Ev,_ZThn48_N7S7364C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C4D1Ev,_ZTv0_n24_N7S7364C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7364C4D1Ev,_ZThn48_N7S7364C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C2D0Ev,_ZTv0_n24_N7S7364C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7364C2D0Ev,_ZThn64_N7S7364C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7364C2D0Ev,_ZThn16_N7S7364C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C2D1Ev,_ZTv0_n24_N7S7364C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7364C2D1Ev,_ZThn64_N7S7364C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7364C2D1Ev,_ZThn16_N7S7364C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C1D0Ev,_ZTv0_n24_N7S7364C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7364C1D0Ev,_ZThn64_N7S7364C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7364C1D0Ev,_ZThn16_N7S7364C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7364C1D1Ev,_ZTv0_n24_N7S7364C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7364C1D1Ev,_ZThn64_N7S7364C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7364C1D1Ev,_ZThn16_N7S7364C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7364C1 = {  "S7364C1", // class name
  bases_S7364C1, 9,
  &(vtc_S7364C1[0]), // expected_vtbl_contents
  &(vtt_S7364C1[0]), // expected_vtt_contents
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI7S7364C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7364C1),75, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7364C1),25, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names111,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16368C12_nt  {
  int s16368c12f0;
  ::S1540C5_nt s16368c12f1;
  int s16368c12f2;
  ::S15056C8_nt s16368c12f3;
  int s16368c12f4[2];
  ::S10296C7_nt s16368c12f5;
  ::S15056C8_nt s16368c12f6;
  void  mf16368c12(); // _ZN12S16368C12_nt10mf16368c12Ev
};
//SIG(1 S16368C12_nt) C1{ m Fi FC2{ m Fi[2]} Fi FC3{ m FC4{ m Fp[2]} Fi} Fi[2] FC5{ m FC6{ m Fp[2]} FC7{ m Fp[2]}} FC3}


void  S16368C12_nt ::mf16368c12(){}

//skip512 S16368C12_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S16368C1  {
  ::S10296C48 s16368c1f0;
  ::S15056C2_nt s16368c1f1;
  ::S10296C32 s16368c1f2;
  int s16368c1f3;
  ::S10296C7_nt s16368c1f4;
  ::S10296C7_nt s16368c1f5;
  ::S16368C12_nt s16368c1f6[4];
  void  mf16368c1(); // _ZN8S16368C19mf16368c1Ev
};
//SIG(1 S16368C1) C1{ m FC2{ m Fp[2]} FC3{ m Fi[3] FC4{ m FC5{ m Fp[2]} FC6{ m Fp[2]}} Fi[3] Fc Fp FC7{ m Fp Fi FC8{ m}} Fc FC9{ m FC2 Fi}} FC10{ m Fp[2]} Fi FC4 FC4 FC11{ m Fi FC12{ m Fi[2]} Fi FC9 Fi[2] FC4 FC9}[4]}


void  S16368C1 ::mf16368c1(){}

static void Test_S16368C1()
{
  {
    init_simple_test("S16368C1");
    S16368C1 lv;
    check2(sizeof(lv), ABISELECT(640,384), "sizeof(S16368C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16368C1)");
    check_field_offset(lv, s16368c1f0, 0, "S16368C1.s16368c1f0");
    check_field_offset(lv, s16368c1f1, ABISELECT(16,8), "S16368C1.s16368c1f1");
    check_field_offset(lv, s16368c1f2, ABISELECT(136,84), "S16368C1.s16368c1f2");
    check_field_offset(lv, s16368c1f3, ABISELECT(152,92), "S16368C1.s16368c1f3");
    check_field_offset(lv, s16368c1f4, ABISELECT(160,96), "S16368C1.s16368c1f4");
    check_field_offset(lv, s16368c1f5, ABISELECT(192,112), "S16368C1.s16368c1f5");
    check_field_offset(lv, s16368c1f6, ABISELECT(224,128), "S16368C1.s16368c1f6");
  }
}
static Arrange_To_Call_Me vS16368C1(Test_S16368C1, "S16368C1", ABISELECT(640,384));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7362C6  {
  virtual void  v1(); // _ZN7S7362C62v1Ev
  ~S7362C6(); // tgen
  S7362C6(); // tgen
};
//SIG(-1 S7362C6) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7362C6C1Ev();
extern void _ZN7S7362C6D1Ev();
Name_Map name_map_S7362C6[] = {
  NSPAIR(_ZN7S7362C6C1Ev),
  NSPAIR(_ZN7S7362C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7362C6[];
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY vtc_S7362C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C6[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
Class_Descriptor cd_S7362C6 = {  "S7362C6", // class name
  0,0,//no base classes
  &(vtc_S7362C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7362C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7362C6),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  S7362C7  : virtual S7362C6 {
  virtual void  v2(); // _ZN7S7362C72v2Ev
  ~S7362C7(); // tgen
  S7362C7(); // tgen
};
//SIG(-1 S7362C7) C1{ VBC2{ v2} v1}


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

static void Test_S7362C7()
{
  extern Class_Descriptor cd_S7362C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7362C7, buf);
    S7362C7 *dp, &lv = *(dp=new (buf) S7362C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7362C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7362C7)");
    check_base_class_offset(lv, (S7362C6*), 0, "S7362C7");
    test_class_info(&lv, &cd_S7362C7);
    dp->~S7362C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7362C7(Test_S7362C7, "S7362C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7362C7C1Ev();
extern void _ZN7S7362C7D1Ev();
Name_Map name_map_S7362C7[] = {
  NSPAIR(_ZN7S7362C7C1Ev),
  NSPAIR(_ZN7S7362C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7362C6;
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
static Base_Class bases_S7362C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7362C6,    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 _ZTI7S7362C7[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY vtc_S7362C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern VTBL_ENTRY _ZTV7S7362C7[];
static  VTT_ENTRY vtt_S7362C7[] = {
  {&(_ZTV7S7362C7[4]),  4,6},
  {&(_ZTV7S7362C7[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
Class_Descriptor cd_S7362C7 = {  "S7362C7", // class name
  bases_S7362C7, 1,
  &(vtc_S7362C7[0]), // expected_vtbl_contents
  &(vtt_S7362C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7362C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7362C7),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7362C7),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  S7362C5  : virtual S7362C6 , S7362C7 {
  int s7362c5f0;
  virtual  ~S7362C5(); // _ZN7S7362C5D2Ev
  virtual void  v3(); // _ZN7S7362C52v3Ev
  virtual void  v4(); // _ZN7S7362C52v4Ev
  S7362C5(); // tgen
};
//SIG(-1 S7362C5) C1{ VBC2{ v3} BC3{ VBC2 v4} vd v1 v2 Fi}


 S7362C5 ::~S7362C5(){ note_dtor("S7362C5", this);}
void  S7362C5 ::v3(){vfunc_called(this, "_ZN7S7362C52v3Ev");}
void  S7362C5 ::v4(){vfunc_called(this, "_ZN7S7362C52v4Ev");}
S7362C5 ::S7362C5(){ note_ctor("S7362C5", this);} // tgen

static void Test_S7362C5()
{
  extern Class_Descriptor cd_S7362C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7362C5, buf);
    S7362C5 *dp, &lv = *(dp=new (buf) S7362C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7362C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7362C5)");
    check_base_class_offset(lv, (S7362C6*), 0, "S7362C5");
    check_base_class_offset(lv, (S7362C6*)(S7362C7*), 0, "S7362C5");
    check_base_class_offset(lv, (S7362C7*), 0, "S7362C5");
    check_field_offset(lv, s7362c5f0, ABISELECT(8,4), "S7362C5.s7362c5f0");
    test_class_info(&lv, &cd_S7362C5);
    dp->~S7362C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7362C5(Test_S7362C5, "S7362C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7362C5C1Ev();
extern void _ZN7S7362C5D2Ev();
Name_Map name_map_S7362C5[] = {
  NSPAIR(_ZN7S7362C5C1Ev),
  NSPAIR(_ZN7S7362C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7362C6;
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
static Base_Class bases_S7362C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7362C6,    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
  1, 1},
  {&cd_S7362C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7362C5[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY vtc_S7362C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7362C5[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C7__7S7362C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
static  VTT_ENTRY vtt_S7362C5[] = {
  {&(_ZTV7S7362C5[4]),  4,10},
  {&(_tg__ZTV7S7362C7__7S7362C5[4]),  4,6},
  {&(_tg__ZTV7S7362C7__7S7362C5[4]),  4,6},
  {&(_ZTV7S7362C5[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
Class_Descriptor cd_S7362C5 = {  "S7362C5", // class name
  bases_S7362C5, 2,
  &(vtc_S7362C5[0]), // expected_vtbl_contents
  &(vtt_S7362C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7362C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7362C5),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7362C5),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  S7362C4  : virtual S7362C5 {
  int s7362c4f0;
  short s7362c4f1;
  void *s7362c4f2;
  ::S7364C8 s7362c4f3;
  virtual  ~S7362C4(); // _ZN7S7362C4D2Ev
  virtual void  v5(); // _ZN7S7362C42v5Ev
  virtual void  v6(); // _ZN7S7362C42v6Ev
  virtual void  v7(); // _ZN7S7362C42v7Ev
  virtual void  v8(); // _ZN7S7362C42v8Ev
  virtual void  v9(); // _ZN7S7362C42v9Ev
  virtual void  v10(); // _ZN7S7362C43v10Ev
  S7362C4(); // tgen
};
//SIG(-1 S7362C4) C1{ VBC2{ VBC3{ v7} BC4{ VBC3 v8} vd v9 v10 Fi} vd v1 v2 v3 v4 v5 v6 Fi Fs Fp FC5{ v11 v12 v13 v14 Fc Fp Fi FL:8}}


 S7362C4 ::~S7362C4(){ note_dtor("S7362C4", this);}
void  S7362C4 ::v5(){vfunc_called(this, "_ZN7S7362C42v5Ev");}
void  S7362C4 ::v6(){vfunc_called(this, "_ZN7S7362C42v6Ev");}
void  S7362C4 ::v7(){vfunc_called(this, "_ZN7S7362C42v7Ev");}
void  S7362C4 ::v8(){vfunc_called(this, "_ZN7S7362C42v8Ev");}
void  S7362C4 ::v9(){vfunc_called(this, "_ZN7S7362C42v9Ev");}
void  S7362C4 ::v10(){vfunc_called(this, "_ZN7S7362C43v10Ev");}
S7362C4 ::S7362C4(){ note_ctor("S7362C4", this);} // tgen

static void Test_S7362C4()
{
  extern Class_Descriptor cd_S7362C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S7362C4, buf);
    S7362C4 *dp, &lv = *(dp=new (buf) S7362C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S7362C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7362C4)");
    check_base_class_offset(lv, (S7362C6*)(S7362C5*), 0, "S7362C4");
    check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*), 0, "S7362C4");
    check_base_class_offset(lv, (S7362C7*)(S7362C5*), ABISELECT(56,36), "S7362C4");
    check_base_class_offset(lv, (S7362C5*), ABISELECT(56,36), "S7362C4");
    check_field_offset(lv, s7362c4f0, ABISELECT(8,4), "S7362C4.s7362c4f0");
    check_field_offset(lv, s7362c4f1, ABISELECT(12,8), "S7362C4.s7362c4f1");
    check_field_offset(lv, s7362c4f2, ABISELECT(16,12), "S7362C4.s7362c4f2");
    check_field_offset(lv, s7362c4f3, ABISELECT(24,16), "S7362C4.s7362c4f3");
    test_class_info(&lv, &cd_S7362C4);
    dp->~S7362C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7362C4(Test_S7362C4, "S7362C4", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S7362C4C1Ev();
extern void _ZN7S7362C4D2Ev();
Name_Map name_map_S7362C4[] = {
  NSPAIR(_ZN7S7362C4C1Ev),
  NSPAIR(_ZN7S7362C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7362C6;
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
static Base_Class bases_S7362C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7362C6,    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_S7362C7,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(56,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7362C4[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C4D1Ev();
extern void _ZN7S7362C4D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev)();
extern void ABISELECT(_ZThn56_N7S7362C4D1Ev,_ZThn36_N7S7362C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev)();
extern void ABISELECT(_ZThn56_N7S7362C4D0Ev,_ZThn36_N7S7362C4D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY vtc_S7362C4[] = {
  0,
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  0,
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7362C4[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C4[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C5__7S7362C4[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C4[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C5__7S7362C4[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
static  VTT_ENTRY vtt_S7362C4[] = {
  {&(_ZTV7S7362C4[5]),  5,28},
  {&(_ZTV7S7362C4[22]),  22,28},
  {&(_ZTV7S7362C4[5]),  5,28},
  {&(_tg__ZTV7S7362C5__7S7362C4[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C5__7S7362C4[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C4[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C5__7S7362C4[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7362C4[];
extern  VTBL_ENTRY _ZTV7S7362C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C4[];
static VTBL_ENTRY alt_thunk_names112[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7362C4D0Ev,_ZThn36_N7S7362C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7362C4D1Ev,_ZThn36_N7S7362C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7362C4 = {  "S7362C4", // class name
  bases_S7362C4, 3,
  &(vtc_S7362C4[0]), // expected_vtbl_contents
  &(vtt_S7362C4[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S7362C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7362C4),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7362C4),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names112,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7362C3  : S7362C4 , S7362C5 {
  void *s7362c3f0;
  virtual  ~S7362C3(); // _ZN7S7362C3D2Ev
  virtual void  v11(); // _ZN7S7362C33v11Ev
  virtual void  v12(); // _ZN7S7362C33v12Ev
  virtual void  v13(); // _ZN7S7362C33v13Ev
  virtual void  v14(); // _ZN7S7362C33v14Ev
  virtual void  v15(); // _ZN7S7362C33v15Ev
  virtual void  v16(); // _ZN7S7362C33v16Ev
  S7362C3(); // tgen
};
//SIG(-1 S7362C3) C1{ BC2{ VBC3{ VBC4{ v7} BC5{ VBC4 v8} vd v9 v10 Fi} vd v11 v12 v13 v14 v15 v16 Fi Fs Fp FC6{ v17 v18 v19 v20 Fc Fp Fi FL:8}} BC3 vd v1 v2 v3 v4 v5 v6 Fp}


 S7362C3 ::~S7362C3(){ note_dtor("S7362C3", this);}
void  S7362C3 ::v11(){vfunc_called(this, "_ZN7S7362C33v11Ev");}
void  S7362C3 ::v12(){vfunc_called(this, "_ZN7S7362C33v12Ev");}
void  S7362C3 ::v13(){vfunc_called(this, "_ZN7S7362C33v13Ev");}
void  S7362C3 ::v14(){vfunc_called(this, "_ZN7S7362C33v14Ev");}
void  S7362C3 ::v15(){vfunc_called(this, "_ZN7S7362C33v15Ev");}
void  S7362C3 ::v16(){vfunc_called(this, "_ZN7S7362C33v16Ev");}
S7362C3 ::S7362C3(){ note_ctor("S7362C3", this);} // tgen

static void Test_S7362C3()
{
  extern Class_Descriptor cd_S7362C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,15)];
    init_test(&cd_S7362C3, buf);
    S7362C3 *dp, &lv = *(dp=new (buf) S7362C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S7362C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7362C3)");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C5*), 0, "S7362C3");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*), 0, "S7362C3");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C5*), 0, "S7362C3");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*), 0, "S7362C3");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C7*)(S7362C5*), ABISELECT(80,48), "S7362C3");
    check_base_class_offset(lv, (S7362C5*)(S7362C4*), ABISELECT(80,48), "S7362C3");
    check_base_class_offset(lv, (S7362C4*), 0, "S7362C3");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C7*)(S7362C5*), ABISELECT(56,36), "S7362C3");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C5*), ABISELECT(56,36), "S7362C3");
    check_field_offset(lv, s7362c3f0, ABISELECT(72,44), "S7362C3.s7362c3f0");
    test_class_info(&lv, &cd_S7362C3);
    dp->~S7362C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7362C3(Test_S7362C3, "S7362C3", ABISELECT(96,56));

#else // __cplusplus

extern void _ZN7S7362C3C1Ev();
extern void _ZN7S7362C3D2Ev();
Name_Map name_map_S7362C3[] = {
  NSPAIR(_ZN7S7362C3C1Ev),
  NSPAIR(_ZN7S7362C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7362C6;
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
extern Class_Descriptor cd_S7362C4;
extern VTBL_ENTRY _ZTI7S7362C4[];
extern  VTBL_ENTRY _ZTV7S7362C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C4[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
static Base_Class bases_S7362C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7362C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7362C7,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(80,48), //bcp->offset
    30, //bcp->virtual_function_table_offset
    8, //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
    3, //immediately_derived
  0, 1},
  {&cd_S7362C4,    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_S7362C7,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(56,36), //bcp->offset
    20, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7362C3[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C3D1Ev();
extern void _ZN7S7362C3D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C33v11Ev();
extern void _ZN7S7362C33v12Ev();
extern void _ZN7S7362C33v13Ev();
extern void _ZN7S7362C33v14Ev();
extern void _ZN7S7362C33v15Ev();
extern void _ZN7S7362C33v16Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZThn56_N7S7362C3D1Ev,_ZThn36_N7S7362C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7362C3D0Ev,_ZThn36_N7S7362C3D0Ev)();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7362C3D1Ev,_ZThn48_N7S7362C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7362C3D0Ev,_ZThn48_N7S7362C3D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY vtc_S7362C3[] = {
  0,
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v16Ev,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7362C3D1Ev,_ZThn36_N7S7362C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7362C3D0Ev,_ZThn36_N7S7362C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7362C3[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C4D1Ev();
extern void _ZN7S7362C4D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C4__7S7362C3[] = {
  0,
  ABISELECT(80,48),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7362C4D1Ev,_ZThn48_N7S7362C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7362C4D0Ev,_ZThn48_N7S7362C4D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C4__7S7362C3[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__A__7S7362C3[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C5__A1__7S7362C3[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C5__A1__7S7362C3[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C5__A__7S7362C3[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C3[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C5__7S7362C3[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C3[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C5__7S7362C3[] = {
  0,
  ABISELECT(80,48),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
static  VTT_ENTRY vtt_S7362C3[] = {
  {&(_ZTV7S7362C3[5]),  5,44},
  {&(_tg__ZTV7S7362C4__7S7362C3[5]),  5,14},
  {&(_tg__ZTV7S7362C5__7S7362C4__7S7362C3[8]),  8,14},
  {&(_tg__ZTV7S7362C4__7S7362C3[5]),  5,14},
  {&(_tg__ZTV7S7362C5__A__7S7362C3[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C5__A1__7S7362C3[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C5__A1__7S7362C3[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C5__A__7S7362C3[3]),  3,4},
  {&(_ZTV7S7362C3[38]),  38,44},
  {&(_ZTV7S7362C3[5]),  5,44},
  {&(_ZTV7S7362C3[24]),  24,44},
  {&(_tg__ZTV7S7362C5__7S7362C3[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C5__7S7362C3[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C3[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C5__7S7362C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7362C3[];
extern  VTBL_ENTRY _ZTV7S7362C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C3[];
static VTBL_ENTRY alt_thunk_names113[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C4D0Ev,_ZThn48_N7S7362C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C4D1Ev,_ZThn48_N7S7362C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C3D0Ev,_ZThn48_N7S7362C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C3D1Ev,_ZThn48_N7S7362C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7362C3 = {  "S7362C3", // class name
  bases_S7362C3, 6,
  &(vtc_S7362C3[0]), // expected_vtbl_contents
  &(vtt_S7362C3[0]), // expected_vtt_contents
  ABISELECT(96,56), // object size
  NSPAIRA(_ZTI7S7362C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7362C3),44, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7362C3),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names113,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7362C2  : virtual S7362C3 {
  char s7362c2f0[9];
  ::S10296C15_nt s7362c2f1;
  virtual void  v17(); // _ZN7S7362C23v17Ev
  virtual void  v18(); // _ZN7S7362C23v18Ev
  virtual void  v19(); // _ZN7S7362C23v19Ev
  virtual void  v20(); // _ZN7S7362C23v20Ev
  virtual void  v21(); // _ZN7S7362C23v21Ev
  ~S7362C2(); // tgen
  S7362C2(); // tgen
};
//SIG(-1 S7362C2) C1{ VBC2{ BC3{ VBC4{ VBC5{ v6} BC6{ VBC5 v7} vd v8 v9 Fi} vd v10 v11 v12 v13 v14 v15 Fi Fs Fp FC7{ v22 v23 v24 v25 Fc Fp Fi FL:8}} BC4 vd v16 v17 v18 v19 v20 v21 Fp} v1 v2 v3 v4 v5 Fc[9] FC8{}}


void  S7362C2 ::v17(){vfunc_called(this, "_ZN7S7362C23v17Ev");}
void  S7362C2 ::v18(){vfunc_called(this, "_ZN7S7362C23v18Ev");}
void  S7362C2 ::v19(){vfunc_called(this, "_ZN7S7362C23v19Ev");}
void  S7362C2 ::v20(){vfunc_called(this, "_ZN7S7362C23v20Ev");}
void  S7362C2 ::v21(){vfunc_called(this, "_ZN7S7362C23v21Ev");}
S7362C2 ::~S7362C2(){ note_dtor("S7362C2", this);} // tgen
S7362C2 ::S7362C2(){ note_ctor("S7362C2", this);} // tgen

static void Test_S7362C2()
{
  extern Class_Descriptor cd_S7362C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,19)];
    init_test(&cd_S7362C2, buf);
    S7362C2 *dp, &lv = *(dp=new (buf) S7362C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,72), "sizeof(S7362C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7362C2)");
    /*is_ambiguous_... S7362C2::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C5*), 0, "S7362C2");
    /*is_ambiguous_... S7362C2::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*), 0, "S7362C2");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C5*)(S7362C3*), 0, "S7362C2");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*)(S7362C3*), 0, "S7362C2");
    /*is_ambiguous_... S7362C2::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C7*)(S7362C5*), ABISELECT(104,64), "S7362C2");
    check_base_class_offset(lv, (S7362C5*)(S7362C4*)(S7362C3*), ABISELECT(104,64), "S7362C2");
    check_base_class_offset(lv, (S7362C4*)(S7362C3*), ABISELECT(24,16), "S7362C2");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C7*)(S7362C5*)(S7362C3*), ABISELECT(80,52), "S7362C2");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C5*)(S7362C3*), ABISELECT(80,52), "S7362C2");
    check_base_class_offset(lv, (S7362C3*), ABISELECT(24,16), "S7362C2");
    check_field_offset(lv, s7362c2f0, ABISELECT(8,4), "S7362C2.s7362c2f0");
    check_field_offset(lv, s7362c2f1, ABISELECT(17,13), "S7362C2.s7362c2f1");
    test_class_info(&lv, &cd_S7362C2);
    dp->~S7362C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7362C2(Test_S7362C2, "S7362C2", ABISELECT(120,72));

#else // __cplusplus

extern void _ZN7S7362C2C1Ev();
extern void _ZN7S7362C2D1Ev();
Name_Map name_map_S7362C2[] = {
  NSPAIR(_ZN7S7362C2C1Ev),
  NSPAIR(_ZN7S7362C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7362C6;
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
extern Class_Descriptor cd_S7362C4;
extern VTBL_ENTRY _ZTI7S7362C4[];
extern  VTBL_ENTRY _ZTV7S7362C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C4[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
extern Class_Descriptor cd_S7362C3;
extern VTBL_ENTRY _ZTI7S7362C3[];
extern  VTBL_ENTRY _ZTV7S7362C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C3[];
static Base_Class bases_S7362C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7362C6,    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_S7362C7,    ABISELECT(104,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(104,64), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7362C4,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7362C7,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(80,52), //bcp->offset
    50, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7362C3,    ABISELECT(24,16), //bcp->offset
    14, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7362C2[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C23v17Ev();
extern void _ZN7S7362C23v18Ev();
extern void _ZN7S7362C23v19Ev();
extern void _ZN7S7362C23v20Ev();
extern void _ZN7S7362C23v21Ev();
extern void _ZN7S7362C2D1Ev();
extern void _ZN7S7362C2D0Ev();
extern void _ZN7S7362C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7362C2D1Ev,_ZThn16_N7S7362C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7362C2D0Ev,_ZThn16_N7S7362C2D0Ev)() __attribute__((weak));
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C33v11Ev();
extern void _ZN7S7362C33v12Ev();
extern void _ZN7S7362C33v13Ev();
extern void _ZN7S7362C33v14Ev();
extern void _ZN7S7362C33v15Ev();
extern void _ZN7S7362C33v16Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTvn56_n48_N7S7362C2D1Ev,_ZTvn36_n24_N7S7362C2D1Ev)();
extern void ABISELECT(_ZTvn56_n48_N7S7362C2D0Ev,_ZTvn36_n24_N7S7362C2D0Ev)();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev)();
extern void ABISELECT(_ZThn104_N7S7362C2D1Ev,_ZThn64_N7S7362C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev)();
extern void ABISELECT(_ZThn104_N7S7362C2D0Ev,_ZThn64_N7S7362C2D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY vtc_S7362C2[] = {
  0,
  ABISELECT(104,64),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7362C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C2D0Ev,
  ABISELECT(56,36),
  ABISELECT(56,36),
  ABISELECT(56,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v16Ev,
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7362C2D1Ev,_ZTvn36_n24_N7S7362C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7362C2D0Ev,_ZTvn36_n24_N7S7362C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
  0,
  0,
  ABISELECT(-104,-64),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7362C2[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C3D1Ev();
extern void _ZN7S7362C3D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C33v11Ev();
extern void _ZN7S7362C33v12Ev();
extern void _ZN7S7362C33v13Ev();
extern void _ZN7S7362C33v14Ev();
extern void _ZN7S7362C33v15Ev();
extern void _ZN7S7362C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C3__7S7362C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v16Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C4D1Ev();
extern void _ZN7S7362C4D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C47S7362C3__7S7362C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(80,48),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7362C4D1Ev,_ZThn48_N7S7362C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7362C4D0Ev,_ZThn48_N7S7362C4D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C47S7362C3__7S7362C2[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C47S7362C3__7S7362C2[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C57S7362C3__A1__7S7362C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C57S7362C3__A1__7S7362C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C57S7362C3__A1__7S7362C2[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C57S7362C3__A1__7S7362C2[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7362C3D1Ev,_ZThn48_N7S7362C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7362C3D0Ev,_ZThn48_N7S7362C3D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C3__7S7362C2[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C3__7S7362C2[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZThn56_N7S7362C3D1Ev,_ZThn36_N7S7362C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7362C3D0Ev,_ZThn36_N7S7362C3D0Ev)();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__A__7S7362C3__7S7362C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7362C3D1Ev,_ZThn36_N7S7362C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7362C3D0Ev,_ZThn36_N7S7362C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C5__7S7362C2[] = {
  ABISELECT(-104,-64),
  ABISELECT(-104,-64),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C2[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C5__7S7362C2[] = {
  0,
  ABISELECT(104,64),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
static  VTT_ENTRY vtt_S7362C2[] = {
  {&(_ZTV7S7362C2[6]),  6,74},
  {&(_ZTV7S7362C2[35]),  35,74},
  {&(_ZTV7S7362C2[68]),  68,74},
  {&(_ZTV7S7362C2[6]),  6,74},
  {&(_ZTV7S7362C2[54]),  54,74},
  {&(_tg__ZTV7S7362C3__7S7362C2[5]),  5,20},
  {&(_tg__ZTV7S7362C47S7362C3__7S7362C2[5]),  5,14},
  {&(_tg__ZTV7S7362C5__7S7362C47S7362C3__7S7362C2[8]),  8,14},
  {&(_tg__ZTV7S7362C6__7S7362C47S7362C3__7S7362C2[3]),  3,4},
  {&(_tg__ZTV7S7362C57S7362C3__A1__7S7362C2[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C57S7362C3__A1__7S7362C2[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C57S7362C3__A1__7S7362C2[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C57S7362C3__A1__7S7362C2[3]),  3,4},
  {&(_tg__ZTV7S7362C5__7S7362C3__7S7362C2[8]),  8,14},
  {&(_tg__ZTV7S7362C6__7S7362C3__7S7362C2[3]),  3,4},
  {&(_tg__ZTV7S7362C5__A__7S7362C3__7S7362C2[4]),  4,10},
  {&(_tg__ZTV7S7362C5__7S7362C2[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C5__7S7362C2[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C2[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C5__7S7362C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7362C2[];
extern  VTBL_ENTRY _ZTV7S7362C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C2[];
static VTBL_ENTRY alt_thunk_names114[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C3D0Ev,_ZThn48_N7S7362C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C3D1Ev,_ZThn48_N7S7362C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C4D0Ev,_ZThn48_N7S7362C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C4D1Ev,_ZThn48_N7S7362C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7362C2D0Ev,_ZThn64_N7S7362C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7362C2D0Ev,_ZThn16_N7S7362C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn104_N7S7362C2D1Ev,_ZThn64_N7S7362C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7362C2D1Ev,_ZThn16_N7S7362C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7362C2 = {  "S7362C2", // class name
  bases_S7362C2, 7,
  &(vtc_S7362C2[0]), // expected_vtbl_contents
  &(vtt_S7362C2[0]), // expected_vtt_contents
  ABISELECT(120,72), // object size
  NSPAIRA(_ZTI7S7362C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7362C2),74, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7362C2),20, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names114,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7362C1  : S7362C2 {
  void *s7362c1f0;
  ~S7362C1(); // tgen
  S7362C1(); // tgen
};
//SIG(1 S7362C1) C1{ BC2{ VBC3{ BC4{ VBC5{ VBC6{ v1} BC7{ VBC6 v2} vd v3 v4 Fi} vd v5 v6 v7 v8 v9 v10 Fi Fs Fp FC8{ v22 v23 v24 v25 Fc Fp Fi FL:8}} BC5 vd v11 v12 v13 v14 v15 v16 Fp} v17 v18 v19 v20 v21 Fc[9] FC9{}} Fp}


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

static void Test_S7362C1()
{
  extern Class_Descriptor cd_S7362C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,20)];
    init_test(&cd_S7362C1, buf);
    S7362C1 *dp, &lv = *(dp=new (buf) S7362C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S7362C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7362C1)");
    /*is_ambiguous_... S7362C1::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C5*), 0, "S7362C1");
    /*is_ambiguous_... S7362C1::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*), 0, "S7362C1");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C5*)(S7362C3*), 0, "S7362C1");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C6*)(S7362C7*)(S7362C5*)(S7362C3*), 0, "S7362C1");
    /*is_ambiguous_... S7362C1::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C7*)(S7362C5*), ABISELECT(112,68), "S7362C1");
    check_base_class_offset(lv, (S7362C5*)(S7362C4*)(S7362C3*), ABISELECT(112,68), "S7362C1");
    check_base_class_offset(lv, (S7362C4*)(S7362C3*), ABISELECT(32,20), "S7362C1");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C7*)(S7362C5*)(S7362C3*), ABISELECT(88,56), "S7362C1");
    /*is_ambiguous_... S7362C3::S7362C5 */ AMB_check_base_class_offset(lv, (S7362C5*)(S7362C3*), ABISELECT(88,56), "S7362C1");
    check_base_class_offset(lv, (S7362C3*)(S7362C2*), ABISELECT(32,20), "S7362C1");
    check_base_class_offset(lv, (S7362C2*), 0, "S7362C1");
    check_field_offset(lv, s7362c1f0, ABISELECT(24,16), "S7362C1.s7362c1f0");
    test_class_info(&lv, &cd_S7362C1);
    dp->~S7362C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7362C1(Test_S7362C1, "S7362C1", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN7S7362C1C1Ev();
extern void _ZN7S7362C1D1Ev();
Name_Map name_map_S7362C1[] = {
  NSPAIR(_ZN7S7362C1C1Ev),
  NSPAIR(_ZN7S7362C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7362C6;
extern VTBL_ENTRY _ZTI7S7362C6[];
extern  VTBL_ENTRY _ZTV7S7362C6[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
extern Class_Descriptor cd_S7362C4;
extern VTBL_ENTRY _ZTI7S7362C4[];
extern  VTBL_ENTRY _ZTV7S7362C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C4[];
extern Class_Descriptor cd_S7362C7;
extern VTBL_ENTRY _ZTI7S7362C7[];
extern  VTBL_ENTRY _ZTV7S7362C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C7[];
extern Class_Descriptor cd_S7362C5;
extern VTBL_ENTRY _ZTI7S7362C5[];
extern  VTBL_ENTRY _ZTV7S7362C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C5[];
extern Class_Descriptor cd_S7362C3;
extern VTBL_ENTRY _ZTI7S7362C3[];
extern  VTBL_ENTRY _ZTV7S7362C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C3[];
extern Class_Descriptor cd_S7362C2;
extern VTBL_ENTRY _ZTI7S7362C2[];
extern  VTBL_ENTRY _ZTV7S7362C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C2[];
static Base_Class bases_S7362C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7362C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7362C7,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(112,68), //bcp->offset
    60, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    22, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7362C4,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7362C7,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7362C5,    ABISELECT(88,56), //bcp->offset
    50, //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
    6, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7362C3,    ABISELECT(32,20), //bcp->offset
    14, //bcp->virtual_function_table_offset
    21, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S7362C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7362C1[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C23v17Ev();
extern void _ZN7S7362C23v18Ev();
extern void _ZN7S7362C23v19Ev();
extern void _ZN7S7362C23v20Ev();
extern void _ZN7S7362C23v21Ev();
extern void _ZN7S7362C1D1Ev();
extern void _ZN7S7362C1D0Ev();
extern void _ZN7S7362C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C1D1Ev,_ZTv0_n24_N7S7362C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7362C1D1Ev,_ZThn20_N7S7362C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C1D0Ev,_ZTv0_n24_N7S7362C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7362C1D0Ev,_ZThn20_N7S7362C1D0Ev)() __attribute__((weak));
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C33v11Ev();
extern void _ZN7S7362C33v12Ev();
extern void _ZN7S7362C33v13Ev();
extern void _ZN7S7362C33v14Ev();
extern void _ZN7S7362C33v15Ev();
extern void _ZN7S7362C33v16Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTvn56_n48_N7S7362C1D1Ev,_ZTvn36_n24_N7S7362C1D1Ev)();
extern void ABISELECT(_ZTvn56_n48_N7S7362C1D0Ev,_ZTvn36_n24_N7S7362C1D0Ev)();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C1D1Ev,_ZTv0_n24_N7S7362C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S7362C1D1Ev,_ZThn68_N7S7362C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C1D0Ev,_ZTv0_n24_N7S7362C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S7362C1D0Ev,_ZThn68_N7S7362C1D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY vtc_S7362C1[] = {
  0,
  ABISELECT(112,68),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C1[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7362C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C1D0Ev,
  ABISELECT(56,36),
  ABISELECT(56,36),
  ABISELECT(56,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7362C1[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C1D1Ev,_ZTv0_n24_N7S7362C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C1D0Ev,_ZTv0_n24_N7S7362C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v16Ev,
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7362C1[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7362C1D1Ev,_ZTvn36_n24_N7S7362C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7362C1D0Ev,_ZTvn36_n24_N7S7362C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
  0,
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7362C1[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C1D1Ev,_ZTv0_n24_N7S7362C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C1D0Ev,_ZTv0_n24_N7S7362C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern VTBL_ENTRY _ZTV7S7362C1[];
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C23v17Ev();
extern void _ZN7S7362C23v18Ev();
extern void _ZN7S7362C23v19Ev();
extern void _ZN7S7362C23v20Ev();
extern void _ZN7S7362C23v21Ev();
extern void _ZN7S7362C2D1Ev();
extern void _ZN7S7362C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C2__7S7362C1[] = {
  0,
  ABISELECT(112,68),
  ABISELECT(32,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7362C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7362C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C2D0Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7362C2D1Ev,_ZThn20_N7S7362C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7362C2D0Ev,_ZThn20_N7S7362C2D0Ev)() __attribute__((weak));
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C33v11Ev();
extern void _ZN7S7362C33v12Ev();
extern void _ZN7S7362C33v13Ev();
extern void _ZN7S7362C33v14Ev();
extern void _ZN7S7362C33v15Ev();
extern void _ZN7S7362C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C3__7S7362C2__7S7362C1[] = {
  ABISELECT(56,36),
  ABISELECT(56,36),
  ABISELECT(56,36),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v16Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev)();
extern void ABISELECT(_ZThn112_N7S7362C2D1Ev,_ZThn68_N7S7362C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev)();
extern void ABISELECT(_ZThn112_N7S7362C2D0Ev,_ZThn68_N7S7362C2D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C2__7S7362C1[] = {
  0,
  0,
  ABISELECT(-112,-68),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTvn56_n48_N7S7362C2D1Ev,_ZTvn36_n24_N7S7362C2D1Ev)();
extern void ABISELECT(_ZTvn56_n48_N7S7362C2D0Ev,_ZTvn36_n24_N7S7362C2D0Ev)();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C57S7362C3__A1__7S7362C2__7S7362C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  (VTBL_ENTRY)&(_ZTI7S7362C2[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7362C2D1Ev,_ZTvn36_n24_N7S7362C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn56_n48_N7S7362C2D0Ev,_ZTvn36_n24_N7S7362C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C3D1Ev();
extern void _ZN7S7362C3D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
extern void _ZN7S7362C33v11Ev();
extern void _ZN7S7362C33v12Ev();
extern void _ZN7S7362C33v13Ev();
extern void _ZN7S7362C33v14Ev();
extern void _ZN7S7362C33v15Ev();
extern void _ZN7S7362C33v16Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C3__7S7362C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v14Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v15Ev,
  (VTBL_ENTRY)&_ZN7S7362C33v16Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C4D1Ev();
extern void _ZN7S7362C4D0Ev();
extern void _ZN7S7362C42v5Ev();
extern void _ZN7S7362C42v6Ev();
extern void _ZN7S7362C42v7Ev();
extern void _ZN7S7362C42v8Ev();
extern void _ZN7S7362C42v9Ev();
extern void _ZN7S7362C43v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C47S7362C3__7S7362C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(80,48),
  ABISELECT(-32,-20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7362C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7362C43v10Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev)();
extern void ABISELECT(_ZThn80_N7S7362C4D1Ev,_ZThn48_N7S7362C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev)();
extern void ABISELECT(_ZThn80_N7S7362C4D0Ev,_ZThn48_N7S7362C4D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C47S7362C3__7S7362C1[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C47S7362C3__7S7362C1[] = {
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7362C4[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C57S7362C3__A1__7S7362C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C57S7362C3__A1__7S7362C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C57S7362C3__A1__7S7362C1[] = {
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C57S7362C3__A1__7S7362C1[] = {
  0,
  ABISELECT(88,56),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7362C3D1Ev,_ZThn48_N7S7362C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7362C3D0Ev,_ZThn48_N7S7362C3D0Ev)() __attribute__((weak));
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C3__7S7362C1[] = {
  0,
  0,
  ABISELECT(-80,-48),
  0,
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C3__7S7362C1[] = {
  0,
  ABISELECT(32,20),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void ABISELECT(_ZThn56_N7S7362C3D1Ev,_ZThn36_N7S7362C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7362C3D0Ev,_ZThn36_N7S7362C3D0Ev)();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__A__7S7362C3__7S7362C1[] = {
  ABISELECT(-88,-56),
  ABISELECT(-88,-56),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7362C3[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7362C3D1Ev,_ZThn36_N7S7362C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn56_N7S7362C3D0Ev,_ZThn36_N7S7362C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
extern void _ZN7S7362C5D1Ev();
extern void _ZN7S7362C5D0Ev();
extern void _ZN7S7362C52v3Ev();
extern void _ZN7S7362C52v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C5__7S7362C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7362C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7362C52v4Ev,
};
extern void _ZN7S7362C62v1Ev();
extern void _ZN7S7362C72v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C77S7362C5__7S7362C1[] = {
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
  (VTBL_ENTRY)&_ZN7S7362C72v2Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C1[] = {
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7362C7[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
extern void _ZN7S7362C62v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7362C6__7S7362C5__7S7362C1[] = {
  0,
  ABISELECT(112,68),
  (VTBL_ENTRY)&(_ZTI7S7362C5[0]),
  (VTBL_ENTRY)&_ZN7S7362C62v1Ev,
};
static  VTT_ENTRY vtt_S7362C1[] = {
  {&(_ZTV7S7362C1[6]),  6,74},
  {&(_tg__ZTV7S7362C2__7S7362C1[6]),  6,14},
  {&(_tg__ZTV7S7362C3__7S7362C2__7S7362C1[21]),  21,36},
  {&(_tg__ZTV7S7362C5__7S7362C2__7S7362C1[8]),  8,14},
  {&(_tg__ZTV7S7362C2__7S7362C1[6]),  6,14},
  {&(_tg__ZTV7S7362C57S7362C3__A1__7S7362C2__7S7362C1[4]),  4,10},
  {&(_ZTV7S7362C1[35]),  35,74},
  {&(_ZTV7S7362C1[68]),  68,74},
  {&(_ZTV7S7362C1[6]),  6,74},
  {&(_ZTV7S7362C1[54]),  54,74},
  {&(_tg__ZTV7S7362C3__7S7362C1[5]),  5,20},
  {&(_tg__ZTV7S7362C47S7362C3__7S7362C1[5]),  5,14},
  {&(_tg__ZTV7S7362C5__7S7362C47S7362C3__7S7362C1[8]),  8,14},
  {&(_tg__ZTV7S7362C6__7S7362C47S7362C3__7S7362C1[3]),  3,4},
  {&(_tg__ZTV7S7362C57S7362C3__A1__7S7362C1[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C57S7362C3__A1__7S7362C1[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C57S7362C3__A1__7S7362C1[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C57S7362C3__A1__7S7362C1[3]),  3,4},
  {&(_tg__ZTV7S7362C5__7S7362C3__7S7362C1[8]),  8,14},
  {&(_tg__ZTV7S7362C6__7S7362C3__7S7362C1[3]),  3,4},
  {&(_tg__ZTV7S7362C5__A__7S7362C3__7S7362C1[4]),  4,10},
  {&(_tg__ZTV7S7362C5__7S7362C1[4]),  4,10},
  {&(_tg__ZTV7S7362C77S7362C5__7S7362C1[4]),  4,6},
  {&(_tg__ZTV7S7362C6__7S7362C77S7362C5__7S7362C1[3]),  3,4},
  {&(_tg__ZTV7S7362C6__7S7362C5__7S7362C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7362C1[];
extern  VTBL_ENTRY _ZTV7S7362C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7362C1[];
static VTBL_ENTRY alt_thunk_names115[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C3D0Ev,_ZTv0_n24_N7S7362C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C3D0Ev,_ZThn48_N7S7362C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C3D1Ev,_ZTv0_n24_N7S7362C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C3D1Ev,_ZThn48_N7S7362C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D0Ev,_ZTv0_n24_N7S7362C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C4D0Ev,_ZThn48_N7S7362C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C4D1Ev,_ZTv0_n24_N7S7362C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7362C4D1Ev,_ZThn48_N7S7362C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C2D0Ev,_ZTv0_n24_N7S7362C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7362C2D0Ev,_ZThn68_N7S7362C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7362C2D0Ev,_ZThn20_N7S7362C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C2D1Ev,_ZTv0_n24_N7S7362C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7362C2D1Ev,_ZThn68_N7S7362C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7362C2D1Ev,_ZThn20_N7S7362C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C1D0Ev,_ZTv0_n24_N7S7362C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7362C1D0Ev,_ZThn68_N7S7362C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7362C1D0Ev,_ZThn20_N7S7362C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7362C1D1Ev,_ZTv0_n24_N7S7362C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S7362C1D1Ev,_ZThn68_N7S7362C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7362C1D1Ev,_ZThn20_N7S7362C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7362C1 = {  "S7362C1", // class name
  bases_S7362C1, 8,
  &(vtc_S7362C1[0]), // expected_vtbl_contents
  &(vtt_S7362C1[0]), // expected_vtt_contents
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI7S7362C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7362C1),74, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7362C1),25, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names115,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19703C7  : virtual S9624C48 {
  int s19703c7f0;
  ~S19703C7(); // tgen
  S19703C7(); // tgen
};
//SIG(-1 S19703C7) C1{ VBC2{ m} Fi}


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

static void Test_S19703C7()
{
  extern Class_Descriptor cd_S19703C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19703C7, buf);
    S19703C7 *dp, &lv = *(dp=new (buf) S19703C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19703C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C7)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19703C7");
    check_field_offset(lv, s19703c7f0, ABISELECT(8,4), "S19703C7.s19703c7f0");
    test_class_info(&lv, &cd_S19703C7);
    dp->~S19703C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C7(Test_S19703C7, "S19703C7", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19703C7C1Ev();
extern void _ZN8S19703C7D1Ev();
Name_Map name_map_S19703C7[] = {
  NSPAIR(_ZN8S19703C7C1Ev),
  NSPAIR(_ZN8S19703C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19703C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19703C7[];
static  VTBL_ENTRY vtc_S19703C7[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern VTBL_ENTRY _ZTV8S19703C7[];
static  VTT_ENTRY vtt_S19703C7[] = {
  {&(_ZTV8S19703C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
Class_Descriptor cd_S19703C7 = {  "S19703C7", // class name
  bases_S19703C7, 1,
  &(vtc_S19703C7[0]), // expected_vtbl_contents
  &(vtt_S19703C7[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19703C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19703C7),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19703C7),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  S19703C8  : S9624C48 {
};
//SIG(-1 S19703C8) C1{ BC2{ m}}



static void Test_S19703C8()
{
  extern Class_Descriptor cd_S19703C8;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19703C8, buf);
    S19703C8 &lv = *(new (buf) S19703C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19703C8)");
    check2(__alignof__(lv), 1, "__alignof__(S19703C8)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19703C8");
    test_class_info(&lv, &cd_S19703C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C8(Test_S19703C8, "S19703C8", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19703C5  : virtual S9624C48 , S19703C7 , virtual S19703C8 , S20489C10_nt {
  ~S19703C5(); // tgen
  S19703C5(); // tgen
};
//SIG(-1 S19703C5) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S19703C5()
{
  extern Class_Descriptor cd_S19703C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S19703C5, buf);
    S19703C5 *dp, &lv = *(dp=new (buf) S19703C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S19703C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C5)");
    /*is_ambiguous_... S19703C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S19703C5");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*), 0, "S19703C5");
    check_base_class_offset(lv, (S19703C7*), 0, "S19703C5");
    check_base_class_offset(lv, (S9624C48*)(S19703C8*), ABISELECT(16,12), "S19703C5");
    check_base_class_offset(lv, (S19703C8*), ABISELECT(16,12), "S19703C5");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(12,8), "S19703C5");
    test_class_info(&lv, &cd_S19703C5);
    dp->~S19703C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C5(Test_S19703C5, "S19703C5", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S19703C5C1Ev();
extern void _ZN8S19703C5D1Ev();
Name_Map name_map_S19703C5[] = {
  NSPAIR(_ZN8S19703C5C1Ev),
  NSPAIR(_ZN8S19703C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S19703C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19703C7,    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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19703C5[];
static  VTBL_ENTRY vtc_S19703C5[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C5[0]),
};
extern VTBL_ENTRY _ZTV8S19703C5[];
static  VTBL_ENTRY _tg__ZTV8S19703C7__8S19703C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
static  VTT_ENTRY vtt_S19703C5[] = {
  {&(_ZTV8S19703C5[4]),  4,4},
  {&(_tg__ZTV8S19703C7__8S19703C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19703C5[];
extern  VTBL_ENTRY _ZTV8S19703C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C5[];
Class_Descriptor cd_S19703C5 = {  "S19703C5", // class name
  bases_S19703C5, 5,
  &(vtc_S19703C5[0]), // expected_vtbl_contents
  &(vtt_S19703C5[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S19703C5),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19703C5),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19703C5),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  S19703C10  : virtual S20489C8 , virtual S9624C48 , S19703C7 {
  virtual void  v1(); // _ZN9S19703C102v1Ev
  ~S19703C10(); // tgen
  S19703C10(); // tgen
};
//SIG(-1 S19703C10) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S19703C10()
{
  extern Class_Descriptor cd_S19703C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19703C10, buf);
    S19703C10 *dp, &lv = *(dp=new (buf) S19703C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19703C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C10)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19703C10");
    check_base_class_offset(lv, (S9624C48*), 0, "S19703C10");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*), 0, "S19703C10");
    check_base_class_offset(lv, (S19703C7*), 0, "S19703C10");
    test_class_info(&lv, &cd_S19703C10);
    dp->~S19703C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C10(Test_S19703C10, "S19703C10", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19703C10C1Ev();
extern void _ZN9S19703C10D1Ev();
Name_Map name_map_S19703C10[] = {
  NSPAIR(_ZN9S19703C10C1Ev),
  NSPAIR(_ZN9S19703C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
static Base_Class bases_S19703C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19703C7,    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 _ZTI9S19703C10[];
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY vtc_S19703C10[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C10[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
extern VTBL_ENTRY _ZTV9S19703C10[];
static  VTBL_ENTRY _tg__ZTV8S19703C7__9S19703C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
static  VTT_ENTRY vtt_S19703C10[] = {
  {&(_ZTV9S19703C10[4]),  4,5},
  {&(_tg__ZTV8S19703C7__9S19703C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19703C10[];
extern  VTBL_ENTRY _ZTV9S19703C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C10[];
Class_Descriptor cd_S19703C10 = {  "S19703C10", // class name
  bases_S19703C10, 3,
  &(vtc_S19703C10[0]), // expected_vtbl_contents
  &(vtt_S19703C10[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19703C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19703C10),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19703C10),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  S19703C11  : S9624C39 , virtual S19703C7 , virtual S9624C19_nt {
  virtual  ~S19703C11(); // _ZN9S19703C11D2Ev
  S19703C11(); // tgen
};
//SIG(-1 S19703C11) C1{ BC2{ m} VBC3{ VBC4{ m} Fi} VBC5{ m} vd}


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

static void Test_S19703C11()
{
  extern Class_Descriptor cd_S19703C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19703C11, buf);
    S19703C11 *dp, &lv = *(dp=new (buf) S19703C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19703C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C11)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19703C11");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*), 0, "S19703C11");
    check_base_class_offset(lv, (S19703C7*), ABISELECT(8,4), "S19703C11");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S19703C11");
    test_class_info(&lv, &cd_S19703C11);
    dp->~S19703C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C11(Test_S19703C11, "S19703C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19703C11C1Ev();
extern void _ZN9S19703C11D2Ev();
Name_Map name_map_S19703C11[] = {
  NSPAIR(_ZN9S19703C11C1Ev),
  NSPAIR(_ZN9S19703C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
static Base_Class bases_S19703C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19703C7,    ABISELECT(8,4), //bcp->offset
    7, //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_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19703C11[];
extern void _ZN9S19703C11D1Ev();
extern void _ZN9S19703C11D0Ev();
static  VTBL_ENTRY vtc_S19703C11[] = {
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
  (VTBL_ENTRY)&_ZN9S19703C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19703C11D0Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
};
extern VTBL_ENTRY _ZTV9S19703C11[];
static  VTBL_ENTRY _tg__ZTV8S19703C7__9S19703C11[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
static  VTT_ENTRY vtt_S19703C11[] = {
  {&(_ZTV9S19703C11[5]),  5,10},
  {&(_ZTV9S19703C11[10]),  10,10},
  {&(_tg__ZTV8S19703C7__9S19703C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19703C11[];
extern  VTBL_ENTRY _ZTV9S19703C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C11[];
Class_Descriptor cd_S19703C11 = {  "S19703C11", // class name
  bases_S19703C11, 4,
  &(vtc_S19703C11[0]), // expected_vtbl_contents
  &(vtt_S19703C11[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19703C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19703C11),10, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19703C11),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  S19703C4  : S19703C5 , virtual S20489C8 , S19703C10 , virtual S19703C11 {
  ~S19703C4(); // tgen
  S19703C4(); // tgen
};
//SIG(-1 S19703C4) C1{ BC2{ VBC3{ m} BC4{ VBC3 Fi} VBC5{ BC3} BC6{ m Fi}} VBC7{ m Fi:0 Fp} BC8{ VBC7 VBC3 BC4 v1} VBC9{ BC10{ m} VBC4 VBC11{ m} vd}}


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

static void Test_S19703C4()
{
  extern Class_Descriptor cd_S19703C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,10)];
    init_test(&cd_S19703C4, buf);
    S19703C4 *dp, &lv = *(dp=new (buf) S19703C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,36), "sizeof(S19703C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C4)");
    /*is_ambiguous_... S19703C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C5*), 0, "S19703C4");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C5*), 0, "S19703C4");
    check_base_class_offset(lv, (S9624C48*)(S19703C10*), 0, "S19703C4");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C10*), 0, "S19703C4");
    /*is_ambiguous_... S19703C4::S19703C7 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C7*), 0, "S19703C4");
    check_base_class_offset(lv, (S19703C7*)(S19703C5*), 0, "S19703C4");
    check_base_class_offset(lv, (S9624C48*)(S19703C8*), ABISELECT(28,20), "S19703C4");
    check_base_class_offset(lv, (S19703C8*)(S19703C5*), ABISELECT(28,20), "S19703C4");
    check_base_class_offset(lv, (S20489C10_nt*)(S19703C5*), ABISELECT(12,8), "S19703C4");
    check_base_class_offset(lv, (S19703C5*), 0, "S19703C4");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(32,20), "S19703C4");
    check_base_class_offset(lv, (S20489C8*)(S19703C10*), ABISELECT(32,20), "S19703C4");
    check_base_class_offset(lv, (S19703C7*)(S19703C10*), ABISELECT(16,12), "S19703C4");
    check_base_class_offset(lv, (S19703C10*), ABISELECT(16,12), "S19703C4");
    check_base_class_offset(lv, (S9624C39*)(S19703C11*), ABISELECT(40,24), "S19703C4");
    check_base_class_offset(lv, (S19703C7*)(S19703C11*), ABISELECT(48,28), "S19703C4");
    check_base_class_offset(lv, (S9624C19_nt*)(S19703C11*), 0, "S19703C4");
    check_base_class_offset(lv, (S19703C11*), ABISELECT(40,24), "S19703C4");
    test_class_info(&lv, &cd_S19703C4);
    dp->~S19703C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C4(Test_S19703C4, "S19703C4", ABISELECT(64,36));

#else // __cplusplus

extern void _ZN8S19703C4C1Ev();
extern void _ZN8S19703C4D1Ev();
Name_Map name_map_S19703C4[] = {
  NSPAIR(_ZN8S19703C4C1Ev),
  NSPAIR(_ZN8S19703C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19703C5;
extern VTBL_ENTRY _ZTI8S19703C5[];
extern  VTBL_ENTRY _ZTV8S19703C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S19703C10;
extern VTBL_ENTRY _ZTI9S19703C10[];
extern  VTBL_ENTRY _ZTV9S19703C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C10[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S19703C11;
extern VTBL_ENTRY _ZTI9S19703C11[];
extern  VTBL_ENTRY _ZTV9S19703C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C11[];
static Base_Class bases_S19703C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19703C7,    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
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19703C5,    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_S20489C8,    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
    -1, //immediately_derived
  1, 1},
  {&cd_S19703C7,    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
    8, //immediately_derived
  0, 0},
  {&cd_S19703C10,    ABISELECT(16,12), //bcp->offset
    10, //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
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    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
    12, //immediately_derived
  0, 0},
  {&cd_S19703C7,    ABISELECT(48,28), //bcp->offset
    23, //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
    12, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C11,    ABISELECT(40,24), //bcp->offset
    15, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19703C4[];
extern void _ZN8S19703C4D1Ev();
extern void _ZN8S19703C4D0Ev();
extern void _ZN9S19703C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev)();
extern void ABISELECT(_ZThn40_N8S19703C4D1Ev,_ZThn24_N8S19703C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev)();
extern void ABISELECT(_ZThn40_N8S19703C4D0Ev,_ZThn24_N8S19703C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19703C4[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(32,20),
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&_ZN8S19703C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19703C4D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
};
extern VTBL_ENTRY _ZTV8S19703C4[];
static  VTBL_ENTRY _tg__ZTV8S19703C5__8S19703C4[] = {
  ABISELECT(28,20),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19703C78S19703C5__8S19703C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C10__8S19703C4[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C10[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C79S19703C10__A1__8S19703C4[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C11D1Ev();
extern void _ZN9S19703C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C11__8S19703C4[] = {
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
  (VTBL_ENTRY)&_ZN9S19703C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19703C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__9S19703C11__8S19703C4[] = {
  ABISELECT(-48,-28),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__A2__8S19703C4[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
static  VTT_ENTRY vtt_S19703C4[] = {
  {&(_ZTV8S19703C4[8]),  8,26},
  {&(_tg__ZTV8S19703C5__8S19703C4[4]),  4,4},
  {&(_tg__ZTV8S19703C78S19703C5__8S19703C4[3]),  3,3},
  {&(_tg__ZTV9S19703C10__8S19703C4[4]),  4,5},
  {&(_tg__ZTV8S19703C79S19703C10__A1__8S19703C4[3]),  3,3},
  {&(_ZTV8S19703C4[14]),  14,26},
  {&(_ZTV8S19703C4[21]),  21,26},
  {&(_ZTV8S19703C4[26]),  26,26},
  {&(_tg__ZTV9S19703C11__8S19703C4[5]),  5,7},
  {&(_tg__ZTV8S19703C7__9S19703C11__8S19703C4[3]),  3,3},
  {&(_tg__ZTV8S19703C7__A2__8S19703C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19703C4[];
extern  VTBL_ENTRY _ZTV8S19703C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C4[];
static VTBL_ENTRY alt_thunk_names116[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19703C4D0Ev,_ZThn24_N8S19703C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19703C4D1Ev,_ZThn24_N8S19703C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19703C4 = {  "S19703C4", // class name
  bases_S19703C4, 13,
  &(vtc_S19703C4[0]), // expected_vtbl_contents
  &(vtt_S19703C4[0]), // expected_vtt_contents
  ABISELECT(64,36), // object size
  NSPAIRA(_ZTI8S19703C4),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19703C4),26, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19703C4),11, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names116,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19703C15  : virtual S9624C19_nt , S9624C48 , S20489C10_nt , S19703C8 , S20489C8 {
  ~S19703C15(); // tgen
  S19703C15(); // tgen
};
//SIG(-1 S19703C15) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S19703C15()
{
  extern Class_Descriptor cd_S19703C15;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19703C15, buf);
    S19703C15 *dp, &lv = *(dp=new (buf) S19703C15());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19703C15)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C15)");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S19703C15");
    /*is_ambiguous_... S19703C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S19703C15");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S19703C15");
    check_base_class_offset(lv, (S9624C48*)(S19703C8*), ABISELECT(12,8), "S19703C15");
    check_base_class_offset(lv, (S19703C8*), ABISELECT(12,8), "S19703C15");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19703C15");
    test_class_info(&lv, &cd_S19703C15);
    dp->~S19703C15();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C15(Test_S19703C15, "S19703C15", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S19703C15C1Ev();
extern void _ZN9S19703C15D1Ev();
Name_Map name_map_S19703C15[] = {
  NSPAIR(_ZN9S19703C15C1Ev),
  NSPAIR(_ZN9S19703C15D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S19703C15[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S19703C15[];
static  VTBL_ENTRY vtc_S19703C15[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C15[0]),
};
extern VTBL_ENTRY _ZTV9S19703C15[];
static  VTT_ENTRY vtt_S19703C15[] = {
  {&(_ZTV9S19703C15[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19703C15[];
extern  VTBL_ENTRY _ZTV9S19703C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C15[];
Class_Descriptor cd_S19703C15 = {  "S19703C15", // class name
  bases_S19703C15, 6,
  &(vtc_S19703C15[0]), // expected_vtbl_contents
  &(vtt_S19703C15[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S19703C15),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S19703C15),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19703C15),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  S19703C14  : virtual S19703C15 {
  ~S19703C14(); // tgen
  S19703C14(); // tgen
};
//SIG(-1 S19703C14) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}}}


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

static void Test_S19703C14()
{
  extern Class_Descriptor cd_S19703C14;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19703C14, buf);
    S19703C14 *dp, &lv = *(dp=new (buf) S19703C14());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19703C14)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C14)");
    check_base_class_offset(lv, (S9624C19_nt*)(S19703C15*), 0, "S19703C14");
    /*is_ambiguous_... S19703C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C15*), ABISELECT(8,4), "S19703C14");
    check_base_class_offset(lv, (S20489C10_nt*)(S19703C15*), ABISELECT(16,8), "S19703C14");
    check_base_class_offset(lv, (S9624C48*)(S19703C8*)(S19703C15*), ABISELECT(20,12), "S19703C14");
    check_base_class_offset(lv, (S19703C8*)(S19703C15*), ABISELECT(20,12), "S19703C14");
    check_base_class_offset(lv, (S20489C8*)(S19703C15*), ABISELECT(24,12), "S19703C14");
    check_base_class_offset(lv, (S19703C15*), ABISELECT(8,4), "S19703C14");
    test_class_info(&lv, &cd_S19703C14);
    dp->~S19703C14();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C14(Test_S19703C14, "S19703C14", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S19703C14C1Ev();
extern void _ZN9S19703C14D1Ev();
Name_Map name_map_S19703C14[] = {
  NSPAIR(_ZN9S19703C14C1Ev),
  NSPAIR(_ZN9S19703C14D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19703C15;
extern VTBL_ENTRY _ZTI9S19703C15[];
extern  VTBL_ENTRY _ZTV9S19703C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C15[];
static Base_Class bases_S19703C14[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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_S9624C48,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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_S19703C15,    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 _ZTI9S19703C14[];
static  VTBL_ENTRY vtc_S19703C14[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C14[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19703C14[0]),
};
extern VTBL_ENTRY _ZTV9S19703C14[];
static  VTBL_ENTRY _tg__ZTV9S19703C15__9S19703C14[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C15[0]),
};
static  VTT_ENTRY vtt_S19703C14[] = {
  {&(_ZTV9S19703C14[4]),  4,7},
  {&(_ZTV9S19703C14[7]),  7,7},
  {&(_tg__ZTV9S19703C15__9S19703C14[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19703C14[];
extern  VTBL_ENTRY _ZTV9S19703C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C14[];
Class_Descriptor cd_S19703C14 = {  "S19703C14", // class name
  bases_S19703C14, 7,
  &(vtc_S19703C14[0]), // expected_vtbl_contents
  &(vtt_S19703C14[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S19703C14),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19703C14),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19703C14),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  S19703C16  : virtual S662C14 {
  ~S19703C16(); // tgen
  S19703C16(); // tgen
};
//SIG(-1 S19703C16) C1{ VBC2{ m}}


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

static void Test_S19703C16()
{
  extern Class_Descriptor cd_S19703C16;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19703C16, buf);
    S19703C16 *dp, &lv = *(dp=new (buf) S19703C16());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19703C16)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C16)");
    check_base_class_offset(lv, (S662C14*), 0, "S19703C16");
    test_class_info(&lv, &cd_S19703C16);
    dp->~S19703C16();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C16(Test_S19703C16, "S19703C16", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S19703C16C1Ev();
extern void _ZN9S19703C16D1Ev();
Name_Map name_map_S19703C16[] = {
  NSPAIR(_ZN9S19703C16C1Ev),
  NSPAIR(_ZN9S19703C16D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
static Base_Class bases_S19703C16[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S662C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19703C16[];
static  VTBL_ENTRY vtc_S19703C16[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C16[0]),
};
extern VTBL_ENTRY _ZTV9S19703C16[];
static  VTT_ENTRY vtt_S19703C16[] = {
  {&(_ZTV9S19703C16[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S19703C16[];
extern  VTBL_ENTRY _ZTV9S19703C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C16[];
Class_Descriptor cd_S19703C16 = {  "S19703C16", // class name
  bases_S19703C16, 1,
  &(vtc_S19703C16[0]), // expected_vtbl_contents
  &(vtt_S19703C16[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19703C16),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S19703C16),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19703C16),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  S19703C3  : S19703C4 , S19703C14 , S19703C8 , S19703C10 , virtual S19703C16 {
  ~S19703C3(); // tgen
  S19703C3(); // tgen
};
//SIG(-1 S19703C3) C1{ BC2{ BC3{ VBC4{ m} BC5{ VBC4 Fi} VBC6{ BC4} BC7{ m Fi}} VBC8{ m Fi:0 Fp} BC9{ VBC8 VBC4 BC5 v1} VBC10{ BC11{ m} VBC5 VBC12{ m} vd}} BC13{ VBC14{ VBC12 BC4 BC7 BC6 BC8}} BC6 BC9 VBC15{ VBC16{ m}}}


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

static void Test_S19703C3()
{
  extern Class_Descriptor cd_S19703C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,17)];
    init_test(&cd_S19703C3, buf);
    S19703C3 *dp, &lv = *(dp=new (buf) S19703C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,64), "sizeof(S19703C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C3)");
    /*is_ambiguous_... S19703C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C5*)(S19703C4*), ABISELECT(52,32), "S19703C3");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C5*)(S19703C4*), ABISELECT(52,32), "S19703C3");
    check_base_class_offset(lv, (S9624C48*)(S19703C10*)(S19703C4*), ABISELECT(52,32), "S19703C3");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C10*)(S19703C4*), ABISELECT(52,32), "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C7 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C7*), ABISELECT(52,32), "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C10*), ABISELECT(52,32), "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C10*), ABISELECT(52,32), "S19703C3");
    check_base_class_offset(lv, (S19703C7*)(S19703C5*)(S19703C4*), 0, "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C8*), ABISELECT(53,33), "S19703C3");
    check_base_class_offset(lv, (S19703C8*)(S19703C5*)(S19703C4*), ABISELECT(53,33), "S19703C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19703C5*)(S19703C4*), ABISELECT(12,8), "S19703C3");
    check_base_class_offset(lv, (S19703C5*)(S19703C4*), 0, "S19703C3");
    check_base_class_offset(lv, (S20489C8*)(S19703C4*), ABISELECT(56,32), "S19703C3");
    check_base_class_offset(lv, (S20489C8*)(S19703C10*)(S19703C4*), ABISELECT(56,32), "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19703C10*), ABISELECT(56,32), "S19703C3");
    check_base_class_offset(lv, (S19703C7*)(S19703C10*)(S19703C4*), ABISELECT(16,12), "S19703C3");
    check_base_class_offset(lv, (S19703C10*)(S19703C4*), ABISELECT(16,12), "S19703C3");
    check_base_class_offset(lv, (S9624C39*)(S19703C11*), ABISELECT(64,36), "S19703C3");
    check_base_class_offset(lv, (S19703C7*)(S19703C11*), ABISELECT(72,40), "S19703C3");
    check_base_class_offset(lv, (S9624C19_nt*)(S19703C11*), 0, "S19703C3");
    check_base_class_offset(lv, (S9624C19_nt*)(S19703C15*), 0, "S19703C3");
    check_base_class_offset(lv, (S19703C11*)(S19703C4*), ABISELECT(64,36), "S19703C3");
    check_base_class_offset(lv, (S19703C4*), 0, "S19703C3");
    /*is_ambiguous_... S19703C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C15*), ABISELECT(88,48), "S19703C3");
    check_base_class_offset(lv, (S20489C10_nt*)(S19703C15*), ABISELECT(96,52), "S19703C3");
    check_base_class_offset(lv, (S9624C48*)(S19703C8*)(S19703C15*), ABISELECT(100,56), "S19703C3");
    check_base_class_offset(lv, (S19703C8*)(S19703C15*), ABISELECT(100,56), "S19703C3");
    check_base_class_offset(lv, (S20489C8*)(S19703C15*), ABISELECT(104,56), "S19703C3");
    check_base_class_offset(lv, (S19703C15*)(S19703C14*), ABISELECT(88,48), "S19703C3");
    check_base_class_offset(lv, (S19703C14*), ABISELECT(32,20), "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C8*), 0, "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C8 */ AMB_check_base_class_offset(lv, (S19703C8*), 0, "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S19703C7*)(S19703C10*), ABISELECT(40,24), "S19703C3");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S19703C10*), ABISELECT(40,24), "S19703C3");
    check_base_class_offset(lv, (S662C14*)(S19703C16*), 0, "S19703C3");
    check_base_class_offset(lv, (S19703C16*), ABISELECT(112,60), "S19703C3");
    test_class_info(&lv, &cd_S19703C3);
    dp->~S19703C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C3(Test_S19703C3, "S19703C3", ABISELECT(120,64));

#else // __cplusplus

extern void _ZN8S19703C3C1Ev();
extern void _ZN8S19703C3D1Ev();
Name_Map name_map_S19703C3[] = {
  NSPAIR(_ZN8S19703C3C1Ev),
  NSPAIR(_ZN8S19703C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19703C5;
extern VTBL_ENTRY _ZTI8S19703C5[];
extern  VTBL_ENTRY _ZTV8S19703C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S19703C10;
extern VTBL_ENTRY _ZTI9S19703C10[];
extern  VTBL_ENTRY _ZTV9S19703C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C10[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S19703C11;
extern VTBL_ENTRY _ZTI9S19703C11[];
extern  VTBL_ENTRY _ZTV9S19703C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C11[];
extern Class_Descriptor cd_S19703C4;
extern VTBL_ENTRY _ZTI8S19703C4[];
extern  VTBL_ENTRY _ZTV8S19703C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19703C15;
extern VTBL_ENTRY _ZTI9S19703C15[];
extern  VTBL_ENTRY _ZTV9S19703C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C15[];
extern Class_Descriptor cd_S19703C14;
extern VTBL_ENTRY _ZTI9S19703C14[];
extern  VTBL_ENTRY _ZTV9S19703C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S19703C10;
extern VTBL_ENTRY _ZTI9S19703C10[];
extern  VTBL_ENTRY _ZTV9S19703C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C10[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S19703C16;
extern VTBL_ENTRY _ZTI9S19703C16[];
extern  VTBL_ENTRY _ZTV9S19703C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C16[];
static Base_Class bases_S19703C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S19703C7,    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
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(53,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(53,33), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19703C5,    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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S19703C7,    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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19703C10,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    14, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19703C7,    ABISELECT(72,40), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    16, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C11,    ABISELECT(64,36), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    15, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19703C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(88,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(100,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_S19703C8,    ABISELECT(100,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_S20489C8,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19703C15,    ABISELECT(88,48), //bcp->offset
    38, //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
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19703C14,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    17, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19703C7,    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
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19703C10,    ABISELECT(40,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    19, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S662C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C16,    ABISELECT(112,60), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    20, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19703C3[];
extern void _ZN8S19703C3D1Ev();
extern void _ZN8S19703C3D0Ev();
extern void _ZN9S19703C102v1Ev();
extern void _ZN9S19703C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19703C3D1Ev,_ZTv0_n24_N8S19703C3D1Ev)();
extern void ABISELECT(_ZThn64_N8S19703C3D1Ev,_ZThn36_N8S19703C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19703C3D0Ev,_ZTv0_n24_N8S19703C3D0Ev)();
extern void ABISELECT(_ZThn64_N8S19703C3D0Ev,_ZThn36_N8S19703C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19703C3[] = {
  0,
  ABISELECT(112,60),
  ABISELECT(88,48),
  0,
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(53,33),
  ABISELECT(52,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&_ZN8S19703C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19703C3D0Ev,
  ABISELECT(40,20),
  ABISELECT(36,20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(56,28),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  ABISELECT(16,8),
  ABISELECT(12,8),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-12,-4),
  ABISELECT(8,4),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C3D1Ev,_ZTv0_n24_N8S19703C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C3D0Ev,_ZTv0_n24_N8S19703C3D0Ev),
  ABISELECT(-20,-8),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  ABISELECT(-88,-48),
  ABISELECT(-88,-48),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  ABISELECT(-112,-60),
  ABISELECT(-112,-60),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
};
extern VTBL_ENTRY _ZTV8S19703C3[];
extern void _ZN8S19703C4D1Ev();
extern void _ZN8S19703C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19703C4__8S19703C3[] = {
  0,
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(56,32),
  ABISELECT(53,33),
  ABISELECT(52,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&_ZN8S19703C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19703C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C58S19703C4__8S19703C3[] = {
  ABISELECT(53,33),
  ABISELECT(52,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19703C78S19703C58S19703C4__8S19703C3[] = {
  ABISELECT(52,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C108S19703C4__8S19703C3[] = {
  ABISELECT(40,20),
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C10[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C79S19703C108S19703C4__A1__8S19703C3[] = {
  ABISELECT(36,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C10__8S19703C4__8S19703C3[] = {
  ABISELECT(40,20),
  ABISELECT(36,20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev)();
extern void ABISELECT(_ZThn64_N8S19703C4D1Ev,_ZThn36_N8S19703C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev)();
extern void ABISELECT(_ZThn64_N8S19703C4D0Ev,_ZThn36_N8S19703C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19703C11__8S19703C4__8S19703C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  ABISELECT(-12,-4),
  ABISELECT(8,4),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__A2__8S19703C4__8S19703C3[] = {
  ABISELECT(-20,-8),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C14__8S19703C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C15__9S19703C14__8S19703C3[] = {
  ABISELECT(-88,-48),
  ABISELECT(-56,-28),
  (VTBL_ENTRY)&(_ZTI9S19703C14[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C10__A1__8S19703C3[] = {
  ABISELECT(16,8),
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C10[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C79S19703C10__A3__8S19703C3[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C11D1Ev();
extern void _ZN9S19703C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C11__8S19703C3[] = {
  ABISELECT(-64,-36),
  ABISELECT(-12,-4),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
  (VTBL_ENTRY)&_ZN9S19703C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19703C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__9S19703C11__8S19703C3[] = {
  ABISELECT(-20,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__A2__8S19703C3[] = {
  ABISELECT(-20,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C15__8S19703C3[] = {
  ABISELECT(-88,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C16__8S19703C3[] = {
  ABISELECT(-112,-60),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C16[0]),
};
static  VTT_ENTRY vtt_S19703C3[] = {
  {&(_ZTV8S19703C3[11]),  11,44},
  {&(_tg__ZTV8S19703C4__8S19703C3[8]),  8,10},
  {&(_tg__ZTV8S19703C58S19703C4__8S19703C3[4]),  4,4},
  {&(_tg__ZTV8S19703C78S19703C58S19703C4__8S19703C3[3]),  3,3},
  {&(_tg__ZTV9S19703C108S19703C4__8S19703C3[4]),  4,5},
  {&(_tg__ZTV8S19703C79S19703C108S19703C4__A1__8S19703C3[3]),  3,3},
  {&(_tg__ZTV9S19703C10__8S19703C4__8S19703C3[4]),  4,5},
  {&(_tg__ZTV9S19703C11__8S19703C4__8S19703C3[6]),  6,8},
  {&(_tg__ZTV8S19703C7__A2__8S19703C4__8S19703C3[3]),  3,3},
  {&(_tg__ZTV9S19703C14__8S19703C3[4]),  4,4},
  {&(_tg__ZTV9S19703C15__9S19703C14__8S19703C3[3]),  3,3},
  {&(_tg__ZTV9S19703C10__A1__8S19703C3[4]),  4,5},
  {&(_tg__ZTV8S19703C79S19703C10__A3__8S19703C3[3]),  3,3},
  {&(_ZTV8S19703C3[17]),  17,44},
  {&(_ZTV8S19703C3[33]),  33,44},
  {&(_ZTV8S19703C3[38]),  38,44},
  {&(_ZTV8S19703C3[22]),  22,44},
  {&(_ZTV8S19703C3[41]),  41,44},
  {&(_ZTV8S19703C3[26]),  26,44},
  {&(_ZTV8S19703C3[44]),  44,44},
  {&(_tg__ZTV9S19703C11__8S19703C3[5]),  5,7},
  {&(_tg__ZTV8S19703C7__9S19703C11__8S19703C3[3]),  3,3},
  {&(_tg__ZTV8S19703C7__A2__8S19703C3[3]),  3,3},
  {&(_tg__ZTV9S19703C15__8S19703C3[3]),  3,3},
  {&(_tg__ZTV9S19703C16__8S19703C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19703C3[];
extern  VTBL_ENTRY _ZTV8S19703C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C3[];
static VTBL_ENTRY alt_thunk_names117[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19703C4D0Ev,_ZThn36_N8S19703C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19703C4D1Ev,_ZThn36_N8S19703C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C3D0Ev,_ZTv0_n24_N8S19703C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19703C3D0Ev,_ZThn36_N8S19703C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C3D1Ev,_ZTv0_n24_N8S19703C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19703C3D1Ev,_ZThn36_N8S19703C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19703C3 = {  "S19703C3", // class name
  bases_S19703C3, 27,
  &(vtc_S19703C3[0]), // expected_vtbl_contents
  &(vtt_S19703C3[0]), // expected_vtt_contents
  ABISELECT(120,64), // object size
  NSPAIRA(_ZTI8S19703C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19703C3),44, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19703C3),25, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names117,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19703C1  : virtual S20489C8 , S19703C3 {
  void *s19703c1f0;
  ~S19703C1(); // tgen
  S19703C1(); // tgen
};
//SIG(1 S19703C1) C1{ VBC2{ m Fi:0 Fp} BC3{ BC4{ BC5{ VBC6{ m} BC7{ VBC6 Fi} VBC8{ BC6} BC9{ m Fi}} VBC2 BC10{ VBC2 VBC6 BC7 v1} VBC11{ BC12{ m} VBC7 VBC13{ m} vd}} BC14{ VBC15{ VBC13 BC6 BC9 BC8 BC2}} BC8 BC10 VBC16{ VBC17{ m}}} Fp}


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

static void Test_S19703C1()
{
  extern Class_Descriptor cd_S19703C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,18)];
    init_test(&cd_S19703C1, buf);
    S19703C1 *dp, &lv = *(dp=new (buf) S19703C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,68), "sizeof(S19703C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19703C1)");
    /*is_ambiguous_... S19703C1::S20489C8 */ AMB_check_base_class_offset(lv, (S20489C8*), ABISELECT(64,36), "S19703C1");
    check_base_class_offset(lv, (S20489C8*)(S19703C4*)(S19703C3*), ABISELECT(64,36), "S19703C1");
    check_base_class_offset(lv, (S20489C8*)(S19703C10*)(S19703C4*)(S19703C3*), ABISELECT(64,36), "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S20489C8*)(S19703C10*)(S19703C3*), ABISELECT(64,36), "S19703C1");
    /*is_ambiguous_... S19703C5::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C5*)(S19703C4*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C5*)(S19703C4*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    check_base_class_offset(lv, (S9624C48*)(S19703C10*)(S19703C4*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C10*)(S19703C4*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    /*is_ambiguous_... S19703C1::S19703C7 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C7*), ABISELECT(72,40), "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C10*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C7*)(S19703C10*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    check_base_class_offset(lv, (S19703C7*)(S19703C5*)(S19703C4*)(S19703C3*), 0, "S19703C1");
    /*is_ambiguous_... S19703C1::S19703C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C8*), ABISELECT(73,41), "S19703C1");
    check_base_class_offset(lv, (S19703C8*)(S19703C5*)(S19703C4*)(S19703C3*), ABISELECT(73,41), "S19703C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19703C5*)(S19703C4*)(S19703C3*), ABISELECT(12,8), "S19703C1");
    check_base_class_offset(lv, (S19703C5*)(S19703C4*)(S19703C3*), 0, "S19703C1");
    check_base_class_offset(lv, (S19703C7*)(S19703C10*)(S19703C4*)(S19703C3*), ABISELECT(16,12), "S19703C1");
    check_base_class_offset(lv, (S19703C10*)(S19703C4*)(S19703C3*), ABISELECT(16,12), "S19703C1");
    check_base_class_offset(lv, (S9624C39*)(S19703C11*), ABISELECT(72,40), "S19703C1");
    check_base_class_offset(lv, (S19703C7*)(S19703C11*), ABISELECT(80,44), "S19703C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S19703C11*), 0, "S19703C1");
    check_base_class_offset(lv, (S9624C19_nt*)(S19703C15*), 0, "S19703C1");
    check_base_class_offset(lv, (S19703C11*)(S19703C4*)(S19703C3*), ABISELECT(72,40), "S19703C1");
    check_base_class_offset(lv, (S19703C4*)(S19703C3*), 0, "S19703C1");
    /*is_ambiguous_... S19703C15::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C15*), ABISELECT(96,52), "S19703C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19703C15*), ABISELECT(104,56), "S19703C1");
    check_base_class_offset(lv, (S9624C48*)(S19703C8*)(S19703C15*), ABISELECT(108,60), "S19703C1");
    check_base_class_offset(lv, (S19703C8*)(S19703C15*), ABISELECT(108,60), "S19703C1");
    check_base_class_offset(lv, (S20489C8*)(S19703C15*), ABISELECT(112,60), "S19703C1");
    check_base_class_offset(lv, (S19703C15*)(S19703C14*)(S19703C3*), ABISELECT(96,52), "S19703C1");
    check_base_class_offset(lv, (S19703C14*)(S19703C3*), ABISELECT(32,20), "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19703C8*)(S19703C3*), 0, "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C8 */ AMB_check_base_class_offset(lv, (S19703C8*)(S19703C3*), 0, "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S19703C7*)(S19703C10*)(S19703C3*), ABISELECT(40,24), "S19703C1");
    /*is_ambiguous_... S19703C3::S19703C10 */ AMB_check_base_class_offset(lv, (S19703C10*)(S19703C3*), ABISELECT(40,24), "S19703C1");
    check_base_class_offset(lv, (S662C14*)(S19703C16*), 0, "S19703C1");
    check_base_class_offset(lv, (S19703C16*)(S19703C3*), ABISELECT(120,64), "S19703C1");
    check_base_class_offset(lv, (S19703C3*), 0, "S19703C1");
    check_field_offset(lv, s19703c1f0, ABISELECT(56,32), "S19703C1.s19703c1f0");
    test_class_info(&lv, &cd_S19703C1);
    dp->~S19703C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19703C1(Test_S19703C1, "S19703C1", ABISELECT(128,68));

#else // __cplusplus

extern void _ZN8S19703C1C1Ev();
extern void _ZN8S19703C1D1Ev();
Name_Map name_map_S19703C1[] = {
  NSPAIR(_ZN8S19703C1C1Ev),
  NSPAIR(_ZN8S19703C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S19703C5;
extern VTBL_ENTRY _ZTI8S19703C5[];
extern  VTBL_ENTRY _ZTV8S19703C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C5[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S19703C10;
extern VTBL_ENTRY _ZTI9S19703C10[];
extern  VTBL_ENTRY _ZTV9S19703C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C10[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S19703C11;
extern VTBL_ENTRY _ZTI9S19703C11[];
extern  VTBL_ENTRY _ZTV9S19703C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C11[];
extern Class_Descriptor cd_S19703C4;
extern VTBL_ENTRY _ZTI8S19703C4[];
extern  VTBL_ENTRY _ZTV8S19703C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19703C15;
extern VTBL_ENTRY _ZTI9S19703C15[];
extern  VTBL_ENTRY _ZTV9S19703C15[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C15[];
extern Class_Descriptor cd_S19703C14;
extern VTBL_ENTRY _ZTI9S19703C14[];
extern  VTBL_ENTRY _ZTV9S19703C14[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C14[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19703C8;
extern VTBL_ENTRY _ZTI8S19703C8[];
extern Class_Descriptor cd_S19703C7;
extern VTBL_ENTRY _ZTI8S19703C7[];
extern  VTBL_ENTRY _ZTV8S19703C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C7[];
extern Class_Descriptor cd_S19703C10;
extern VTBL_ENTRY _ZTI9S19703C10[];
extern  VTBL_ENTRY _ZTV9S19703C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C10[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S19703C16;
extern VTBL_ENTRY _ZTI9S19703C16[];
extern  VTBL_ENTRY _ZTV9S19703C16[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19703C16[];
extern Class_Descriptor cd_S19703C3;
extern VTBL_ENTRY _ZTI8S19703C3[];
extern  VTBL_ENTRY _ZTV8S19703C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C3[];
static Base_Class bases_S19703C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19703C7,    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
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(73,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(73,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S19703C5,    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
    6, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S19703C7,    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
    7, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S19703C10,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    22, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    13, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(72,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S19703C7,    ABISELECT(80,44), //bcp->offset
    35, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    24, //bcp->index_in_construction_vtbl_array
    31, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C11,    ABISELECT(72,40), //bcp->offset
    27, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    23, //bcp->index_in_construction_vtbl_array
    29, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S19703C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(96,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    19, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(108,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S19703C8,    ABISELECT(108,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    19, //immediately_derived
  0, 0},
  {&cd_S19703C15,    ABISELECT(96,52), //bcp->offset
    38, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    26, //bcp->index_in_construction_vtbl_array
    32, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    20, //immediately_derived
  0, 1},
  {&cd_S19703C14,    ABISELECT(32,20), //bcp->offset
    18, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    25, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C7,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    24, //immediately_derived
  0, 0},
  {&cd_S19703C10,    ABISELECT(40,24), //bcp->offset
    22, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    27, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    12, //init_seq
    27, //immediately_derived
  0, 0},
  {&cd_S662C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19703C16,    ABISELECT(120,64), //bcp->offset
    41, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    28, //bcp->index_in_construction_vtbl_array
    33, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    27, //immediately_derived
  0, 1},
  {&cd_S19703C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    11, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    13, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19703C1[];
extern void _ZN8S19703C1D1Ev();
extern void _ZN8S19703C1D0Ev();
extern void _ZN9S19703C102v1Ev();
extern void _ZN9S19703C102v1Ev();
extern void ABISELECT(_ZTv0_n48_N8S19703C1D1Ev,_ZTv0_n24_N8S19703C1D1Ev)();
extern void ABISELECT(_ZThn72_N8S19703C1D1Ev,_ZThn40_N8S19703C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19703C1D0Ev,_ZTv0_n24_N8S19703C1D0Ev)();
extern void ABISELECT(_ZThn72_N8S19703C1D0Ev,_ZThn40_N8S19703C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19703C1[] = {
  0,
  ABISELECT(120,64),
  ABISELECT(96,52),
  0,
  ABISELECT(80,44),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(73,41),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  (VTBL_ENTRY)&_ZN8S19703C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19703C1D0Ev,
  ABISELECT(48,24),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
  ABISELECT(-32,-20),
  ABISELECT(64,32),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  ABISELECT(24,12),
  ABISELECT(32,16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  0,
  ABISELECT(8,4),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C1D1Ev,_ZTv0_n24_N8S19703C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C1D0Ev,_ZTv0_n24_N8S19703C1D0Ev),
  ABISELECT(-8,-4),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19703C1[0]),
};
extern VTBL_ENTRY _ZTV8S19703C1[];
extern void _ZN8S19703C3D1Ev();
extern void _ZN8S19703C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19703C3__8S19703C1[] = {
  0,
  ABISELECT(120,64),
  ABISELECT(96,52),
  0,
  ABISELECT(80,44),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(73,41),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&_ZN8S19703C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19703C3D0Ev,
};
extern void _ZN8S19703C4D1Ev();
extern void _ZN8S19703C4D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19703C48S19703C3__8S19703C1[] = {
  0,
  ABISELECT(80,44),
  ABISELECT(72,40),
  ABISELECT(64,36),
  ABISELECT(73,41),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&_ZN8S19703C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19703C4D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C58S19703C48S19703C3__8S19703C1[] = {
  ABISELECT(73,41),
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19703C78S19703C58S19703C48S19703C3__8S19703C1[] = {
  ABISELECT(72,40),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C108S19703C48S19703C3__8S19703C1[] = {
  ABISELECT(48,24),
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C10[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C79S19703C108S19703C48S19703C3__A1__8S19703C1[] = {
  ABISELECT(56,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C10__8S19703C48S19703C3__8S19703C1[] = {
  ABISELECT(48,24),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev)();
extern void ABISELECT(_ZThn72_N8S19703C4D1Ev,_ZThn40_N8S19703C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev)();
extern void ABISELECT(_ZThn72_N8S19703C4D0Ev,_ZThn40_N8S19703C4D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19703C11__8S19703C48S19703C3__8S19703C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  0,
  ABISELECT(8,4),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__A2__8S19703C48S19703C3__8S19703C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19703C4[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C148S19703C3__8S19703C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(64,32),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C14[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C15__9S19703C148S19703C3__8S19703C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI9S19703C14[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C108S19703C3__A1__8S19703C1[] = {
  ABISELECT(24,12),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C10[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C79S19703C108S19703C3__A3__8S19703C1[] = {
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C108S19703C4__8S19703C3__8S19703C1[] = {
  ABISELECT(48,24),
  ABISELECT(56,28),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
extern void ABISELECT(_ZTv0_n48_N8S19703C3D1Ev,_ZTv0_n24_N8S19703C3D1Ev)();
extern void ABISELECT(_ZThn72_N8S19703C3D1Ev,_ZThn40_N8S19703C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S19703C3D0Ev,_ZTv0_n24_N8S19703C3D0Ev)();
extern void ABISELECT(_ZThn72_N8S19703C3D0Ev,_ZThn40_N8S19703C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19703C11__8S19703C3__8S19703C1[] = {
  ABISELECT(-72,-40),
  ABISELECT(-72,-40),
  0,
  ABISELECT(8,4),
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C3D1Ev,_ZTv0_n24_N8S19703C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S19703C3D0Ev,_ZTv0_n24_N8S19703C3D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__A2__8S19703C3__8S19703C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C14__8S19703C3__8S19703C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(64,32),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C15__8S19703C3__8S19703C1[] = {
  ABISELECT(-96,-52),
  ABISELECT(-96,-52),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
};
extern void _ZN9S19703C102v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C10__A1__8S19703C3__8S19703C1[] = {
  ABISELECT(24,12),
  ABISELECT(32,16),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
  (VTBL_ENTRY)&_ZN9S19703C102v1Ev,
};
static  VTBL_ENTRY _tg__ZTV9S19703C16__8S19703C3__8S19703C1[] = {
  ABISELECT(-120,-64),
  ABISELECT(-120,-64),
  (VTBL_ENTRY)&(_ZTI8S19703C3[0]),
};
extern void _ZN9S19703C11D1Ev();
extern void _ZN9S19703C11D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19703C11__8S19703C1[] = {
  ABISELECT(-72,-40),
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
  (VTBL_ENTRY)&_ZN9S19703C11D1Ev,
  (VTBL_ENTRY)&_ZN9S19703C11D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__9S19703C11__8S19703C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S19703C11[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19703C7__A2__8S19703C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19703C7[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C15__8S19703C1[] = {
  ABISELECT(-96,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C15[0]),
};
static  VTBL_ENTRY _tg__ZTV9S19703C16__8S19703C1[] = {
  ABISELECT(-120,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19703C16[0]),
};
static  VTT_ENTRY vtt_S19703C1[] = {
  {&(_ZTV8S19703C1[11]),  11,44},
  {&(_tg__ZTV8S19703C3__8S19703C1[11]),  11,13},
  {&(_tg__ZTV8S19703C48S19703C3__8S19703C1[8]),  8,10},
  {&(_tg__ZTV8S19703C58S19703C48S19703C3__8S19703C1[4]),  4,4},
  {&(_tg__ZTV8S19703C78S19703C58S19703C48S19703C3__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C108S19703C48S19703C3__8S19703C1[4]),  4,5},
  {&(_tg__ZTV8S19703C79S19703C108S19703C48S19703C3__A1__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C10__8S19703C48S19703C3__8S19703C1[4]),  4,5},
  {&(_tg__ZTV9S19703C11__8S19703C48S19703C3__8S19703C1[6]),  6,8},
  {&(_tg__ZTV8S19703C7__A2__8S19703C48S19703C3__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C148S19703C3__8S19703C1[4]),  4,4},
  {&(_tg__ZTV9S19703C15__9S19703C148S19703C3__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C108S19703C3__A1__8S19703C1[4]),  4,5},
  {&(_tg__ZTV8S19703C79S19703C108S19703C3__A3__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C108S19703C4__8S19703C3__8S19703C1[4]),  4,5},
  {&(_tg__ZTV9S19703C11__8S19703C3__8S19703C1[6]),  6,8},
  {&(_tg__ZTV8S19703C7__A2__8S19703C3__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C14__8S19703C3__8S19703C1[4]),  4,4},
  {&(_tg__ZTV9S19703C15__8S19703C3__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C10__A1__8S19703C3__8S19703C1[4]),  4,5},
  {&(_tg__ZTV9S19703C16__8S19703C3__8S19703C1[3]),  3,3},
  {&(_ZTV8S19703C1[17]),  17,44},
  {&(_ZTV8S19703C1[33]),  33,44},
  {&(_ZTV8S19703C1[38]),  38,44},
  {&(_ZTV8S19703C1[22]),  22,44},
  {&(_ZTV8S19703C1[41]),  41,44},
  {&(_ZTV8S19703C1[26]),  26,44},
  {&(_ZTV8S19703C1[44]),  44,44},
  {&(_tg__ZTV9S19703C11__8S19703C1[5]),  5,7},
  {&(_tg__ZTV8S19703C7__9S19703C11__8S19703C1[3]),  3,3},
  {&(_tg__ZTV8S19703C7__A2__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C15__8S19703C1[3]),  3,3},
  {&(_tg__ZTV9S19703C16__8S19703C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19703C1[];
extern  VTBL_ENTRY _ZTV8S19703C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19703C1[];
static VTBL_ENTRY alt_thunk_names118[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C3D0Ev,_ZTv0_n24_N8S19703C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19703C3D0Ev,_ZThn40_N8S19703C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C3D1Ev,_ZTv0_n24_N8S19703C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19703C3D1Ev,_ZThn40_N8S19703C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C4D0Ev,_ZTv0_n24_N8S19703C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19703C4D0Ev,_ZThn40_N8S19703C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C4D1Ev,_ZTv0_n24_N8S19703C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19703C4D1Ev,_ZThn40_N8S19703C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C1D0Ev,_ZTv0_n24_N8S19703C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19703C1D0Ev,_ZThn40_N8S19703C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S19703C1D1Ev,_ZTv0_n24_N8S19703C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N8S19703C1D1Ev,_ZThn40_N8S19703C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19703C1 = {  "S19703C1", // class name
  bases_S19703C1, 28,
  &(vtc_S19703C1[0]), // expected_vtbl_contents
  &(vtt_S19703C1[0]), // expected_vtt_contents
  ABISELECT(128,68), // object size
  NSPAIRA(_ZTI8S19703C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19703C1),44, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19703C1),33, //virtual table table var
  13, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names118,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7848C5  {
  virtual void  v5(); // _ZN7S7848C52v5Ev
  ~S7848C5(); // tgen
  S7848C5(); // tgen
};
//SIG(-1 S7848C5) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S7848C5C1Ev();
extern void _ZN7S7848C5D1Ev();
Name_Map name_map_S7848C5[] = {
  NSPAIR(_ZN7S7848C5C1Ev),
  NSPAIR(_ZN7S7848C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7848C5[];
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY vtc_S7848C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C5[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
Class_Descriptor cd_S7848C5 = {  "S7848C5", // class name
  0,0,//no base classes
  &(vtc_S7848C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7848C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7848C5),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  S7848C6  : virtual S7848C5 {
  virtual void  v6(); // _ZN7S7848C62v6Ev
  ~S7848C6(); // tgen
  S7848C6(); // tgen
};
//SIG(-1 S7848C6) C1{ VBC2{ v2} v1}


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

static void Test_S7848C6()
{
  extern Class_Descriptor cd_S7848C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7848C6, buf);
    S7848C6 *dp, &lv = *(dp=new (buf) S7848C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7848C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C6)");
    check_base_class_offset(lv, (S7848C5*), 0, "S7848C6");
    test_class_info(&lv, &cd_S7848C6);
    dp->~S7848C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C6(Test_S7848C6, "S7848C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7848C6C1Ev();
extern void _ZN7S7848C6D1Ev();
Name_Map name_map_S7848C6[] = {
  NSPAIR(_ZN7S7848C6C1Ev),
  NSPAIR(_ZN7S7848C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
static Base_Class bases_S7848C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    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 _ZTI7S7848C6[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY vtc_S7848C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
extern VTBL_ENTRY _ZTV7S7848C6[];
static  VTT_ENTRY vtt_S7848C6[] = {
  {&(_ZTV7S7848C6[4]),  4,6},
  {&(_ZTV7S7848C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
Class_Descriptor cd_S7848C6 = {  "S7848C6", // class name
  bases_S7848C6, 1,
  &(vtc_S7848C6[0]), // expected_vtbl_contents
  &(vtt_S7848C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7848C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7848C6),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C6),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  S7848C4  : virtual S7848C5 , S7848C6 {
  int s7848c4f0;
  virtual  ~S7848C4(); // _ZN7S7848C4D2Ev
  virtual void  v7(); // _ZN7S7848C42v7Ev
  virtual void  v8(); // _ZN7S7848C42v8Ev
  S7848C4(); // tgen
};
//SIG(-1 S7848C4) C1{ VBC2{ v3} BC3{ VBC2 v4} vd v1 v2 Fi}


 S7848C4 ::~S7848C4(){ note_dtor("S7848C4", this);}
void  S7848C4 ::v7(){vfunc_called(this, "_ZN7S7848C42v7Ev");}
void  S7848C4 ::v8(){vfunc_called(this, "_ZN7S7848C42v8Ev");}
S7848C4 ::S7848C4(){ note_ctor("S7848C4", this);} // tgen

static void Test_S7848C4()
{
  extern Class_Descriptor cd_S7848C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7848C4, buf);
    S7848C4 *dp, &lv = *(dp=new (buf) S7848C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7848C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C4)");
    check_base_class_offset(lv, (S7848C5*), 0, "S7848C4");
    check_base_class_offset(lv, (S7848C5*)(S7848C6*), 0, "S7848C4");
    check_base_class_offset(lv, (S7848C6*), 0, "S7848C4");
    check_field_offset(lv, s7848c4f0, ABISELECT(8,4), "S7848C4.s7848c4f0");
    test_class_info(&lv, &cd_S7848C4);
    dp->~S7848C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C4(Test_S7848C4, "S7848C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7848C4C1Ev();
extern void _ZN7S7848C4D2Ev();
Name_Map name_map_S7848C4[] = {
  NSPAIR(_ZN7S7848C4C1Ev),
  NSPAIR(_ZN7S7848C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
extern Class_Descriptor cd_S7848C6;
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
static Base_Class bases_S7848C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    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
  1, 1},
  {&cd_S7848C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7848C4[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C4D1Ev();
extern void _ZN7S7848C4D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY vtc_S7848C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S7848C4[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C6__7S7848C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
static  VTT_ENTRY vtt_S7848C4[] = {
  {&(_ZTV7S7848C4[4]),  4,10},
  {&(_tg__ZTV7S7848C6__7S7848C4[4]),  4,6},
  {&(_tg__ZTV7S7848C6__7S7848C4[4]),  4,6},
  {&(_ZTV7S7848C4[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7848C4[];
extern  VTBL_ENTRY _ZTV7S7848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C4[];
Class_Descriptor cd_S7848C4 = {  "S7848C4", // class name
  bases_S7848C4, 2,
  &(vtc_S7848C4[0]), // expected_vtbl_contents
  &(vtt_S7848C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7848C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7848C4),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C4),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  S7848C3  : virtual S7848C4 {
  int s7848c3f0;
  short s7848c3f1;
  void *s7848c3f2;
  ::S7364C8 s7848c3f3;
  virtual  ~S7848C3(); // _ZN7S7848C3D2Ev
  virtual void  v9(); // _ZN7S7848C32v9Ev
  virtual void  v10(); // _ZN7S7848C33v10Ev
  virtual void  v11(); // _ZN7S7848C33v11Ev
  virtual void  v12(); // _ZN7S7848C33v12Ev
  virtual void  v13(); // _ZN7S7848C33v13Ev
  virtual void  v14(); // _ZN7S7848C33v14Ev
  S7848C3(); // tgen
};
//SIG(-1 S7848C3) C1{ VBC2{ VBC3{ v7} BC4{ VBC3 v8} vd v9 v10 Fi} vd v1 v2 v3 v4 v5 v6 Fi Fs Fp FC5{ v11 v12 v13 v14 Fc Fp Fi FL:8}}


 S7848C3 ::~S7848C3(){ note_dtor("S7848C3", this);}
void  S7848C3 ::v9(){vfunc_called(this, "_ZN7S7848C32v9Ev");}
void  S7848C3 ::v10(){vfunc_called(this, "_ZN7S7848C33v10Ev");}
void  S7848C3 ::v11(){vfunc_called(this, "_ZN7S7848C33v11Ev");}
void  S7848C3 ::v12(){vfunc_called(this, "_ZN7S7848C33v12Ev");}
void  S7848C3 ::v13(){vfunc_called(this, "_ZN7S7848C33v13Ev");}
void  S7848C3 ::v14(){vfunc_called(this, "_ZN7S7848C33v14Ev");}
S7848C3 ::S7848C3(){ note_ctor("S7848C3", this);} // tgen

static void Test_S7848C3()
{
  extern Class_Descriptor cd_S7848C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,12)];
    init_test(&cd_S7848C3, buf);
    S7848C3 *dp, &lv = *(dp=new (buf) S7848C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,44), "sizeof(S7848C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C3)");
    check_base_class_offset(lv, (S7848C5*)(S7848C4*), 0, "S7848C3");
    check_base_class_offset(lv, (S7848C5*)(S7848C6*)(S7848C4*), 0, "S7848C3");
    check_base_class_offset(lv, (S7848C6*)(S7848C4*), ABISELECT(56,36), "S7848C3");
    check_base_class_offset(lv, (S7848C4*), ABISELECT(56,36), "S7848C3");
    check_field_offset(lv, s7848c3f0, ABISELECT(8,4), "S7848C3.s7848c3f0");
    check_field_offset(lv, s7848c3f1, ABISELECT(12,8), "S7848C3.s7848c3f1");
    check_field_offset(lv, s7848c3f2, ABISELECT(16,12), "S7848C3.s7848c3f2");
    check_field_offset(lv, s7848c3f3, ABISELECT(24,16), "S7848C3.s7848c3f3");
    test_class_info(&lv, &cd_S7848C3);
    dp->~S7848C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C3(Test_S7848C3, "S7848C3", ABISELECT(72,44));

#else // __cplusplus

extern void _ZN7S7848C3C1Ev();
extern void _ZN7S7848C3D2Ev();
Name_Map name_map_S7848C3[] = {
  NSPAIR(_ZN7S7848C3C1Ev),
  NSPAIR(_ZN7S7848C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
extern Class_Descriptor cd_S7848C6;
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
extern Class_Descriptor cd_S7848C4;
extern VTBL_ENTRY _ZTI7S7848C4[];
extern  VTBL_ENTRY _ZTV7S7848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C4[];
static Base_Class bases_S7848C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    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_S7848C6,    ABISELECT(56,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7848C4,    ABISELECT(56,36), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7848C3[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C3D1Ev();
extern void _ZN7S7848C3D0Ev();
extern void _ZN7S7848C32v9Ev();
extern void _ZN7S7848C33v10Ev();
extern void _ZN7S7848C33v11Ev();
extern void _ZN7S7848C33v12Ev();
extern void _ZN7S7848C33v13Ev();
extern void _ZN7S7848C33v14Ev();
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7848C3D1Ev,_ZThn36_N7S7848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7848C3D0Ev,_ZThn36_N7S7848C3D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY vtc_S7848C3[] = {
  0,
  ABISELECT(56,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v14Ev,
  0,
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S7848C3[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C4D1Ev();
extern void _ZN7S7848C4D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C3[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C67S7848C4__7S7848C3[] = {
  ABISELECT(-56,-36),
  ABISELECT(-56,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C3[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C4__7S7848C3[] = {
  0,
  ABISELECT(56,36),
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
static  VTT_ENTRY vtt_S7848C3[] = {
  {&(_ZTV7S7848C3[5]),  5,28},
  {&(_ZTV7S7848C3[22]),  22,28},
  {&(_ZTV7S7848C3[5]),  5,28},
  {&(_tg__ZTV7S7848C4__7S7848C3[4]),  4,10},
  {&(_tg__ZTV7S7848C67S7848C4__7S7848C3[4]),  4,6},
  {&(_tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C3[3]),  3,4},
  {&(_tg__ZTV7S7848C5__7S7848C4__7S7848C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7848C3[];
extern  VTBL_ENTRY _ZTV7S7848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C3[];
static VTBL_ENTRY alt_thunk_names119[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7848C3D0Ev,_ZThn36_N7S7848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7848C3D1Ev,_ZThn36_N7S7848C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7848C3 = {  "S7848C3", // class name
  bases_S7848C3, 3,
  &(vtc_S7848C3[0]), // expected_vtbl_contents
  &(vtt_S7848C3[0]), // expected_vtt_contents
  ABISELECT(72,44), // object size
  NSPAIRA(_ZTI7S7848C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7848C3),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C3),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names119,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7848C8  : S7848C4 {
  short s7848c8f0:16;
  ~S7848C8(); // tgen
  S7848C8(); // tgen
};
//SIG(-1 S7848C8) C1{ BC2{ VBC3{ v1} BC4{ VBC3 v2} vd v3 v4 Fi} Fs:16}


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

static void Test_S7848C8()
{
  extern Class_Descriptor cd_S7848C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S7848C8, buf);
    S7848C8 *dp, &lv = *(dp=new (buf) S7848C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S7848C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C8)");
    check_base_class_offset(lv, (S7848C5*)(S7848C4*), 0, "S7848C8");
    check_base_class_offset(lv, (S7848C5*)(S7848C6*)(S7848C4*), 0, "S7848C8");
    check_base_class_offset(lv, (S7848C6*)(S7848C4*), 0, "S7848C8");
    check_base_class_offset(lv, (S7848C4*), 0, "S7848C8");
    set_bf_and_test(lv, s7848c8f0, ABISELECT(12,8), 0, 16, 1, "S7848C8");
    set_bf_and_test(lv, s7848c8f0, ABISELECT(12,8), 0, 16, hide_sll(1LL<<15), "S7848C8");
    test_class_info(&lv, &cd_S7848C8);
    dp->~S7848C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C8(Test_S7848C8, "S7848C8", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S7848C8C1Ev();
extern void _ZN7S7848C8D1Ev();
Name_Map name_map_S7848C8[] = {
  NSPAIR(_ZN7S7848C8C1Ev),
  NSPAIR(_ZN7S7848C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
extern Class_Descriptor cd_S7848C6;
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
extern Class_Descriptor cd_S7848C4;
extern VTBL_ENTRY _ZTI7S7848C4[];
extern  VTBL_ENTRY _ZTV7S7848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C4[];
static Base_Class bases_S7848C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7848C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7848C4,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7848C8[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C8D1Ev();
extern void _ZN7S7848C8D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY vtc_S7848C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C8[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C8D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C8D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S7848C8[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C4D1Ev();
extern void _ZN7S7848C4D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C67S7848C4__7S7848C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
static  VTT_ENTRY vtt_S7848C8[] = {
  {&(_ZTV7S7848C8[4]),  4,10},
  {&(_tg__ZTV7S7848C4__7S7848C8[4]),  4,10},
  {&(_tg__ZTV7S7848C67S7848C4__7S7848C8[4]),  4,6},
  {&(_tg__ZTV7S7848C67S7848C4__7S7848C8[4]),  4,6},
  {&(_tg__ZTV7S7848C4__7S7848C8[4]),  4,10},
  {&(_ZTV7S7848C8[4]),  4,10},
};
extern VTBL_ENTRY _ZTI7S7848C8[];
extern  VTBL_ENTRY _ZTV7S7848C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C8[];
Class_Descriptor cd_S7848C8 = {  "S7848C8", // class name
  bases_S7848C8, 3,
  &(vtc_S7848C8[0]), // expected_vtbl_contents
  &(vtt_S7848C8[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S7848C8),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7848C8),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C8),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  S7848C2  : virtual S7848C3 {
  ::S7848C8 s7848c2f0;
  virtual void  v15(); // _ZN7S7848C23v15Ev
  virtual void  v16(); // _ZN7S7848C23v16Ev
  virtual void  v17(); // _ZN7S7848C23v17Ev
  ~S7848C2(); // tgen
  S7848C2(); // tgen
};
//SIG(-1 S7848C2) C1{ VBC2{ VBC3{ VBC4{ v4} BC5{ VBC4 v5} vd v6 v7 Fi} vd v8 v9 v10 v11 v12 v13 Fi Fs Fp FC6{ v14 v15 v16 v17 Fc Fp Fi FL:8}} v1 v2 v3 FC7{ BC3 Fs:16}}


void  S7848C2 ::v15(){vfunc_called(this, "_ZN7S7848C23v15Ev");}
void  S7848C2 ::v16(){vfunc_called(this, "_ZN7S7848C23v16Ev");}
void  S7848C2 ::v17(){vfunc_called(this, "_ZN7S7848C23v17Ev");}
S7848C2 ::~S7848C2(){ note_dtor("S7848C2", this);} // tgen
S7848C2 ::S7848C2(){ note_ctor("S7848C2", this);} // tgen

static void Test_S7848C2()
{
  extern Class_Descriptor cd_S7848C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,16)];
    init_test(&cd_S7848C2, buf);
    S7848C2 *dp, &lv = *(dp=new (buf) S7848C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,60), "sizeof(S7848C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C2)");
    check_base_class_offset(lv, (S7848C5*)(S7848C4*), 0, "S7848C2");
    check_base_class_offset(lv, (S7848C5*)(S7848C6*)(S7848C4*), 0, "S7848C2");
    check_base_class_offset(lv, (S7848C6*)(S7848C4*), ABISELECT(80,52), "S7848C2");
    check_base_class_offset(lv, (S7848C4*)(S7848C3*), ABISELECT(80,52), "S7848C2");
    check_base_class_offset(lv, (S7848C3*), ABISELECT(24,16), "S7848C2");
    check_field_offset(lv, s7848c2f0, ABISELECT(8,4), "S7848C2.s7848c2f0");
    test_class_info(&lv, &cd_S7848C2);
    dp->~S7848C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C2(Test_S7848C2, "S7848C2", ABISELECT(96,60));

#else // __cplusplus

extern void _ZN7S7848C2C1Ev();
extern void _ZN7S7848C2D1Ev();
Name_Map name_map_S7848C2[] = {
  NSPAIR(_ZN7S7848C2C1Ev),
  NSPAIR(_ZN7S7848C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
extern Class_Descriptor cd_S7848C6;
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
extern Class_Descriptor cd_S7848C4;
extern VTBL_ENTRY _ZTI7S7848C4[];
extern  VTBL_ENTRY _ZTV7S7848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C4[];
extern Class_Descriptor cd_S7848C3;
extern VTBL_ENTRY _ZTI7S7848C3[];
extern  VTBL_ENTRY _ZTV7S7848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C3[];
static Base_Class bases_S7848C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    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_S7848C6,    ABISELECT(80,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7848C4,    ABISELECT(80,52), //bcp->offset
    33, //bcp->virtual_function_table_offset
    8, //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
    3, //immediately_derived
  0, 1},
  {&cd_S7848C3,    ABISELECT(24,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    12, //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 _ZTI7S7848C2[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C23v15Ev();
extern void _ZN7S7848C23v16Ev();
extern void _ZN7S7848C23v17Ev();
extern void _ZN7S7848C2D1Ev();
extern void _ZN7S7848C2D0Ev();
extern void _ZN7S7848C52v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7848C2D1Ev,_ZThn16_N7S7848C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7848C2D0Ev,_ZThn16_N7S7848C2D0Ev)() __attribute__((weak));
extern void _ZN7S7848C32v9Ev();
extern void _ZN7S7848C33v10Ev();
extern void _ZN7S7848C33v11Ev();
extern void _ZN7S7848C33v12Ev();
extern void _ZN7S7848C33v13Ev();
extern void _ZN7S7848C33v14Ev();
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev)();
extern void ABISELECT(_ZThn80_N7S7848C2D1Ev,_ZThn52_N7S7848C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev)();
extern void ABISELECT(_ZThn80_N7S7848C2D0Ev,_ZThn52_N7S7848C2D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY vtc_S7848C2[] = {
  0,
  ABISELECT(80,52),
  ABISELECT(24,16),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C2[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7848C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C2D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S7848C2[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v14Ev,
  0,
  0,
  ABISELECT(-80,-52),
  0,
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  (VTBL_ENTRY)&(_ZTI7S7848C2[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S7848C2[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C3D1Ev();
extern void _ZN7S7848C3D0Ev();
extern void _ZN7S7848C32v9Ev();
extern void _ZN7S7848C33v10Ev();
extern void _ZN7S7848C33v11Ev();
extern void _ZN7S7848C33v12Ev();
extern void _ZN7S7848C33v13Ev();
extern void _ZN7S7848C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C3__7S7848C2[] = {
  ABISELECT(-24,-16),
  ABISELECT(56,36),
  ABISELECT(-24,-16),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v14Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7848C3D1Ev,_ZThn36_N7S7848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7848C3D0Ev,_ZThn36_N7S7848C3D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C3__7S7848C2[] = {
  0,
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C3__7S7848C2[] = {
  0,
  ABISELECT(24,16),
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C4D1Ev();
extern void _ZN7S7848C4D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C67S7848C4__7S7848C2[] = {
  ABISELECT(-80,-52),
  ABISELECT(-80,-52),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C2[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C4__7S7848C2[] = {
  0,
  ABISELECT(80,52),
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
static  VTT_ENTRY vtt_S7848C2[] = {
  {&(_ZTV7S7848C2[6]),  6,47},
  {&(_ZTV7S7848C2[24]),  24,47},
  {&(_ZTV7S7848C2[41]),  41,47},
  {&(_ZTV7S7848C2[6]),  6,47},
  {&(_tg__ZTV7S7848C3__7S7848C2[5]),  5,14},
  {&(_tg__ZTV7S7848C4__7S7848C3__7S7848C2[8]),  8,14},
  {&(_tg__ZTV7S7848C5__7S7848C3__7S7848C2[3]),  3,4},
  {&(_tg__ZTV7S7848C4__7S7848C2[4]),  4,10},
  {&(_tg__ZTV7S7848C67S7848C4__7S7848C2[4]),  4,6},
  {&(_tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C2[3]),  3,4},
  {&(_tg__ZTV7S7848C5__7S7848C4__7S7848C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7848C2[];
extern  VTBL_ENTRY _ZTV7S7848C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C2[];
static VTBL_ENTRY alt_thunk_names120[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7848C3D0Ev,_ZThn36_N7S7848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7848C3D1Ev,_ZThn36_N7S7848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7848C2D0Ev,_ZThn52_N7S7848C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7848C2D0Ev,_ZThn16_N7S7848C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7848C2D1Ev,_ZThn52_N7S7848C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7848C2D1Ev,_ZThn16_N7S7848C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7848C2 = {  "S7848C2", // class name
  bases_S7848C2, 4,
  &(vtc_S7848C2[0]), // expected_vtbl_contents
  &(vtt_S7848C2[0]), // expected_vtt_contents
  ABISELECT(96,60), // object size
  NSPAIRA(_ZTI7S7848C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7848C2),47, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C2),11, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names120,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7848C9  : virtual S7848C4 {
  void *s7848c9f0[7];
  int s7848c9f1;
  virtual void  v18(); // _ZN7S7848C93v18Ev
  ~S7848C9(); // tgen
  S7848C9(); // tgen
};
//SIG(-1 S7848C9) C1{ VBC2{ VBC3{ v2} BC4{ VBC3 v3} vd v4 v5 Fi} v1 Fp[7] Fi}


void  S7848C9 ::v18(){vfunc_called(this, "_ZN7S7848C93v18Ev");}
S7848C9 ::~S7848C9(){ note_dtor("S7848C9", this);} // tgen
S7848C9 ::S7848C9(){ note_ctor("S7848C9", this);} // tgen

static void Test_S7848C9()
{
  extern Class_Descriptor cd_S7848C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S7848C9, buf);
    S7848C9 *dp, &lv = *(dp=new (buf) S7848C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S7848C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C9)");
    check_base_class_offset(lv, (S7848C5*)(S7848C4*), 0, "S7848C9");
    check_base_class_offset(lv, (S7848C5*)(S7848C6*)(S7848C4*), 0, "S7848C9");
    check_base_class_offset(lv, (S7848C6*)(S7848C4*), ABISELECT(72,36), "S7848C9");
    check_base_class_offset(lv, (S7848C4*), ABISELECT(72,36), "S7848C9");
    check_field_offset(lv, s7848c9f0, ABISELECT(8,4), "S7848C9.s7848c9f0");
    check_field_offset(lv, s7848c9f1, ABISELECT(64,32), "S7848C9.s7848c9f1");
    test_class_info(&lv, &cd_S7848C9);
    dp->~S7848C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C9(Test_S7848C9, "S7848C9", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S7848C9C1Ev();
extern void _ZN7S7848C9D1Ev();
Name_Map name_map_S7848C9[] = {
  NSPAIR(_ZN7S7848C9C1Ev),
  NSPAIR(_ZN7S7848C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
extern Class_Descriptor cd_S7848C6;
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
extern Class_Descriptor cd_S7848C4;
extern VTBL_ENTRY _ZTI7S7848C4[];
extern  VTBL_ENTRY _ZTV7S7848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C4[];
static Base_Class bases_S7848C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    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_S7848C6,    ABISELECT(72,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7848C4,    ABISELECT(72,36), //bcp->offset
    9, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7848C9[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C93v18Ev();
extern void _ZN7S7848C9D1Ev();
extern void _ZN7S7848C9D0Ev();
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C9D1Ev,_ZTv0_n24_N7S7848C9D1Ev)();
extern void ABISELECT(_ZThn72_N7S7848C9D1Ev,_ZThn36_N7S7848C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C9D0Ev,_ZTv0_n24_N7S7848C9D0Ev)();
extern void ABISELECT(_ZThn72_N7S7848C9D0Ev,_ZThn36_N7S7848C9D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY vtc_S7848C9[] = {
  0,
  ABISELECT(72,36),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C9[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C93v18Ev,
  (VTBL_ENTRY)&_ZN7S7848C9D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C9D0Ev,
  0,
  0,
  ABISELECT(-72,-36),
  0,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7848C9[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C9D1Ev,_ZTv0_n24_N7S7848C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C9D0Ev,_ZTv0_n24_N7S7848C9D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S7848C9[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C4D1Ev();
extern void _ZN7S7848C4D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C9[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C67S7848C4__7S7848C9[] = {
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C9[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C4__7S7848C9[] = {
  0,
  ABISELECT(72,36),
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
static  VTT_ENTRY vtt_S7848C9[] = {
  {&(_ZTV7S7848C9[5]),  5,23},
  {&(_ZTV7S7848C9[17]),  17,23},
  {&(_ZTV7S7848C9[5]),  5,23},
  {&(_tg__ZTV7S7848C4__7S7848C9[4]),  4,10},
  {&(_tg__ZTV7S7848C67S7848C4__7S7848C9[4]),  4,6},
  {&(_tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C9[3]),  3,4},
  {&(_tg__ZTV7S7848C5__7S7848C4__7S7848C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7848C9[];
extern  VTBL_ENTRY _ZTV7S7848C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C9[];
static VTBL_ENTRY alt_thunk_names121[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C9D0Ev,_ZTv0_n24_N7S7848C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7848C9D0Ev,_ZThn36_N7S7848C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C9D1Ev,_ZTv0_n24_N7S7848C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7848C9D1Ev,_ZThn36_N7S7848C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7848C9 = {  "S7848C9", // class name
  bases_S7848C9, 3,
  &(vtc_S7848C9[0]), // expected_vtbl_contents
  &(vtt_S7848C9[0]), // expected_vtt_contents
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S7848C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7848C9),23, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C9),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names121,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7848C1  : S7848C2 {
  ::S7848C9 s7848c1f0;
  __tsi64 s7848c1f1[4];
  virtual void  v1(); // _ZN7S7848C12v1Ev
  virtual void  v2(); // _ZN7S7848C12v2Ev
  virtual void  v3(); // _ZN7S7848C12v3Ev
  virtual void  v4(); // _ZN7S7848C12v4Ev
  ~S7848C1(); // tgen
  S7848C1(); // tgen
};
//SIG(1 S7848C1) C1{ BC2{ VBC3{ VBC4{ VBC5{ v5} BC6{ VBC5 v6} vd v7 v8 Fi} vd v9 v10 v11 v12 v13 v14 Fi Fs Fp FC7{ v19 v20 v21 v22 Fc Fp Fi FL:8}} v15 v16 v17 FC8{ BC4 Fs:16}} v1 v2 v3 v4 FC9{ VBC4 v18 Fp[7] Fi} FL[4]}


void  S7848C1 ::v1(){vfunc_called(this, "_ZN7S7848C12v1Ev");}
void  S7848C1 ::v2(){vfunc_called(this, "_ZN7S7848C12v2Ev");}
void  S7848C1 ::v3(){vfunc_called(this, "_ZN7S7848C12v3Ev");}
void  S7848C1 ::v4(){vfunc_called(this, "_ZN7S7848C12v4Ev");}
S7848C1 ::~S7848C1(){ note_dtor("S7848C1", this);} // tgen
S7848C1 ::S7848C1(){ note_ctor("S7848C1", this);} // tgen

static void Test_S7848C1()
{
  extern Class_Descriptor cd_S7848C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(28,35)];
    init_test(&cd_S7848C1, buf);
    S7848C1 *dp, &lv = *(dp=new (buf) S7848C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(216,136), "sizeof(S7848C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7848C1)");
    check_base_class_offset(lv, (S7848C5*)(S7848C4*), 0, "S7848C1");
    check_base_class_offset(lv, (S7848C5*)(S7848C6*)(S7848C4*), 0, "S7848C1");
    check_base_class_offset(lv, (S7848C6*)(S7848C4*), ABISELECT(200,128), "S7848C1");
    check_base_class_offset(lv, (S7848C4*)(S7848C3*), ABISELECT(200,128), "S7848C1");
    check_base_class_offset(lv, (S7848C3*)(S7848C2*), ABISELECT(144,92), "S7848C1");
    check_base_class_offset(lv, (S7848C2*), 0, "S7848C1");
    check_field_offset(lv, s7848c1f0, ABISELECT(24,16), "S7848C1.s7848c1f0");
    check_field_offset(lv, s7848c1f1, ABISELECT(112,60), "S7848C1.s7848c1f1");
    test_class_info(&lv, &cd_S7848C1);
    dp->~S7848C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7848C1(Test_S7848C1, "S7848C1", ABISELECT(216,136));

#else // __cplusplus

extern void _ZN7S7848C1C1Ev();
extern void _ZN7S7848C1D1Ev();
Name_Map name_map_S7848C1[] = {
  NSPAIR(_ZN7S7848C1C1Ev),
  NSPAIR(_ZN7S7848C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7848C5;
extern VTBL_ENTRY _ZTI7S7848C5[];
extern  VTBL_ENTRY _ZTV7S7848C5[];
extern Class_Descriptor cd_S7848C6;
extern VTBL_ENTRY _ZTI7S7848C6[];
extern  VTBL_ENTRY _ZTV7S7848C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C6[];
extern Class_Descriptor cd_S7848C4;
extern VTBL_ENTRY _ZTI7S7848C4[];
extern  VTBL_ENTRY _ZTV7S7848C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C4[];
extern Class_Descriptor cd_S7848C3;
extern VTBL_ENTRY _ZTI7S7848C3[];
extern  VTBL_ENTRY _ZTV7S7848C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C3[];
extern Class_Descriptor cd_S7848C2;
extern VTBL_ENTRY _ZTI7S7848C2[];
extern  VTBL_ENTRY _ZTV7S7848C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C2[];
static Base_Class bases_S7848C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7848C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7848C6,    ABISELECT(200,128), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7848C4,    ABISELECT(200,128), //bcp->offset
    37, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7848C3,    ABISELECT(144,92), //bcp->offset
    16, //bcp->virtual_function_table_offset
    12, //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
    4, //immediately_derived
  0, 1},
  {&cd_S7848C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7848C1[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C23v15Ev();
extern void _ZN7S7848C23v16Ev();
extern void _ZN7S7848C23v17Ev();
extern void _ZN7S7848C1D1Ev();
extern void _ZN7S7848C1D0Ev();
extern void _ZN7S7848C12v1Ev();
extern void _ZN7S7848C12v2Ev();
extern void _ZN7S7848C12v3Ev();
extern void _ZN7S7848C12v4Ev();
extern void _ZN7S7848C52v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C1D1Ev,_ZTv0_n24_N7S7848C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7848C1D1Ev,_ZThn92_N7S7848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C1D0Ev,_ZTv0_n24_N7S7848C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7848C1D0Ev,_ZThn92_N7S7848C1D0Ev)() __attribute__((weak));
extern void _ZN7S7848C32v9Ev();
extern void _ZN7S7848C33v10Ev();
extern void _ZN7S7848C33v11Ev();
extern void _ZN7S7848C33v12Ev();
extern void _ZN7S7848C33v13Ev();
extern void _ZN7S7848C33v14Ev();
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C1D1Ev,_ZTv0_n24_N7S7848C1D1Ev)();
extern void ABISELECT(_ZThn200_N7S7848C1D1Ev,_ZThn128_N7S7848C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C1D0Ev,_ZTv0_n24_N7S7848C1D0Ev)();
extern void ABISELECT(_ZThn200_N7S7848C1D0Ev,_ZThn128_N7S7848C1D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY vtc_S7848C1[] = {
  0,
  ABISELECT(200,128),
  ABISELECT(144,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C1[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7848C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7848C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7848C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7848C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(56,36),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7848C1[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C1D1Ev,_ZTv0_n24_N7S7848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C1D0Ev,_ZTv0_n24_N7S7848C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v14Ev,
  0,
  0,
  ABISELECT(-200,-128),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI7S7848C1[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C1D1Ev,_ZTv0_n24_N7S7848C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C1D0Ev,_ZTv0_n24_N7S7848C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern VTBL_ENTRY _ZTV7S7848C1[];
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C23v15Ev();
extern void _ZN7S7848C23v16Ev();
extern void _ZN7S7848C23v17Ev();
extern void _ZN7S7848C2D1Ev();
extern void _ZN7S7848C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C2__7S7848C1[] = {
  0,
  ABISELECT(200,128),
  ABISELECT(144,92),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C2[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7848C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7848C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C2D0Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7848C2D1Ev,_ZThn92_N7S7848C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7848C2D0Ev,_ZThn92_N7S7848C2D0Ev)() __attribute__((weak));
extern void _ZN7S7848C32v9Ev();
extern void _ZN7S7848C33v10Ev();
extern void _ZN7S7848C33v11Ev();
extern void _ZN7S7848C33v12Ev();
extern void _ZN7S7848C33v13Ev();
extern void _ZN7S7848C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C3__7S7848C2__7S7848C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  ABISELECT(56,36),
  ABISELECT(-144,-92),
  ABISELECT(-144,-92),
  (VTBL_ENTRY)&(_ZTI7S7848C2[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v14Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev)();
extern void ABISELECT(_ZThn200_N7S7848C2D1Ev,_ZThn128_N7S7848C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev)();
extern void ABISELECT(_ZThn200_N7S7848C2D0Ev,_ZThn128_N7S7848C2D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C2__7S7848C1[] = {
  0,
  0,
  ABISELECT(-200,-128),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  (VTBL_ENTRY)&(_ZTI7S7848C2[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C3D1Ev();
extern void _ZN7S7848C3D0Ev();
extern void _ZN7S7848C32v9Ev();
extern void _ZN7S7848C33v10Ev();
extern void _ZN7S7848C33v11Ev();
extern void _ZN7S7848C33v12Ev();
extern void _ZN7S7848C33v13Ev();
extern void _ZN7S7848C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C3__7S7848C1[] = {
  ABISELECT(-144,-92),
  ABISELECT(56,36),
  ABISELECT(-144,-92),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v12Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7848C33v14Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev)();
extern void ABISELECT(_ZThn56_N7S7848C3D1Ev,_ZThn36_N7S7848C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev)();
extern void ABISELECT(_ZThn56_N7S7848C3D0Ev,_ZThn36_N7S7848C3D0Ev)() __attribute__((weak));
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C3__7S7848C1[] = {
  0,
  0,
  ABISELECT(-56,-36),
  0,
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C3__7S7848C1[] = {
  0,
  ABISELECT(144,92),
  (VTBL_ENTRY)&(_ZTI7S7848C3[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
extern void _ZN7S7848C4D1Ev();
extern void _ZN7S7848C4D0Ev();
extern void _ZN7S7848C42v7Ev();
extern void _ZN7S7848C42v8Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C4__7S7848C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7848C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7848C42v8Ev,
};
extern void _ZN7S7848C52v5Ev();
extern void _ZN7S7848C62v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C67S7848C4__7S7848C1[] = {
  ABISELECT(-200,-128),
  ABISELECT(-200,-128),
  0,
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
  (VTBL_ENTRY)&_ZN7S7848C62v6Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C1[] = {
  0,
  ABISELECT(200,128),
  (VTBL_ENTRY)&(_ZTI7S7848C6[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
extern void _ZN7S7848C52v5Ev();
static  VTBL_ENTRY _tg__ZTV7S7848C5__7S7848C4__7S7848C1[] = {
  0,
  ABISELECT(200,128),
  (VTBL_ENTRY)&(_ZTI7S7848C4[0]),
  (VTBL_ENTRY)&_ZN7S7848C52v5Ev,
};
static  VTT_ENTRY vtt_S7848C1[] = {
  {&(_ZTV7S7848C1[6]),  6,51},
  {&(_tg__ZTV7S7848C2__7S7848C1[6]),  6,12},
  {&(_tg__ZTV7S7848C3__7S7848C2__7S7848C1[12]),  12,21},
  {&(_tg__ZTV7S7848C4__7S7848C2__7S7848C1[8]),  8,14},
  {&(_tg__ZTV7S7848C2__7S7848C1[6]),  6,12},
  {&(_ZTV7S7848C1[28]),  28,51},
  {&(_ZTV7S7848C1[45]),  45,51},
  {&(_ZTV7S7848C1[6]),  6,51},
  {&(_tg__ZTV7S7848C3__7S7848C1[5]),  5,14},
  {&(_tg__ZTV7S7848C4__7S7848C3__7S7848C1[8]),  8,14},
  {&(_tg__ZTV7S7848C5__7S7848C3__7S7848C1[3]),  3,4},
  {&(_tg__ZTV7S7848C4__7S7848C1[4]),  4,10},
  {&(_tg__ZTV7S7848C67S7848C4__7S7848C1[4]),  4,6},
  {&(_tg__ZTV7S7848C5__7S7848C67S7848C4__7S7848C1[3]),  3,4},
  {&(_tg__ZTV7S7848C5__7S7848C4__7S7848C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI7S7848C1[];
extern  VTBL_ENTRY _ZTV7S7848C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7848C1[];
static VTBL_ENTRY alt_thunk_names122[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C3D0Ev,_ZTv0_n24_N7S7848C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7848C3D0Ev,_ZThn36_N7S7848C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C3D1Ev,_ZTv0_n24_N7S7848C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7848C3D1Ev,_ZThn36_N7S7848C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C2D0Ev,_ZTv0_n24_N7S7848C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7848C2D0Ev,_ZThn128_N7S7848C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7848C2D0Ev,_ZThn92_N7S7848C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C2D1Ev,_ZTv0_n24_N7S7848C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7848C2D1Ev,_ZThn128_N7S7848C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7848C2D1Ev,_ZThn92_N7S7848C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C1D0Ev,_ZTv0_n24_N7S7848C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7848C1D0Ev,_ZThn128_N7S7848C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7848C1D0Ev,_ZThn92_N7S7848C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7848C1D1Ev,_ZTv0_n24_N7S7848C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn200_N7S7848C1D1Ev,_ZThn128_N7S7848C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7848C1D1Ev,_ZThn92_N7S7848C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7848C1 = {  "S7848C1", // class name
  bases_S7848C1, 5,
  &(vtc_S7848C1[0]), // expected_vtbl_contents
  &(vtt_S7848C1[0]), // expected_vtt_contents
  ABISELECT(216,136), // object size
  NSPAIRA(_ZTI7S7848C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7848C1),51, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7848C1),15, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names122,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2569C6_nt  : S10296C15_nt {
};
//SIG(-1 S2569C6_nt) C1{ BC2{}}



//skip512 S2569C6_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
static Base_Class bases_S2569C6_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2569C6_nt = {  "S2569C6_nt", // class name
  bases_S2569C6_nt, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

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



//skip512 S2569C9_nt

#else // __cplusplus

Class_Descriptor cd_S2569C9_nt = {  "S2569C9_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  S2569C8  : S2569C9_nt {
};
//SIG(-1 S2569C8) C1{ BC2{}}



static void Test_S2569C8()
{
  extern Class_Descriptor cd_S2569C8;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S2569C8, buf);
    S2569C8 &lv = *(new (buf) S2569C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S2569C8)");
    check2(__alignof__(lv), 1, "__alignof__(S2569C8)");
    check_base_class_offset(lv, (S2569C9_nt*), 0, "S2569C8");
    test_class_info(&lv, &cd_S2569C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2569C8(Test_S2569C8, "S2569C8", 1);

#else // __cplusplus

extern Class_Descriptor cd_S2569C9_nt;
static Base_Class bases_S2569C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S2569C9_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2569C8 = {  "S2569C8", // class name
  bases_S2569C8, 1,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2569C5_nt  : S2569C6_nt {
  ::S2569C8 s2569c5f0;
};
//SIG(-1 S2569C5_nt) C1{ BC2{ BC3{}} FC4{ BC5{}}}



//skip512 S2569C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
extern Class_Descriptor cd_S2569C6_nt;
static Base_Class bases_S2569C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2569C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2569C5_nt = {  "S2569C5_nt", // class name
  bases_S2569C5_nt, 2,
  0, // no vftv
  0, //no vtt
  1, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

union  S2569C10_nt  {
  char s2569c10f0[16];
  void *s2569c10f1;
};
//SIG(1 S2569C10_nt) U1{ Fc[16] Fp}

#endif // __cplusplus
#ifdef __cplusplus

struct  S2569C4_nt  : S2569C5_nt {
  ::S2569C10_nt s2569c4f0;
  int s2569c4f1;
  int s2569c4f2;
};
//SIG(-1 S2569C4_nt) C1{ BC2{ BC3{ BC4{}} FC5{ BC6{}}} FU7{ Fc[16] Fp} Fi Fi}



//skip512 S2569C4_nt

#else // __cplusplus

extern Class_Descriptor cd_S10296C15_nt;
extern VTBL_ENTRY _ZTI12S10296C15_nt[];
extern Class_Descriptor cd_S2569C6_nt;
extern Class_Descriptor cd_S2569C5_nt;
static Base_Class bases_S2569C4_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10296C15_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2569C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2569C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S2569C2  : S20489C10_nt {
  int s2569c2f0[3];
  ::S2569C4_nt s2569c2f1;
  int s2569c2f2;
  virtual  ~S2569C2(); // _ZN7S2569C2D1Ev
  virtual void  v12(); // _ZN7S2569C23v12Ev
  virtual void  v13(); // _ZN7S2569C23v13Ev
  virtual void  v14(); // _ZN7S2569C23v14Ev
  virtual void  v15(); // _ZN7S2569C23v15Ev
  virtual void  v16(); // _ZN7S2569C23v16Ev
  virtual void  v17(); // _ZN7S2569C23v17Ev
  virtual void  v18(); // _ZN7S2569C23v18Ev
  virtual void  v19(); // _ZN7S2569C23v19Ev
  virtual void  v20(); // _ZN7S2569C23v20Ev
  virtual void  v21(); // _ZN7S2569C23v21Ev
  virtual void  v22(); // _ZN7S2569C23v22Ev
  virtual void  v23(); // _ZN7S2569C23v23Ev
  virtual void  v24(); // _ZN7S2569C23v24Ev
  virtual void  v25(); // _ZN7S2569C23v25Ev
  S2569C2(); // tgen
};
//SIG(-1 S2569C2) C1{ BC2{ m Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[3] FC3{ BC4{ BC5{ BC6{}} FC7{ BC8{}}} FU9{ Fc[16] Fp} Fi Fi} Fi}


 S2569C2 ::~S2569C2(){ note_dtor("S2569C2", this);}
void  S2569C2 ::v12(){vfunc_called(this, "_ZN7S2569C23v12Ev");}
void  S2569C2 ::v13(){vfunc_called(this, "_ZN7S2569C23v13Ev");}
void  S2569C2 ::v14(){vfunc_called(this, "_ZN7S2569C23v14Ev");}
void  S2569C2 ::v15(){vfunc_called(this, "_ZN7S2569C23v15Ev");}
void  S2569C2 ::v16(){vfunc_called(this, "_ZN7S2569C23v16Ev");}
void  S2569C2 ::v17(){vfunc_called(this, "_ZN7S2569C23v17Ev");}
void  S2569C2 ::v18(){vfunc_called(this, "_ZN7S2569C23v18Ev");}
void  S2569C2 ::v19(){vfunc_called(this, "_ZN7S2569C23v19Ev");}
void  S2569C2 ::v20(){vfunc_called(this, "_ZN7S2569C23v20Ev");}
void  S2569C2 ::v21(){vfunc_called(this, "_ZN7S2569C23v21Ev");}
void  S2569C2 ::v22(){vfunc_called(this, "_ZN7S2569C23v22Ev");}
void  S2569C2 ::v23(){vfunc_called(this, "_ZN7S2569C23v23Ev");}
void  S2569C2 ::v24(){vfunc_called(this, "_ZN7S2569C23v24Ev");}
void  S2569C2 ::v25(){vfunc_called(this, "_ZN7S2569C23v25Ev");}
S2569C2 ::S2569C2(){ note_ctor("S2569C2", this);} // tgen

static void Test_S2569C2()
{
  extern Class_Descriptor cd_S2569C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,14)];
    init_test(&cd_S2569C2, buf);
    S2569C2 *dp, &lv = *(dp=new (buf) S2569C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S2569C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2569C2)");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S2569C2");
    check_field_offset(lv, s2569c2f0, ABISELECT(12,8), "S2569C2.s2569c2f0");
    check_field_offset(lv, s2569c2f1, ABISELECT(24,20), "S2569C2.s2569c2f1");
    check_field_offset(lv, s2569c2f2, ABISELECT(56,48), "S2569C2.s2569c2f2");
    test_class_info(&lv, &cd_S2569C2);
    dp->~S2569C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2569C2(Test_S2569C2, "S2569C2", ABISELECT(64,52));

#else // __cplusplus

extern void _ZN7S2569C2C1Ev();
extern void _ZN7S2569C2D1Ev();
Name_Map name_map_S2569C2[] = {
  NSPAIR(_ZN7S2569C2C1Ev),
  NSPAIR(_ZN7S2569C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S2569C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2569C2[];
extern void _ZN7S2569C2D1Ev();
extern void _ZN7S2569C2D0Ev();
extern void _ZN7S2569C23v12Ev();
extern void _ZN7S2569C23v13Ev();
extern void _ZN7S2569C23v14Ev();
extern void _ZN7S2569C23v15Ev();
extern void _ZN7S2569C23v16Ev();
extern void _ZN7S2569C23v17Ev();
extern void _ZN7S2569C23v18Ev();
extern void _ZN7S2569C23v19Ev();
extern void _ZN7S2569C23v20Ev();
extern void _ZN7S2569C23v21Ev();
extern void _ZN7S2569C23v22Ev();
extern void _ZN7S2569C23v23Ev();
extern void _ZN7S2569C23v24Ev();
extern void _ZN7S2569C23v25Ev();
static  VTBL_ENTRY vtc_S2569C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2569C2[0]),
  (VTBL_ENTRY)&_ZN7S2569C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2569C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v25Ev,
};
extern VTBL_ENTRY _ZTI7S2569C2[];
extern  VTBL_ENTRY _ZTV7S2569C2[];
Class_Descriptor cd_S2569C2 = {  "S2569C2", // class name
  bases_S2569C2, 1,
  &(vtc_S2569C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,52), // object size
  NSPAIRA(_ZTI7S2569C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2569C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2569C1  : S2569C2 {
  void *s2569c1f0;
  char s2569c1f1;
  virtual void  v1(); // _ZN7S2569C12v1Ev
  virtual void  v2(); // _ZN7S2569C12v2Ev
  virtual void  v3(); // _ZN7S2569C12v3Ev
  virtual void  v4(); // _ZN7S2569C12v4Ev
  virtual void  v5(); // _ZN7S2569C12v5Ev
  virtual void  v6(); // _ZN7S2569C12v6Ev
  virtual void  v7(); // _ZN7S2569C12v7Ev
  virtual void  v8(); // _ZN7S2569C12v8Ev
  virtual void  v9(); // _ZN7S2569C12v9Ev
  virtual void  v10(); // _ZN7S2569C13v10Ev
  virtual void  v11(); // _ZN7S2569C13v11Ev
  ~S2569C1(); // tgen
  S2569C1(); // tgen
};
//SIG(1 S2569C1) C1{ BC2{ BC3{ m Fi} vd v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 v23 v24 v25 Fi[3] FC4{ BC5{ BC6{ BC7{}} FC8{ BC9{}}} FU10{ Fc[16] Fp} Fi Fi} Fi} v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 Fp Fc}


void  S2569C1 ::v1(){vfunc_called(this, "_ZN7S2569C12v1Ev");}
void  S2569C1 ::v2(){vfunc_called(this, "_ZN7S2569C12v2Ev");}
void  S2569C1 ::v3(){vfunc_called(this, "_ZN7S2569C12v3Ev");}
void  S2569C1 ::v4(){vfunc_called(this, "_ZN7S2569C12v4Ev");}
void  S2569C1 ::v5(){vfunc_called(this, "_ZN7S2569C12v5Ev");}
void  S2569C1 ::v6(){vfunc_called(this, "_ZN7S2569C12v6Ev");}
void  S2569C1 ::v7(){vfunc_called(this, "_ZN7S2569C12v7Ev");}
void  S2569C1 ::v8(){vfunc_called(this, "_ZN7S2569C12v8Ev");}
void  S2569C1 ::v9(){vfunc_called(this, "_ZN7S2569C12v9Ev");}
void  S2569C1 ::v10(){vfunc_called(this, "_ZN7S2569C13v10Ev");}
void  S2569C1 ::v11(){vfunc_called(this, "_ZN7S2569C13v11Ev");}
S2569C1 ::~S2569C1(){ note_dtor("S2569C1", this);} // tgen
S2569C1 ::S2569C1(){ note_ctor("S2569C1", this);} // tgen

static void Test_S2569C1()
{
  extern Class_Descriptor cd_S2569C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,16)];
    init_test(&cd_S2569C1, buf);
    S2569C1 *dp, &lv = *(dp=new (buf) S2569C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,60), "sizeof(S2569C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2569C1)");
    check_base_class_offset(lv, (S20489C10_nt*)(S2569C2*), ABISELECT(8,4), "S2569C1");
    check_base_class_offset(lv, (S2569C2*), 0, "S2569C1");
    check_field_offset(lv, s2569c1f0, ABISELECT(64,52), "S2569C1.s2569c1f0");
    check_field_offset(lv, s2569c1f1, ABISELECT(72,56), "S2569C1.s2569c1f1");
    test_class_info(&lv, &cd_S2569C1);
    dp->~S2569C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2569C1(Test_S2569C1, "S2569C1", ABISELECT(80,60));

#else // __cplusplus

extern void _ZN7S2569C1C1Ev();
extern void _ZN7S2569C1D1Ev();
Name_Map name_map_S2569C1[] = {
  NSPAIR(_ZN7S2569C1C1Ev),
  NSPAIR(_ZN7S2569C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S2569C2;
extern VTBL_ENTRY _ZTI7S2569C2[];
extern  VTBL_ENTRY _ZTV7S2569C2[];
static Base_Class bases_S2569C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2569C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2569C1[];
extern void _ZN7S2569C1D1Ev();
extern void _ZN7S2569C1D0Ev();
extern void _ZN7S2569C23v12Ev();
extern void _ZN7S2569C23v13Ev();
extern void _ZN7S2569C23v14Ev();
extern void _ZN7S2569C23v15Ev();
extern void _ZN7S2569C23v16Ev();
extern void _ZN7S2569C23v17Ev();
extern void _ZN7S2569C23v18Ev();
extern void _ZN7S2569C23v19Ev();
extern void _ZN7S2569C23v20Ev();
extern void _ZN7S2569C23v21Ev();
extern void _ZN7S2569C23v22Ev();
extern void _ZN7S2569C23v23Ev();
extern void _ZN7S2569C23v24Ev();
extern void _ZN7S2569C23v25Ev();
extern void _ZN7S2569C12v1Ev();
extern void _ZN7S2569C12v2Ev();
extern void _ZN7S2569C12v3Ev();
extern void _ZN7S2569C12v4Ev();
extern void _ZN7S2569C12v5Ev();
extern void _ZN7S2569C12v6Ev();
extern void _ZN7S2569C12v7Ev();
extern void _ZN7S2569C12v8Ev();
extern void _ZN7S2569C12v9Ev();
extern void _ZN7S2569C13v10Ev();
extern void _ZN7S2569C13v11Ev();
static  VTBL_ENTRY vtc_S2569C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2569C1[0]),
  (VTBL_ENTRY)&_ZN7S2569C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2569C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v23Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v24Ev,
  (VTBL_ENTRY)&_ZN7S2569C23v25Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v8Ev,
  (VTBL_ENTRY)&_ZN7S2569C12v9Ev,
  (VTBL_ENTRY)&_ZN7S2569C13v10Ev,
  (VTBL_ENTRY)&_ZN7S2569C13v11Ev,
};
extern VTBL_ENTRY _ZTI7S2569C1[];
extern  VTBL_ENTRY _ZTV7S2569C1[];
Class_Descriptor cd_S2569C1 = {  "S2569C1", // class name
  bases_S2569C1, 2,
  &(vtc_S2569C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,60), // object size
  NSPAIRA(_ZTI7S2569C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2569C1),29, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual 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  S5583C4  {
  virtual void  v1(); // _ZN7S5583C42v1Ev
  ~S5583C4(); // tgen
  S5583C4(); // tgen
};
//SIG(-1 S5583C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN7S5583C4C1Ev();
extern void _ZN7S5583C4D1Ev();
Name_Map name_map_S5583C4[] = {
  NSPAIR(_ZN7S5583C4C1Ev),
  NSPAIR(_ZN7S5583C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5583C4[];
extern void _ZN7S5583C42v1Ev();
static  VTBL_ENTRY vtc_S5583C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C4[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
};
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
Class_Descriptor cd_S5583C4 = {  "S5583C4", // class name
  0,0,//no base classes
  &(vtc_S5583C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5583C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5583C4),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  S5583C3  : virtual S5583C4 {
  virtual  ~S5583C3(); // _ZN7S5583C3D2Ev
  S5583C3(); // tgen
};
//SIG(-1 S5583C3) C1{ VBC2{ v1} vd}


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

static void Test_S5583C3()
{
  extern Class_Descriptor cd_S5583C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S5583C3, buf);
    S5583C3 *dp, &lv = *(dp=new (buf) S5583C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S5583C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5583C3)");
    check_base_class_offset(lv, (S5583C4*), 0, "S5583C3");
    test_class_info(&lv, &cd_S5583C3);
    dp->~S5583C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C3(Test_S5583C3, "S5583C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S5583C3C1Ev();
extern void _ZN7S5583C3D2Ev();
Name_Map name_map_S5583C3[] = {
  NSPAIR(_ZN7S5583C3C1Ev),
  NSPAIR(_ZN7S5583C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
static Base_Class bases_S5583C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5583C4,    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 _ZTI7S5583C3[];
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C3D1Ev();
extern void _ZN7S5583C3D0Ev();
static  VTBL_ENTRY vtc_S5583C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C3[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C3D0Ev,
};
extern VTBL_ENTRY _ZTV7S5583C3[];
static  VTT_ENTRY vtt_S5583C3[] = {
  {&(_ZTV7S5583C3[4]),  4,7},
  {&(_ZTV7S5583C3[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S5583C3[];
extern  VTBL_ENTRY _ZTV7S5583C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C3[];
Class_Descriptor cd_S5583C3 = {  "S5583C3", // class name
  bases_S5583C3, 1,
  &(vtc_S5583C3[0]), // expected_vtbl_contents
  &(vtt_S5583C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5583C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5583C3),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5583C3),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  S5583C5  : S5583C4 , virtual S9624C48 {
  int s5583c5f0:23;
  virtual  ~S5583C5(); // _ZN7S5583C5D2Ev
  S5583C5(); // tgen
};
//SIG(-1 S5583C5) C1{ BC2{ v1} VBC3{ m} vd Fi:23}


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

static void Test_S5583C5()
{
  extern Class_Descriptor cd_S5583C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S5583C5, buf);
    S5583C5 *dp, &lv = *(dp=new (buf) S5583C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5583C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5583C5)");
    check_base_class_offset(lv, (S5583C4*), 0, "S5583C5");
    check_base_class_offset(lv, (S9624C48*), 0, "S5583C5");
    set_bf_and_test(lv, s5583c5f0, ABISELECT(8,4), 0, 23, 1, "S5583C5");
    set_bf_and_test(lv, s5583c5f0, ABISELECT(8,4), 0, 23, hide_sll(1LL<<22), "S5583C5");
    test_class_info(&lv, &cd_S5583C5);
    dp->~S5583C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C5(Test_S5583C5, "S5583C5", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S5583C5C1Ev();
extern void _ZN7S5583C5D2Ev();
Name_Map name_map_S5583C5[] = {
  NSPAIR(_ZN7S5583C5C1Ev),
  NSPAIR(_ZN7S5583C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S5583C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5583C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S5583C5[];
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C5D1Ev();
extern void _ZN7S5583C5D0Ev();
static  VTBL_ENTRY vtc_S5583C5[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C5[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C5D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C5D0Ev,
};
extern VTBL_ENTRY _ZTV7S5583C5[];
static  VTT_ENTRY vtt_S5583C5[] = {
  {&(_ZTV7S5583C5[3]),  3,6},
};
extern VTBL_ENTRY _ZTI7S5583C5[];
extern  VTBL_ENTRY _ZTV7S5583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C5[];
Class_Descriptor cd_S5583C5 = {  "S5583C5", // class name
  bases_S5583C5, 2,
  &(vtc_S5583C5[0]), // expected_vtbl_contents
  &(vtt_S5583C5[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S5583C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S5583C5),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5583C5),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  S5583C10  : S9624C48 {
  ::S9624C39 s5583c10f0;
  ::S9624C48 s5583c10f1;
};
//SIG(-1 S5583C10) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S5583C10()
{
  extern Class_Descriptor cd_S5583C10;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S5583C10, buf);
    S5583C10 &lv = *(new (buf) S5583C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S5583C10)");
    check2(__alignof__(lv), 1, "__alignof__(S5583C10)");
    check_base_class_offset(lv, (S9624C48*), 0, "S5583C10");
    check_field_offset(lv, s5583c10f0, 0, "S5583C10.s5583c10f0");
    check_field_offset(lv, s5583c10f1, 1, "S5583C10.s5583c10f1");
    test_class_info(&lv, &cd_S5583C10);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C10(Test_S5583C10, "S5583C10", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S5583C11  : S9624C39 , virtual S20948C7_nt {
  virtual  ~S5583C11(); // _ZN8S5583C11D2Ev
  S5583C11(); // tgen
};
//SIG(-1 S5583C11) C1{ BC2{ m} VBC3{ vd m FD} vd}


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

static void Test_S5583C11()
{
  extern Class_Descriptor cd_S5583C11;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S5583C11, buf);
    S5583C11 *dp, &lv = *(dp=new (buf) S5583C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S5583C11)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5583C11)");
    check_base_class_offset(lv, (S9624C39*), 0, "S5583C11");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(16,4), "S5583C11");
    test_class_info(&lv, &cd_S5583C11);
    dp->~S5583C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C11(Test_S5583C11, "S5583C11", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S5583C11C1Ev();
extern void _ZN8S5583C11D2Ev();
Name_Map name_map_S5583C11[] = {
  NSPAIR(_ZN8S5583C11C1Ev),
  NSPAIR(_ZN8S5583C11D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
static Base_Class bases_S5583C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(16,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S5583C11[];
extern void _ZN8S5583C11D1Ev();
extern void _ZN8S5583C11D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev)();
extern void ABISELECT(_ZThn16_N8S5583C11D1Ev,_ZThn4_N8S5583C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev)();
extern void ABISELECT(_ZThn16_N8S5583C11D0Ev,_ZThn4_N8S5583C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5583C11[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&_ZN8S5583C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5583C11D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev),
};
extern VTBL_ENTRY _ZTV8S5583C11[];
static  VTT_ENTRY vtt_S5583C11[] = {
  {&(_ZTV8S5583C11[3]),  3,10},
  {&(_ZTV8S5583C11[8]),  8,10},
};
extern VTBL_ENTRY _ZTI8S5583C11[];
extern  VTBL_ENTRY _ZTV8S5583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5583C11[];
static VTBL_ENTRY alt_thunk_names123[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S5583C11D0Ev,_ZThn4_N8S5583C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S5583C11D1Ev,_ZThn4_N8S5583C11D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5583C11 = {  "S5583C11", // class name
  bases_S5583C11, 2,
  &(vtc_S5583C11[0]), // expected_vtbl_contents
  &(vtt_S5583C11[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S5583C11),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S5583C11),10, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S5583C11),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names123,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5583C8  : S9624C39 , S5583C10 , virtual S5583C11 , virtual S5583C4 {
  void *s5583c8f0;
  ~S5583C8(); // tgen
  S5583C8(); // tgen
};
//SIG(-1 S5583C8) C1{ BC2{ m} BC3{ BC4{ m} FC2 FC4} VBC5{ BC2 VBC6{ vd m FD} vd} VBC7{ v1} Fp}


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

static void Test_S5583C8()
{
  extern Class_Descriptor cd_S5583C8;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S5583C8, buf);
    S5583C8 *dp, &lv = *(dp=new (buf) S5583C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S5583C8)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5583C8)");
    /*is_ambiguous_... S5583C8::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), ABISELECT(8,4), "S5583C8");
    check_base_class_offset(lv, (S9624C48*)(S5583C10*), ABISELECT(9,5), "S5583C8");
    check_base_class_offset(lv, (S5583C10*), ABISELECT(9,5), "S5583C8");
    check_base_class_offset(lv, (S9624C39*)(S5583C11*), 0, "S5583C8");
    check_base_class_offset(lv, (S20948C7_nt*)(S5583C11*), ABISELECT(32,12), "S5583C8");
    check_base_class_offset(lv, (S5583C11*), 0, "S5583C8");
    check_base_class_offset(lv, (S5583C4*), ABISELECT(64,28), "S5583C8");
    check_field_offset(lv, s5583c8f0, ABISELECT(16,8), "S5583C8.s5583c8f0");
    test_class_info(&lv, &cd_S5583C8);
    dp->~S5583C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C8(Test_S5583C8, "S5583C8", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN7S5583C8C1Ev();
extern void _ZN7S5583C8D1Ev();
Name_Map name_map_S5583C8[] = {
  NSPAIR(_ZN7S5583C8C1Ev),
  NSPAIR(_ZN7S5583C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S5583C10;
extern VTBL_ENTRY _ZTI8S5583C10[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S5583C11;
extern VTBL_ENTRY _ZTI8S5583C11[];
extern  VTBL_ENTRY _ZTV8S5583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5583C11[];
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
static Base_Class bases_S5583C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5583C10,    ABISELECT(9,5), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C7_nt,    ABISELECT(32,12), //bcp->offset
    8, //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
    5, //immediately_derived
  0, 1},
  {&cd_S5583C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5583C4,    ABISELECT(64,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S5583C8[];
extern void _ZN7S5583C8D1Ev();
extern void _ZN7S5583C8D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S5583C8D1Ev,_ZThn12_N7S5583C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S5583C8D0Ev,_ZThn12_N7S5583C8D0Ev)() __attribute__((weak));
extern void _ZN7S5583C42v1Ev();
static  VTBL_ENTRY vtc_S5583C8[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&_ZN7S5583C8D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C8D0Ev,
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev),
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
};
extern VTBL_ENTRY _ZTV7S5583C8[];
extern void _ZN8S5583C11D1Ev();
extern void _ZN8S5583C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5583C11__7S5583C8[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&_ZN8S5583C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5583C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S5583C11D1Ev,_ZThn12_N8S5583C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S5583C11D0Ev,_ZThn12_N8S5583C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S5583C11__7S5583C8[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev),
};
static  VTT_ENTRY vtt_S5583C8[] = {
  {&(_ZTV7S5583C8[6]),  6,17},
  {&(_ZTV7S5583C8[6]),  6,17},
  {&(_ZTV7S5583C8[11]),  11,17},
  {&(_ZTV7S5583C8[16]),  16,17},
  {&(_tg__ZTV8S5583C11__7S5583C8[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S5583C11__7S5583C8[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5583C8[];
extern  VTBL_ENTRY _ZTV7S5583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C8[];
static VTBL_ENTRY alt_thunk_names124[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5583C11D0Ev,_ZThn12_N8S5583C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5583C11D1Ev,_ZThn12_N8S5583C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S5583C8D0Ev,_ZThn12_N7S5583C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S5583C8D1Ev,_ZThn12_N7S5583C8D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5583C8 = {  "S5583C8", // class name
  bases_S5583C8, 7,
  &(vtc_S5583C8[0]), // expected_vtbl_contents
  &(vtt_S5583C8[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI7S5583C8),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5583C8),17, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5583C8),6, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names124,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5583C13  : S5583C4 {
  ~S5583C13(); // tgen
  S5583C13(); // tgen
};
//SIG(-1 S5583C13) C1{ BC2{ v1}}


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

static void Test_S5583C13()
{
  extern Class_Descriptor cd_S5583C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S5583C13, buf);
    S5583C13 *dp, &lv = *(dp=new (buf) S5583C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S5583C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5583C13)");
    check_base_class_offset(lv, (S5583C4*), 0, "S5583C13");
    test_class_info(&lv, &cd_S5583C13);
    dp->~S5583C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C13(Test_S5583C13, "S5583C13", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S5583C13C1Ev();
extern void _ZN8S5583C13D1Ev();
Name_Map name_map_S5583C13[] = {
  NSPAIR(_ZN8S5583C13C1Ev),
  NSPAIR(_ZN8S5583C13D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
static Base_Class bases_S5583C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5583C4,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S5583C13[];
extern void _ZN7S5583C42v1Ev();
static  VTBL_ENTRY vtc_S5583C13[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S5583C13[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
};
extern VTBL_ENTRY _ZTI8S5583C13[];
extern  VTBL_ENTRY _ZTV8S5583C13[];
Class_Descriptor cd_S5583C13 = {  "S5583C13", // class name
  bases_S5583C13, 1,
  &(vtc_S5583C13[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S5583C13),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S5583C13),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5583C7  : virtual S5583C8 , virtual S5583C3 , S5583C13 , virtual S20948C8 {
  ::S20948C12 s5583c7f0;
  ~S5583C7(); // tgen
  S5583C7(); // tgen
};
//SIG(-1 S5583C7) C1{ VBC2{ BC3{ m} BC4{ BC5{ m} FC3 FC5} VBC6{ BC3 VBC7{ vd m FD} vd} VBC8{ v1} Fp} VBC9{ VBC8 vd} BC10{ BC8} VBC11{ m Fc[7]} FC12{ BC11 VBC13{ BC5 VBC7 vd} VBC5 vd}}


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

static void Test_S5583C7()
{
  extern Class_Descriptor cd_S5583C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,20)];
    init_test(&cd_S5583C7, buf);
    S5583C7 *dp, &lv = *(dp=new (buf) S5583C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,76), "sizeof(S5583C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5583C7)");
    /*is_ambiguous_... S5583C8::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S5583C8*), ABISELECT(88,40), "S5583C7");
    check_base_class_offset(lv, (S9624C48*)(S5583C10*)(S5583C8*), ABISELECT(89,41), "S5583C7");
    check_base_class_offset(lv, (S5583C10*)(S5583C8*), ABISELECT(89,41), "S5583C7");
    check_base_class_offset(lv, (S9624C39*)(S5583C11*), ABISELECT(80,36), "S5583C7");
    check_base_class_offset(lv, (S20948C7_nt*)(S5583C11*), ABISELECT(112,48), "S5583C7");
    check_base_class_offset(lv, (S5583C11*)(S5583C8*), ABISELECT(80,36), "S5583C7");
    check_base_class_offset(lv, (S5583C4*)(S5583C8*), ABISELECT(144,64), "S5583C7");
    check_base_class_offset(lv, (S5583C4*)(S5583C3*), ABISELECT(144,64), "S5583C7");
    check_base_class_offset(lv, (S5583C8*), ABISELECT(80,36), "S5583C7");
    check_base_class_offset(lv, (S5583C3*), ABISELECT(144,64), "S5583C7");
    check_base_class_offset(lv, (S5583C4*)(S5583C13*), 0, "S5583C7");
    check_base_class_offset(lv, (S5583C13*), 0, "S5583C7");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(152,68), "S5583C7");
    check_field_offset(lv, s5583c7f0, ABISELECT(16,4), "S5583C7.s5583c7f0");
    test_class_info(&lv, &cd_S5583C7);
    dp->~S5583C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C7(Test_S5583C7, "S5583C7", ABISELECT(160,76));

#else // __cplusplus

extern void _ZN7S5583C7C1Ev();
extern void _ZN7S5583C7D1Ev();
Name_Map name_map_S5583C7[] = {
  NSPAIR(_ZN7S5583C7C1Ev),
  NSPAIR(_ZN7S5583C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S5583C10;
extern VTBL_ENTRY _ZTI8S5583C10[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S5583C11;
extern VTBL_ENTRY _ZTI8S5583C11[];
extern  VTBL_ENTRY _ZTV8S5583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5583C11[];
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
extern Class_Descriptor cd_S5583C8;
extern VTBL_ENTRY _ZTI7S5583C8[];
extern  VTBL_ENTRY _ZTV7S5583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C8[];
extern Class_Descriptor cd_S5583C3;
extern VTBL_ENTRY _ZTI7S5583C3[];
extern  VTBL_ENTRY _ZTV7S5583C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C3[];
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
extern Class_Descriptor cd_S5583C13;
extern VTBL_ENTRY _ZTI8S5583C13[];
extern  VTBL_ENTRY _ZTV8S5583C13[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S5583C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(89,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S5583C10,    ABISELECT(89,41), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    5, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(112,48), //bcp->offset
    19, //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
    5, //immediately_derived
  0, 1},
  {&cd_S5583C11,    ABISELECT(80,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S5583C4,    ABISELECT(144,64), //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
    7, //immediately_derived
  0, 1},
  {&cd_S5583C8,    ABISELECT(80,36), //bcp->offset
    11, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5583C3,    ABISELECT(144,64), //bcp->offset
    24, //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_S5583C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S5583C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S20948C8,    ABISELECT(152,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},
  {0}};
extern VTBL_ENTRY _ZTI7S5583C7[];
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C7D1Ev();
extern void _ZN7S5583C7D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S5583C7D1Ev,_ZTv0_n16_N7S5583C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S5583C7D1Ev,_ZThn36_N7S5583C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5583C7D0Ev,_ZTv0_n16_N7S5583C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S5583C7D0Ev,_ZThn36_N7S5583C7D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C7D1Ev,_ZTv0_n12_N7S5583C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S5583C7D1Ev,_ZThn48_N7S5583C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C7D0Ev,_ZTv0_n12_N7S5583C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S5583C7D0Ev,_ZThn48_N7S5583C7D0Ev)() __attribute__((weak));
extern void _ZN7S5583C42v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S5583C7D1Ev,_ZTv0_n20_N7S5583C7D1Ev)();
extern void ABISELECT(_ZThn144_N7S5583C7D1Ev,_ZThn64_N7S5583C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S5583C7D0Ev,_ZTv0_n20_N7S5583C7D0Ev)();
extern void ABISELECT(_ZThn144_N7S5583C7D0Ev,_ZThn64_N7S5583C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5583C7[] = {
  ABISELECT(152,68),
  ABISELECT(144,64),
  ABISELECT(144,64),
  ABISELECT(112,48),
  ABISELECT(80,36),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C7D0Ev,
  ABISELECT(64,28),
  0,
  ABISELECT(-80,-36),
  ABISELECT(32,12),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C7D1Ev,_ZTv0_n16_N7S5583C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C7D0Ev,_ZTv0_n16_N7S5583C7D0Ev),
  ABISELECT(-112,-48),
  ABISELECT(-112,-48),
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C7D1Ev,_ZTv0_n12_N7S5583C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C7D0Ev,_ZTv0_n12_N7S5583C7D0Ev),
  ABISELECT(-144,-64),
  0,
  0,
  ABISELECT(-144,-64),
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C7D1Ev,_ZTv0_n20_N7S5583C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C7D0Ev,_ZTv0_n20_N7S5583C7D0Ev),
};
extern VTBL_ENTRY _ZTV7S5583C7[];
extern void ABISELECT(_ZTv0_n32_N7S5583C8D1Ev,_ZTv0_n16_N7S5583C8D1Ev)();
extern void _ZN7S5583C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5583C8D0Ev,_ZTv0_n16_N7S5583C8D0Ev)();
extern void _ZN7S5583C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5583C8__7S5583C7[] = {
  ABISELECT(64,28),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C8D1Ev,_ZTv0_n16_N7S5583C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C8D0Ev,_ZTv0_n16_N7S5583C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S5583C8D1Ev,_ZThn12_N7S5583C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S5583C8D0Ev,_ZThn12_N7S5583C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S5583C8__7S5583C7[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev),
};
extern void _ZN7S5583C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5583C4__7S5583C8__7S5583C7[] = {
  0,
  ABISELECT(-64,-28),
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
};
extern void _ZN8S5583C11D1Ev();
extern void _ZN8S5583C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5583C11__7S5583C7[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&_ZN8S5583C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5583C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S5583C11D1Ev,_ZThn12_N8S5583C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S5583C11D0Ev,_ZThn12_N8S5583C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S5583C11__7S5583C7[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev),
};
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C3D1Ev();
extern void _ZN7S5583C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5583C3__7S5583C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C3[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C3D0Ev,
};
static  VTT_ENTRY vtt_S5583C7[] = {
  {&(_ZTV7S5583C7[8]),  8,32},
  {&(_ZTV7S5583C7[17]),  17,32},
  {&(_ZTV7S5583C7[17]),  17,32},
  {&(_ZTV7S5583C7[22]),  22,32},
  {&(_ZTV7S5583C7[29]),  29,32},
  {&(_ZTV7S5583C7[29]),  29,32},
  {&(_tg__ZTV7S5583C8__7S5583C7[6]),  6,8},
  {&(_tg__ZTV7S5583C8__7S5583C7[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__7S5583C8__7S5583C7[3]),  3,5},
  {&(_tg__ZTV7S5583C4__7S5583C8__7S5583C7[3]),  3,4},
  {&(_tg__ZTV8S5583C11__7S5583C7[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S5583C11__7S5583C7[3]),  3,5},
  {&(_tg__ZTV7S5583C3__7S5583C7[4]),  4,7},
  {&(_tg__ZTV7S5583C3__7S5583C7[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S5583C7[];
extern  VTBL_ENTRY _ZTV7S5583C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C7[];
static VTBL_ENTRY alt_thunk_names125[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5583C11D0Ev,_ZThn12_N8S5583C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5583C11D1Ev,_ZThn12_N8S5583C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S5583C8D0Ev,_ZThn12_N7S5583C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S5583C8D1Ev,_ZThn12_N7S5583C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C8D0Ev,_ZTv0_n16_N7S5583C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S5583C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C8D1Ev,_ZTv0_n16_N7S5583C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S5583C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S5583C7D0Ev,_ZTv0_n20_N7S5583C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5583C7D0Ev,_ZThn64_N7S5583C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S5583C7D1Ev,_ZTv0_n20_N7S5583C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5583C7D1Ev,_ZThn64_N7S5583C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C7D0Ev,_ZTv0_n12_N7S5583C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S5583C7D0Ev,_ZThn48_N7S5583C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C7D1Ev,_ZTv0_n12_N7S5583C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S5583C7D1Ev,_ZThn48_N7S5583C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C7D0Ev,_ZTv0_n16_N7S5583C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S5583C7D0Ev,_ZThn36_N7S5583C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C7D1Ev,_ZTv0_n16_N7S5583C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S5583C7D1Ev,_ZThn36_N7S5583C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5583C7 = {  "S5583C7", // class name
  bases_S5583C7, 12,
  &(vtc_S5583C7[0]), // expected_vtbl_contents
  &(vtt_S5583C7[0]), // expected_vtt_contents
  ABISELECT(160,76), // object size
  NSPAIRA(_ZTI7S5583C7),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5583C7),32, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5583C7),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names125,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5583C1  : S20948C8 , virtual S5583C3 , virtual S5583C5 , S5583C7 {
  char s5583c1f0;
  virtual  ~S5583C1(); // _ZN7S5583C1D2Ev
  S5583C1(); // tgen
};
//SIG(1 S5583C1) C1{ BC2{ m Fc[7]} VBC3{ VBC4{ v1} vd} VBC5{ BC4 VBC6{ m} vd Fi:23} BC7{ VBC8{ BC9{ m} BC10{ BC6 FC9 FC6} VBC11{ BC9 VBC12{ vd m FD} vd} VBC4 Fp} VBC3 BC13{ BC4} VBC2 FC14{ BC2 VBC15{ BC6 VBC12 vd} VBC6 vd}} vd Fc}


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

static void Test_S5583C1()
{
  extern Class_Descriptor cd_S5583C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(13,24)];
    init_test(&cd_S5583C1, buf);
    S5583C1 *dp, &lv = *(dp=new (buf) S5583C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(192,92), "sizeof(S5583C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5583C1)");
    /*is_ambiguous_... S5583C1::S20948C8 */ AMB_check_base_class_offset(lv, (S20948C8*), ABISELECT(80,36), "S5583C1");
    check_base_class_offset(lv, (S5583C4*)(S5583C3*), ABISELECT(88,44), "S5583C1");
    check_base_class_offset(lv, (S5583C4*)(S5583C8*), ABISELECT(88,44), "S5583C1");
    check_base_class_offset(lv, (S5583C3*), ABISELECT(88,44), "S5583C1");
    check_base_class_offset(lv, (S5583C3*)(S5583C7*), ABISELECT(88,44), "S5583C1");
    check_base_class_offset(lv, (S5583C4*)(S5583C5*), ABISELECT(96,48), "S5583C1");
    check_base_class_offset(lv, (S9624C48*)(S5583C5*), 0, "S5583C1");
    check_base_class_offset(lv, (S5583C5*), ABISELECT(96,48), "S5583C1");
    /*is_ambiguous_... S5583C8::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S5583C8*), ABISELECT(120,60), "S5583C1");
    check_base_class_offset(lv, (S9624C48*)(S5583C10*)(S5583C8*), ABISELECT(121,61), "S5583C1");
    check_base_class_offset(lv, (S5583C10*)(S5583C8*), ABISELECT(121,61), "S5583C1");
    check_base_class_offset(lv, (S9624C39*)(S5583C11*), ABISELECT(112,56), "S5583C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S5583C11*), ABISELECT(144,68), "S5583C1");
    check_base_class_offset(lv, (S5583C11*)(S5583C8*), ABISELECT(112,56), "S5583C1");
    check_base_class_offset(lv, (S5583C8*)(S5583C7*), ABISELECT(112,56), "S5583C1");
    check_base_class_offset(lv, (S5583C4*)(S5583C13*)(S5583C7*), 0, "S5583C1");
    check_base_class_offset(lv, (S5583C13*)(S5583C7*), 0, "S5583C1");
    check_base_class_offset(lv, (S20948C8*)(S5583C7*), ABISELECT(176,84), "S5583C1");
    check_base_class_offset(lv, (S5583C7*), 0, "S5583C1");
    check_field_offset(lv, s5583c1f0, ABISELECT(87,43), "S5583C1.s5583c1f0");
    test_class_info(&lv, &cd_S5583C1);
    dp->~S5583C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5583C1(Test_S5583C1, "S5583C1", ABISELECT(192,92));

#else // __cplusplus

extern void _ZN7S5583C1C1Ev();
extern void _ZN7S5583C1D2Ev();
Name_Map name_map_S5583C1[] = {
  NSPAIR(_ZN7S5583C1C1Ev),
  NSPAIR(_ZN7S5583C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
extern Class_Descriptor cd_S5583C3;
extern VTBL_ENTRY _ZTI7S5583C3[];
extern  VTBL_ENTRY _ZTV7S5583C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C3[];
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S5583C5;
extern VTBL_ENTRY _ZTI7S5583C5[];
extern  VTBL_ENTRY _ZTV7S5583C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C5[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S5583C10;
extern VTBL_ENTRY _ZTI8S5583C10[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S5583C11;
extern VTBL_ENTRY _ZTI8S5583C11[];
extern  VTBL_ENTRY _ZTV8S5583C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S5583C11[];
extern Class_Descriptor cd_S5583C8;
extern VTBL_ENTRY _ZTI7S5583C8[];
extern  VTBL_ENTRY _ZTV7S5583C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C8[];
extern Class_Descriptor cd_S5583C4;
extern VTBL_ENTRY _ZTI7S5583C4[];
extern  VTBL_ENTRY _ZTV7S5583C4[];
extern Class_Descriptor cd_S5583C13;
extern VTBL_ENTRY _ZTI8S5583C13[];
extern  VTBL_ENTRY _ZTV8S5583C13[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S5583C7;
extern VTBL_ENTRY _ZTI7S5583C7[];
extern  VTBL_ENTRY _ZTV7S5583C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C7[];
static Base_Class bases_S5583C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    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
    -1, //immediately_derived
  1, 0},
  {&cd_S5583C4,    ABISELECT(88,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S5583C3,    ABISELECT(88,44), //bcp->offset
    13, //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
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S5583C4,    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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S5583C5,    ABISELECT(96,48), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    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
    12, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S5583C10,    ABISELECT(121,61), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S9624C39,    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
    11, //immediately_derived
  0, 0},
  {&cd_S20948C7_nt,    ABISELECT(144,68), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    13, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S5583C11,    ABISELECT(112,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    21, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S5583C8,    ABISELECT(112,56), //bcp->offset
    29, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    11, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S5583C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    14, //immediately_derived
  0, 0},
  {&cd_S5583C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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
    16, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    16, //immediately_derived
  0, 1},
  {&cd_S5583C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5583C1[];
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C1D1Ev();
extern void _ZN7S5583C1D0Ev();
extern void _ZN7S5583C42v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S5583C1D1Ev,_ZTv0_n20_N7S5583C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S5583C1D1Ev,_ZThn44_N7S5583C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S5583C1D0Ev,_ZTv0_n20_N7S5583C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S5583C1D0Ev,_ZThn44_N7S5583C1D0Ev)() __attribute__((weak));
extern void _ZN7S5583C42v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S5583C1D1Ev,_ZTv0_n20_N7S5583C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S5583C1D1Ev,_ZThn48_N7S5583C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S5583C1D0Ev,_ZTv0_n20_N7S5583C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S5583C1D0Ev,_ZThn48_N7S5583C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5583C1D1Ev,_ZTv0_n16_N7S5583C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S5583C1D1Ev,_ZThn56_N7S5583C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5583C1D0Ev,_ZTv0_n16_N7S5583C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S5583C1D0Ev,_ZThn56_N7S5583C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C1D1Ev,_ZTv0_n12_N7S5583C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S5583C1D1Ev,_ZThn68_N7S5583C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C1D0Ev,_ZTv0_n12_N7S5583C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S5583C1D0Ev,_ZThn68_N7S5583C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S5583C1[] = {
  0,
  ABISELECT(96,48),
  ABISELECT(176,84),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(144,68),
  ABISELECT(112,56),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C1[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C1D0Ev,
  ABISELECT(-88,-44),
  0,
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S5583C1[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C1D1Ev,_ZTv0_n20_N7S5583C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C1D0Ev,_ZTv0_n20_N7S5583C1D0Ev),
  ABISELECT(-96,-48),
  0,
  ABISELECT(-96,-48),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI7S5583C1[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C1D1Ev,_ZTv0_n20_N7S5583C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C1D0Ev,_ZTv0_n20_N7S5583C1D0Ev),
  ABISELECT(-24,-12),
  0,
  ABISELECT(-112,-56),
  ABISELECT(32,12),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S5583C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C1D1Ev,_ZTv0_n16_N7S5583C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C1D0Ev,_ZTv0_n16_N7S5583C1D0Ev),
  ABISELECT(-144,-68),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI7S5583C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C1D1Ev,_ZTv0_n12_N7S5583C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C1D0Ev,_ZTv0_n12_N7S5583C1D0Ev),
};
extern VTBL_ENTRY _ZTV7S5583C1[];
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C7D1Ev();
extern void _ZN7S5583C7D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5583C7__7S5583C1[] = {
  ABISELECT(176,84),
  ABISELECT(88,44),
  ABISELECT(88,44),
  ABISELECT(144,68),
  ABISELECT(112,56),
  ABISELECT(112,56),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C7D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C7D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S5583C7D1Ev,_ZTv0_n16_N7S5583C7D1Ev)();
extern void ABISELECT(_ZThn112_N7S5583C7D1Ev,_ZThn56_N7S5583C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5583C7D0Ev,_ZTv0_n16_N7S5583C7D0Ev)();
extern void ABISELECT(_ZThn112_N7S5583C7D0Ev,_ZThn56_N7S5583C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5583C8__7S5583C7__7S5583C1[] = {
  ABISELECT(-24,-12),
  0,
  ABISELECT(-112,-56),
  ABISELECT(32,12),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C7D1Ev,_ZTv0_n16_N7S5583C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C7D0Ev,_ZTv0_n16_N7S5583C7D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S5583C7D1Ev,_ZTv0_n12_N7S5583C7D1Ev)();
extern void ABISELECT(_ZThn144_N7S5583C7D1Ev,_ZThn68_N7S5583C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C7D0Ev,_ZTv0_n12_N7S5583C7D0Ev)();
extern void ABISELECT(_ZThn144_N7S5583C7D0Ev,_ZThn68_N7S5583C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S5583C7__7S5583C1[] = {
  ABISELECT(-144,-68),
  ABISELECT(-144,-68),
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C7D1Ev,_ZTv0_n12_N7S5583C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C7D0Ev,_ZTv0_n12_N7S5583C7D0Ev),
};
extern void _ZN7S5583C42v1Ev();
extern void ABISELECT(_ZTv0_n40_N7S5583C7D1Ev,_ZTv0_n20_N7S5583C7D1Ev)();
extern void ABISELECT(_ZThn88_N7S5583C7D1Ev,_ZThn44_N7S5583C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N7S5583C7D0Ev,_ZTv0_n20_N7S5583C7D0Ev)();
extern void ABISELECT(_ZThn88_N7S5583C7D0Ev,_ZThn44_N7S5583C7D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5583C3__7S5583C7__7S5583C1[] = {
  ABISELECT(-88,-44),
  0,
  0,
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S5583C7[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C7D1Ev,_ZTv0_n20_N7S5583C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N7S5583C7D0Ev,_ZTv0_n20_N7S5583C7D0Ev),
};
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C3D1Ev();
extern void _ZN7S5583C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5583C3__7S5583C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C3[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C3D0Ev,
};
extern void _ZN7S5583C42v1Ev();
extern void _ZN7S5583C5D1Ev();
extern void _ZN7S5583C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S5583C5__7S5583C1[] = {
  ABISELECT(-96,-48),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C5[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
  (VTBL_ENTRY)&_ZN7S5583C5D1Ev,
  (VTBL_ENTRY)&_ZN7S5583C5D0Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S5583C8D1Ev,_ZTv0_n16_N7S5583C8D1Ev)();
extern void _ZN7S5583C8D1Ev() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S5583C8D0Ev,_ZTv0_n16_N7S5583C8D0Ev)();
extern void _ZN7S5583C8D0Ev() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S5583C8__7S5583C1[] = {
  ABISELECT(-24,-12),
  0,
  0,
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C8D1Ev,_ZTv0_n16_N7S5583C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S5583C8D0Ev,_ZTv0_n16_N7S5583C8D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev)();
extern void ABISELECT(_ZThn32_N7S5583C8D1Ev,_ZThn12_N7S5583C8D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev)();
extern void ABISELECT(_ZThn32_N7S5583C8D0Ev,_ZThn12_N7S5583C8D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__7S5583C8__7S5583C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev),
};
extern void _ZN7S5583C42v1Ev();
static  VTBL_ENTRY _tg__ZTV7S5583C4__7S5583C8__7S5583C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI7S5583C8[0]),
  (VTBL_ENTRY)&_ZN7S5583C42v1Ev,
};
extern void _ZN8S5583C11D1Ev();
extern void _ZN8S5583C11D0Ev();
static  VTBL_ENTRY _tg__ZTV8S5583C11__7S5583C1[] = {
  ABISELECT(32,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&_ZN8S5583C11D1Ev,
  (VTBL_ENTRY)&_ZN8S5583C11D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev)();
extern void ABISELECT(_ZThn32_N8S5583C11D1Ev,_ZThn12_N8S5583C11D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev)();
extern void ABISELECT(_ZThn32_N8S5583C11D0Ev,_ZThn12_N8S5583C11D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S5583C11__7S5583C1[] = {
  ABISELECT(-32,-12),
  ABISELECT(-32,-12),
  (VTBL_ENTRY)&(_ZTI8S5583C11[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev),
};
static  VTT_ENTRY vtt_S5583C1[] = {
  {&(_ZTV7S5583C1[10]),  10,42},
  {&(_tg__ZTV7S5583C7__7S5583C1[8]),  8,11},
  {&(_tg__ZTV7S5583C8__7S5583C7__7S5583C1[6]),  6,8},
  {&(_tg__ZTV7S5583C8__7S5583C7__7S5583C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__7S5583C7__7S5583C1[3]),  3,5},
  {&(_tg__ZTV7S5583C3__7S5583C7__7S5583C1[5]),  5,8},
  {&(_tg__ZTV7S5583C3__7S5583C7__7S5583C1[5]),  5,8},
  {&(_ZTV7S5583C1[18]),  18,42},
  {&(_ZTV7S5583C1[18]),  18,42},
  {&(_ZTV7S5583C1[26]),  26,42},
  {&(_ZTV7S5583C1[35]),  35,42},
  {&(_ZTV7S5583C1[35]),  35,42},
  {&(_ZTV7S5583C1[40]),  40,42},
  {&(_tg__ZTV7S5583C3__7S5583C1[4]),  4,7},
  {&(_tg__ZTV7S5583C3__7S5583C1[4]),  4,7},
  {&(_tg__ZTV7S5583C5__7S5583C1[3]),  3,6},
  {&(_tg__ZTV7S5583C8__7S5583C1[6]),  6,8},
  {&(_tg__ZTV7S5583C8__7S5583C1[6]),  6,8},
  {&(_tg__ZTV11S20948C7_nt__7S5583C8__7S5583C1[3]),  3,5},
  {&(_tg__ZTV7S5583C4__7S5583C8__7S5583C1[3]),  3,4},
  {&(_tg__ZTV8S5583C11__7S5583C1[3]),  3,5},
  {&(_tg__ZTV11S20948C7_nt__8S5583C11__7S5583C1[3]),  3,5},
};
extern VTBL_ENTRY _ZTI7S5583C1[];
extern  VTBL_ENTRY _ZTV7S5583C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S5583C1[];
static VTBL_ENTRY alt_thunk_names126[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D0Ev,_ZTv0_n12_N8S5583C11D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5583C11D0Ev,_ZThn12_N8S5583C11D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S5583C11D1Ev,_ZTv0_n12_N8S5583C11D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S5583C11D1Ev,_ZThn12_N8S5583C11D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C8D0Ev,_ZTv0_n12_N7S5583C8D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S5583C8D0Ev,_ZThn12_N7S5583C8D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C8D1Ev,_ZTv0_n12_N7S5583C8D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S5583C8D1Ev,_ZThn12_N7S5583C8D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C8D0Ev,_ZTv0_n16_N7S5583C8D0Ev), // 
  (VTBL_ENTRY)_ZN7S5583C8D0Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C8D1Ev,_ZTv0_n16_N7S5583C8D1Ev), // 
  (VTBL_ENTRY)_ZN7S5583C8D1Ev,
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S5583C7D0Ev,_ZTv0_n20_N7S5583C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S5583C7D0Ev,_ZThn44_N7S5583C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S5583C7D1Ev,_ZTv0_n20_N7S5583C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S5583C7D1Ev,_ZThn44_N7S5583C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C7D0Ev,_ZTv0_n12_N7S5583C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5583C7D0Ev,_ZThn68_N7S5583C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C7D1Ev,_ZTv0_n12_N7S5583C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5583C7D1Ev,_ZThn68_N7S5583C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C7D0Ev,_ZTv0_n16_N7S5583C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S5583C7D0Ev,_ZThn56_N7S5583C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C7D1Ev,_ZTv0_n16_N7S5583C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S5583C7D1Ev,_ZThn56_N7S5583C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C1D0Ev,_ZTv0_n12_N7S5583C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5583C1D0Ev,_ZThn68_N7S5583C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S5583C1D1Ev,_ZTv0_n12_N7S5583C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S5583C1D1Ev,_ZThn68_N7S5583C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C1D0Ev,_ZTv0_n16_N7S5583C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S5583C1D0Ev,_ZThn56_N7S5583C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S5583C1D1Ev,_ZTv0_n16_N7S5583C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S5583C1D1Ev,_ZThn56_N7S5583C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S5583C1D0Ev,_ZTv0_n20_N7S5583C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S5583C1D0Ev,_ZThn48_N7S5583C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S5583C1D0Ev,_ZThn44_N7S5583C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N7S5583C1D1Ev,_ZTv0_n20_N7S5583C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S5583C1D1Ev,_ZThn48_N7S5583C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S5583C1D1Ev,_ZThn44_N7S5583C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S5583C1 = {  "S5583C1", // class name
  bases_S5583C1, 17,
  &(vtc_S5583C1[0]), // expected_vtbl_contents
  &(vtt_S5583C1[0]), // expected_vtt_contents
  ABISELECT(192,92), // object size
  NSPAIRA(_ZTI7S5583C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV7S5583C1),42, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S5583C1),22, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names126,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6698C2_nt  {
  virtual void  v3(); // _ZN10S6698C2_nt2v3Ev
  virtual void  v4(); // _ZN10S6698C2_nt2v4Ev
  virtual void  v5(); // _ZN10S6698C2_nt2v5Ev
  virtual void  v6(); // _ZN10S6698C2_nt2v6Ev
  virtual void  v7(); // _ZN10S6698C2_nt2v7Ev
  virtual void  v8(); // _ZN10S6698C2_nt2v8Ev
  ~S6698C2_nt(); // tgen
  S6698C2_nt(); // tgen
};
//SIG(-1 S6698C2_nt) C1{ v1 v2 v3 v4 v5 v6}


void  S6698C2_nt ::v3(){vfunc_called(this, "_ZN10S6698C2_nt2v3Ev");}
void  S6698C2_nt ::v4(){vfunc_called(this, "_ZN10S6698C2_nt2v4Ev");}
void  S6698C2_nt ::v5(){vfunc_called(this, "_ZN10S6698C2_nt2v5Ev");}
void  S6698C2_nt ::v6(){vfunc_called(this, "_ZN10S6698C2_nt2v6Ev");}
void  S6698C2_nt ::v7(){vfunc_called(this, "_ZN10S6698C2_nt2v7Ev");}
void  S6698C2_nt ::v8(){vfunc_called(this, "_ZN10S6698C2_nt2v8Ev");}
S6698C2_nt ::~S6698C2_nt(){ note_dtor("S6698C2_nt", this);} // tgen
S6698C2_nt ::S6698C2_nt(){ note_ctor("S6698C2_nt", this);} // tgen

//skip512 S6698C2_nt

#else // __cplusplus

extern void _ZN10S6698C2_ntC1Ev();
extern void _ZN10S6698C2_ntD1Ev();
Name_Map name_map_S6698C2_nt[] = {
  NSPAIR(_ZN10S6698C2_ntC1Ev),
  NSPAIR(_ZN10S6698C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6698C2_nt[];
extern void _ZN10S6698C2_nt2v3Ev();
extern void _ZN10S6698C2_nt2v4Ev();
extern void _ZN10S6698C2_nt2v5Ev();
extern void _ZN10S6698C2_nt2v6Ev();
extern void _ZN10S6698C2_nt2v7Ev();
extern void _ZN10S6698C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S6698C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6698C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S6698C2_nt[];
VTBL_ENTRY *P__ZTI10S6698C2_nt = _ZTI10S6698C2_nt; 
extern  VTBL_ENTRY _ZTV10S6698C2_nt[];
Class_Descriptor cd_S6698C2_nt = {  "S6698C2_nt", // class name
  0,0,//no base classes
  &(vtc_S6698C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S6698C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6698C2_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6698C4  {
  short s6698c4f0;
  virtual void  v9(); // _ZN7S6698C42v9Ev
  virtual void  v10(); // _ZN7S6698C43v10Ev
  virtual void  v11(); // _ZN7S6698C43v11Ev
  virtual void  v12(); // _ZN7S6698C43v12Ev
  virtual void  v13(); // _ZN7S6698C43v13Ev
  virtual void  v14(); // _ZN7S6698C43v14Ev
  virtual void  v15(); // _ZN7S6698C43v15Ev
  virtual void  v16(); // _ZN7S6698C43v16Ev
  ~S6698C4(); // tgen
  S6698C4(); // tgen
};
//SIG(-1 S6698C4) C1{ v1 v2 v3 v4 v5 v6 v7 v8 Fs}


void  S6698C4 ::v9(){vfunc_called(this, "_ZN7S6698C42v9Ev");}
void  S6698C4 ::v10(){vfunc_called(this, "_ZN7S6698C43v10Ev");}
void  S6698C4 ::v11(){vfunc_called(this, "_ZN7S6698C43v11Ev");}
void  S6698C4 ::v12(){vfunc_called(this, "_ZN7S6698C43v12Ev");}
void  S6698C4 ::v13(){vfunc_called(this, "_ZN7S6698C43v13Ev");}
void  S6698C4 ::v14(){vfunc_called(this, "_ZN7S6698C43v14Ev");}
void  S6698C4 ::v15(){vfunc_called(this, "_ZN7S6698C43v15Ev");}
void  S6698C4 ::v16(){vfunc_called(this, "_ZN7S6698C43v16Ev");}
S6698C4 ::~S6698C4(){ note_dtor("S6698C4", this);} // tgen
S6698C4 ::S6698C4(){ note_ctor("S6698C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6698C4C1Ev();
extern void _ZN7S6698C4D1Ev();
Name_Map name_map_S6698C4[] = {
  NSPAIR(_ZN7S6698C4C1Ev),
  NSPAIR(_ZN7S6698C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6698C4[];
extern void _ZN7S6698C42v9Ev();
extern void _ZN7S6698C43v10Ev();
extern void _ZN7S6698C43v11Ev();
extern void _ZN7S6698C43v12Ev();
extern void _ZN7S6698C43v13Ev();
extern void _ZN7S6698C43v14Ev();
extern void _ZN7S6698C43v15Ev();
extern void _ZN7S6698C43v16Ev();
static  VTBL_ENTRY vtc_S6698C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6698C4[0]),
  (VTBL_ENTRY)&_ZN7S6698C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v13Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v14Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v16Ev,
};
extern VTBL_ENTRY _ZTI7S6698C4[];
extern  VTBL_ENTRY _ZTV7S6698C4[];
Class_Descriptor cd_S6698C4 = {  "S6698C4", // class name
  0,0,//no base classes
  &(vtc_S6698C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6698C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6698C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6698C3  : virtual S6698C4 {
  char s6698c3f0;
  int s6698c3f1;
  char s6698c3f2:8;
  virtual void  v17(); // _ZN7S6698C33v17Ev
  virtual void  v18(); // _ZN7S6698C33v18Ev
  virtual void  v19(); // _ZN7S6698C33v19Ev
  virtual void  v20(); // _ZN7S6698C33v20Ev
  virtual void  v21(); // _ZN7S6698C33v21Ev
  ~S6698C3(); // tgen
  S6698C3(); // tgen
};
//SIG(-1 S6698C3) C1{ VBC2{ v6 v7 v8 v9 v10 v11 v12 v13 Fs} v1 v2 v3 v4 v5 Fc Fi Fc:8}


void  S6698C3 ::v17(){vfunc_called(this, "_ZN7S6698C33v17Ev");}
void  S6698C3 ::v18(){vfunc_called(this, "_ZN7S6698C33v18Ev");}
void  S6698C3 ::v19(){vfunc_called(this, "_ZN7S6698C33v19Ev");}
void  S6698C3 ::v20(){vfunc_called(this, "_ZN7S6698C33v20Ev");}
void  S6698C3 ::v21(){vfunc_called(this, "_ZN7S6698C33v21Ev");}
S6698C3 ::~S6698C3(){ note_dtor("S6698C3", this);} // tgen
S6698C3 ::S6698C3(){ note_ctor("S6698C3", this);} // tgen

static void Test_S6698C3()
{
  extern Class_Descriptor cd_S6698C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6698C3, buf);
    S6698C3 *dp, &lv = *(dp=new (buf) S6698C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6698C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6698C3)");
    check_base_class_offset(lv, (S6698C4*), ABISELECT(24,16), "S6698C3");
    check_field_offset(lv, s6698c3f0, ABISELECT(8,4), "S6698C3.s6698c3f0");
    check_field_offset(lv, s6698c3f1, ABISELECT(12,8), "S6698C3.s6698c3f1");
    set_bf_and_test(lv, s6698c3f2, ABISELECT(16,12), 0, 8, 1, "S6698C3");
    set_bf_and_test(lv, s6698c3f2, ABISELECT(16,12), 0, 8, hide_sll(1LL<<7), "S6698C3");
    test_class_info(&lv, &cd_S6698C3);
    dp->~S6698C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6698C3(Test_S6698C3, "S6698C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6698C3C1Ev();
extern void _ZN7S6698C3D1Ev();
Name_Map name_map_S6698C3[] = {
  NSPAIR(_ZN7S6698C3C1Ev),
  NSPAIR(_ZN7S6698C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6698C4;
extern VTBL_ENTRY _ZTI7S6698C4[];
extern  VTBL_ENTRY _ZTV7S6698C4[];
static Base_Class bases_S6698C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6698C4,    ABISELECT(24,16), //bcp->offset
    8, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6698C3[];
extern void _ZN7S6698C33v17Ev();
extern void _ZN7S6698C33v18Ev();
extern void _ZN7S6698C33v19Ev();
extern void _ZN7S6698C33v20Ev();
extern void _ZN7S6698C33v21Ev();
extern void _ZN7S6698C42v9Ev();
extern void _ZN7S6698C43v10Ev();
extern void _ZN7S6698C43v11Ev();
extern void _ZN7S6698C43v12Ev();
extern void _ZN7S6698C43v13Ev();
extern void _ZN7S6698C43v14Ev();
extern void _ZN7S6698C43v15Ev();
extern void _ZN7S6698C43v16Ev();
static  VTBL_ENTRY vtc_S6698C3[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6698C3[0]),
  (VTBL_ENTRY)&_ZN7S6698C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v18Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v19Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v20Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6698C3[0]),
  (VTBL_ENTRY)&_ZN7S6698C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v13Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v14Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v16Ev,
};
extern VTBL_ENTRY _ZTV7S6698C3[];
static  VTT_ENTRY vtt_S6698C3[] = {
  {&(_ZTV7S6698C3[3]),  3,26},
  {&(_ZTV7S6698C3[18]),  18,26},
};
extern VTBL_ENTRY _ZTI7S6698C3[];
extern  VTBL_ENTRY _ZTV7S6698C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6698C3[];
Class_Descriptor cd_S6698C3 = {  "S6698C3", // class name
  bases_S6698C3, 1,
  &(vtc_S6698C3[0]), // expected_vtbl_contents
  &(vtt_S6698C3[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6698C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6698C3),26, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6698C3),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  S6698C6_nt  {
  void *s6698c6f0;
  virtual void  v22(); // _ZN10S6698C6_nt3v22Ev
  virtual void  v23(); // _ZN10S6698C6_nt3v23Ev
  virtual void  v24(); // _ZN10S6698C6_nt3v24Ev
  virtual void  v25(); // _ZN10S6698C6_nt3v25Ev
  ~S6698C6_nt(); // tgen
  S6698C6_nt(); // tgen
};
//SIG(-1 S6698C6_nt) C1{ v1 v2 v3 v4 Fp}


void  S6698C6_nt ::v22(){vfunc_called(this, "_ZN10S6698C6_nt3v22Ev");}
void  S6698C6_nt ::v23(){vfunc_called(this, "_ZN10S6698C6_nt3v23Ev");}
void  S6698C6_nt ::v24(){vfunc_called(this, "_ZN10S6698C6_nt3v24Ev");}
void  S6698C6_nt ::v25(){vfunc_called(this, "_ZN10S6698C6_nt3v25Ev");}
S6698C6_nt ::~S6698C6_nt(){ note_dtor("S6698C6_nt", this);} // tgen
S6698C6_nt ::S6698C6_nt(){ note_ctor("S6698C6_nt", this);} // tgen

//skip512 S6698C6_nt

#else // __cplusplus

extern void _ZN10S6698C6_ntC1Ev();
extern void _ZN10S6698C6_ntD1Ev();
Name_Map name_map_S6698C6_nt[] = {
  NSPAIR(_ZN10S6698C6_ntC1Ev),
  NSPAIR(_ZN10S6698C6_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S6698C6_nt[];
extern void _ZN10S6698C6_nt3v22Ev();
extern void _ZN10S6698C6_nt3v23Ev();
extern void _ZN10S6698C6_nt3v24Ev();
extern void _ZN10S6698C6_nt3v25Ev();
static  VTBL_ENTRY vtc_S6698C6_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S6698C6_nt[0]),
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v25Ev,
};
extern VTBL_ENTRY _ZTI10S6698C6_nt[];
VTBL_ENTRY *P__ZTI10S6698C6_nt = _ZTI10S6698C6_nt; 
extern  VTBL_ENTRY _ZTV10S6698C6_nt[];
Class_Descriptor cd_S6698C6_nt = {  "S6698C6_nt", // class name
  0,0,//no base classes
  &(vtc_S6698C6_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S6698C6_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S6698C6_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  S6698C5  : S6698C6_nt , S6698C4 {
  long s6698c5f0;
  virtual void  v26(); // _ZN7S6698C53v26Ev
  virtual void  v27(); // _ZN7S6698C53v27Ev
  virtual void  v28(); // _ZN7S6698C53v28Ev
  virtual void  v29(); // _ZN7S6698C53v29Ev
  virtual void  v30(); // _ZN7S6698C53v30Ev
  virtual void  v31(); // _ZN7S6698C53v31Ev
  virtual void  v32(); // _ZN7S6698C53v32Ev
  ~S6698C5(); // tgen
  S6698C5(); // tgen
};
//SIG(-1 S6698C5) C1{ BC2{ v8 v9 v10 v11 Fp} BC3{ v12 v13 v14 v15 v16 v17 v18 v19 Fs} v1 v2 v3 v4 v5 v6 v7 Fl}


void  S6698C5 ::v26(){vfunc_called(this, "_ZN7S6698C53v26Ev");}
void  S6698C5 ::v27(){vfunc_called(this, "_ZN7S6698C53v27Ev");}
void  S6698C5 ::v28(){vfunc_called(this, "_ZN7S6698C53v28Ev");}
void  S6698C5 ::v29(){vfunc_called(this, "_ZN7S6698C53v29Ev");}
void  S6698C5 ::v30(){vfunc_called(this, "_ZN7S6698C53v30Ev");}
void  S6698C5 ::v31(){vfunc_called(this, "_ZN7S6698C53v31Ev");}
void  S6698C5 ::v32(){vfunc_called(this, "_ZN7S6698C53v32Ev");}
S6698C5 ::~S6698C5(){ note_dtor("S6698C5", this);} // tgen
S6698C5 ::S6698C5(){ note_ctor("S6698C5", this);} // tgen

static void Test_S6698C5()
{
  extern Class_Descriptor cd_S6698C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S6698C5, buf);
    S6698C5 *dp, &lv = *(dp=new (buf) S6698C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S6698C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6698C5)");
    check_base_class_offset(lv, (S6698C6_nt*), 0, "S6698C5");
    check_base_class_offset(lv, (S6698C4*), ABISELECT(16,8), "S6698C5");
    check_field_offset(lv, s6698c5f0, ABISELECT(32,16), "S6698C5.s6698c5f0");
    test_class_info(&lv, &cd_S6698C5);
    dp->~S6698C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6698C5(Test_S6698C5, "S6698C5", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S6698C5C1Ev();
extern void _ZN7S6698C5D1Ev();
Name_Map name_map_S6698C5[] = {
  NSPAIR(_ZN7S6698C5C1Ev),
  NSPAIR(_ZN7S6698C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6698C6_nt;
extern VTBL_ENTRY _ZTI10S6698C6_nt[];
extern  VTBL_ENTRY _ZTV10S6698C6_nt[];
extern Class_Descriptor cd_S6698C4;
extern VTBL_ENTRY _ZTI7S6698C4[];
extern  VTBL_ENTRY _ZTV7S6698C4[];
static Base_Class bases_S6698C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6698C6_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6698C4,    ABISELECT(16,8), //bcp->offset
    13, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6698C5[];
extern void _ZN10S6698C6_nt3v22Ev();
extern void _ZN10S6698C6_nt3v23Ev();
extern void _ZN10S6698C6_nt3v24Ev();
extern void _ZN10S6698C6_nt3v25Ev();
extern void _ZN7S6698C53v26Ev();
extern void _ZN7S6698C53v27Ev();
extern void _ZN7S6698C53v28Ev();
extern void _ZN7S6698C53v29Ev();
extern void _ZN7S6698C53v30Ev();
extern void _ZN7S6698C53v31Ev();
extern void _ZN7S6698C53v32Ev();
extern void _ZN7S6698C42v9Ev();
extern void _ZN7S6698C43v10Ev();
extern void _ZN7S6698C43v11Ev();
extern void _ZN7S6698C43v12Ev();
extern void _ZN7S6698C43v13Ev();
extern void _ZN7S6698C43v14Ev();
extern void _ZN7S6698C43v15Ev();
extern void _ZN7S6698C43v16Ev();
static  VTBL_ENTRY vtc_S6698C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6698C5[0]),
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v25Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v26Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v27Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v28Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v29Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v30Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v31Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v32Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6698C5[0]),
  (VTBL_ENTRY)&_ZN7S6698C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v13Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v14Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v16Ev,
};
extern VTBL_ENTRY _ZTI7S6698C5[];
extern  VTBL_ENTRY _ZTV7S6698C5[];
Class_Descriptor cd_S6698C5 = {  "S6698C5", // class name
  bases_S6698C5, 2,
  &(vtc_S6698C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S6698C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6698C5),23, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6698C1  : S6698C2_nt , virtual S6698C3 , S6698C5 {
  virtual void  v1(); // _ZN7S6698C12v1Ev
  virtual void  v2(); // _ZN7S6698C12v2Ev
  ~S6698C1(); // tgen
  S6698C1(); // tgen
};
//SIG(1 S6698C1) C1{ BC2{ v3 v4 v5 v6 v7 v8} VBC3{ VBC4{ v9 v10 v11 v12 v13 v14 v15 v16 Fs} v17 v18 v19 v20 v21 Fc Fi Fc:8} BC5{ BC6{ v22 v23 v24 v25 Fp} BC4 v26 v27 v28 v29 v30 v31 v32 Fl} v1 v2}


void  S6698C1 ::v1(){vfunc_called(this, "_ZN7S6698C12v1Ev");}
void  S6698C1 ::v2(){vfunc_called(this, "_ZN7S6698C12v2Ev");}
S6698C1 ::~S6698C1(){ note_dtor("S6698C1", this);} // tgen
S6698C1 ::S6698C1(){ note_ctor("S6698C1", this);} // tgen

static void Test_S6698C1()
{
  extern Class_Descriptor cd_S6698C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S6698C1, buf);
    S6698C1 *dp, &lv = *(dp=new (buf) S6698C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S6698C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6698C1)");
    check_base_class_offset(lv, (S6698C2_nt*), 0, "S6698C1");
    check_base_class_offset(lv, (S6698C4*)(S6698C3*), ABISELECT(72,40), "S6698C1");
    check_base_class_offset(lv, (S6698C3*), ABISELECT(48,24), "S6698C1");
    check_base_class_offset(lv, (S6698C6_nt*)(S6698C5*), ABISELECT(8,4), "S6698C1");
    check_base_class_offset(lv, (S6698C4*)(S6698C5*), ABISELECT(24,12), "S6698C1");
    check_base_class_offset(lv, (S6698C5*), ABISELECT(8,4), "S6698C1");
    test_class_info(&lv, &cd_S6698C1);
    dp->~S6698C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6698C1(Test_S6698C1, "S6698C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN7S6698C1C1Ev();
extern void _ZN7S6698C1D1Ev();
Name_Map name_map_S6698C1[] = {
  NSPAIR(_ZN7S6698C1C1Ev),
  NSPAIR(_ZN7S6698C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6698C2_nt;
extern VTBL_ENTRY _ZTI10S6698C2_nt[];
extern  VTBL_ENTRY _ZTV10S6698C2_nt[];
extern Class_Descriptor cd_S6698C4;
extern VTBL_ENTRY _ZTI7S6698C4[];
extern  VTBL_ENTRY _ZTV7S6698C4[];
extern Class_Descriptor cd_S6698C3;
extern VTBL_ENTRY _ZTI7S6698C3[];
extern  VTBL_ENTRY _ZTV7S6698C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6698C3[];
extern Class_Descriptor cd_S6698C6_nt;
extern VTBL_ENTRY _ZTI10S6698C6_nt[];
extern  VTBL_ENTRY _ZTV10S6698C6_nt[];
extern Class_Descriptor cd_S6698C4;
extern VTBL_ENTRY _ZTI7S6698C4[];
extern  VTBL_ENTRY _ZTV7S6698C4[];
extern Class_Descriptor cd_S6698C5;
extern VTBL_ENTRY _ZTI7S6698C5[];
extern  VTBL_ENTRY _ZTV7S6698C5[];
static Base_Class bases_S6698C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6698C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6698C4,    ABISELECT(72,40), //bcp->offset
    48, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S6698C3,    ABISELECT(48,24), //bcp->offset
    35, //bcp->virtual_function_table_offset
    8, //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_S6698C6_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_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_S6698C4,    ABISELECT(24,12), //bcp->offset
    25, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S6698C5,    ABISELECT(8,4), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6698C1[];
extern void _ZN10S6698C2_nt2v3Ev();
extern void _ZN10S6698C2_nt2v4Ev();
extern void _ZN10S6698C2_nt2v5Ev();
extern void _ZN10S6698C2_nt2v6Ev();
extern void _ZN10S6698C2_nt2v7Ev();
extern void _ZN10S6698C2_nt2v8Ev();
extern void _ZN7S6698C12v1Ev();
extern void _ZN7S6698C12v2Ev();
extern void _ZN10S6698C6_nt3v22Ev();
extern void _ZN10S6698C6_nt3v23Ev();
extern void _ZN10S6698C6_nt3v24Ev();
extern void _ZN10S6698C6_nt3v25Ev();
extern void _ZN7S6698C53v26Ev();
extern void _ZN7S6698C53v27Ev();
extern void _ZN7S6698C53v28Ev();
extern void _ZN7S6698C53v29Ev();
extern void _ZN7S6698C53v30Ev();
extern void _ZN7S6698C53v31Ev();
extern void _ZN7S6698C53v32Ev();
extern void _ZN7S6698C42v9Ev();
extern void _ZN7S6698C43v10Ev();
extern void _ZN7S6698C43v11Ev();
extern void _ZN7S6698C43v12Ev();
extern void _ZN7S6698C43v13Ev();
extern void _ZN7S6698C43v14Ev();
extern void _ZN7S6698C43v15Ev();
extern void _ZN7S6698C43v16Ev();
extern void _ZN7S6698C33v17Ev();
extern void _ZN7S6698C33v18Ev();
extern void _ZN7S6698C33v19Ev();
extern void _ZN7S6698C33v20Ev();
extern void _ZN7S6698C33v21Ev();
extern void _ZN7S6698C42v9Ev();
extern void _ZN7S6698C43v10Ev();
extern void _ZN7S6698C43v11Ev();
extern void _ZN7S6698C43v12Ev();
extern void _ZN7S6698C43v13Ev();
extern void _ZN7S6698C43v14Ev();
extern void _ZN7S6698C43v15Ev();
extern void _ZN7S6698C43v16Ev();
static  VTBL_ENTRY vtc_S6698C1[] = {
  ABISELECT(72,40),
  ABISELECT(48,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6698C1[0]),
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S6698C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S6698C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6698C12v2Ev,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S6698C1[0]),
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v22Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v23Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v24Ev,
  (VTBL_ENTRY)&_ZN10S6698C6_nt3v25Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v26Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v27Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v28Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v29Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v30Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v31Ev,
  (VTBL_ENTRY)&_ZN7S6698C53v32Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6698C1[0]),
  (VTBL_ENTRY)&_ZN7S6698C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v13Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v14Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v16Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,16),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S6698C1[0]),
  (VTBL_ENTRY)&_ZN7S6698C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v18Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v19Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v20Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-40),
  (VTBL_ENTRY)&(_ZTI7S6698C1[0]),
  (VTBL_ENTRY)&_ZN7S6698C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v13Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v14Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v16Ev,
};
extern VTBL_ENTRY _ZTV7S6698C1[];
extern void _ZN7S6698C33v17Ev();
extern void _ZN7S6698C33v18Ev();
extern void _ZN7S6698C33v19Ev();
extern void _ZN7S6698C33v20Ev();
extern void _ZN7S6698C33v21Ev();
static  VTBL_ENTRY _tg__ZTV7S6698C3__7S6698C1[] = {
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S6698C3[0]),
  (VTBL_ENTRY)&_ZN7S6698C33v17Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v18Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v19Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v20Ev,
  (VTBL_ENTRY)&_ZN7S6698C33v21Ev,
};
extern void _ZN7S6698C42v9Ev();
extern void _ZN7S6698C43v10Ev();
extern void _ZN7S6698C43v11Ev();
extern void _ZN7S6698C43v12Ev();
extern void _ZN7S6698C43v13Ev();
extern void _ZN7S6698C43v14Ev();
extern void _ZN7S6698C43v15Ev();
extern void _ZN7S6698C43v16Ev();
static  VTBL_ENTRY _tg__ZTV7S6698C4__7S6698C3__7S6698C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI7S6698C3[0]),
  (VTBL_ENTRY)&_ZN7S6698C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v10Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v11Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v12Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v13Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v14Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v15Ev,
  (VTBL_ENTRY)&_ZN7S6698C43v16Ev,
};
static  VTT_ENTRY vtt_S6698C1[] = {
  {&(_ZTV7S6698C1[4]),  4,66},
  {&(_ZTV7S6698C1[43]),  43,66},
  {&(_ZTV7S6698C1[58]),  58,66},
  {&(_tg__ZTV7S6698C3__7S6698C1[3]),  3,8},
  {&(_tg__ZTV7S6698C4__7S6698C3__7S6698C1[10]),  10,18},
};
extern VTBL_ENTRY _ZTI7S6698C1[];
extern  VTBL_ENTRY _ZTV7S6698C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6698C1[];
Class_Descriptor cd_S6698C1 = {  "S6698C1", // class name
  bases_S6698C1, 6,
  &(vtc_S6698C1[0]), // expected_vtbl_contents
  &(vtt_S6698C1[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI7S6698C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6698C1),66, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6698C1),5, //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  S4904C3_nt  {
  void *s4904c3f0;
  char s4904c3f1;
  int s4904c3f2[4];
  void *s4904c3f3;
  virtual  ~S4904C3_nt(); // _ZN10S4904C3_ntD1Ev
  virtual void  v3(); // _ZN10S4904C3_nt2v3Ev
  virtual void  v4(); // _ZN10S4904C3_nt2v4Ev
  virtual void  v5(); // _ZN10S4904C3_nt2v5Ev
  virtual void  v6(); // _ZN10S4904C3_nt2v6Ev
  S4904C3_nt(); // tgen
};
//SIG(-1 S4904C3_nt) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S4904C3_nt ::~S4904C3_nt(){ note_dtor("S4904C3_nt", this);}
void  S4904C3_nt ::v3(){vfunc_called(this, "_ZN10S4904C3_nt2v3Ev");}
void  S4904C3_nt ::v4(){vfunc_called(this, "_ZN10S4904C3_nt2v4Ev");}
void  S4904C3_nt ::v5(){vfunc_called(this, "_ZN10S4904C3_nt2v5Ev");}
void  S4904C3_nt ::v6(){vfunc_called(this, "_ZN10S4904C3_nt2v6Ev");}
S4904C3_nt ::S4904C3_nt(){ note_ctor("S4904C3_nt", this);} // tgen

//skip512 S4904C3_nt

#else // __cplusplus

extern void _ZN10S4904C3_ntC1Ev();
extern void _ZN10S4904C3_ntD1Ev();
Name_Map name_map_S4904C3_nt[] = {
  NSPAIR(_ZN10S4904C3_ntC1Ev),
  NSPAIR(_ZN10S4904C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S4904C3_nt[];
extern void _ZN10S4904C3_ntD1Ev();
extern void _ZN10S4904C3_ntD0Ev();
extern void _ZN10S4904C3_nt2v3Ev();
extern void _ZN10S4904C3_nt2v4Ev();
extern void _ZN10S4904C3_nt2v5Ev();
extern void _ZN10S4904C3_nt2v6Ev();
static  VTBL_ENTRY vtc_S4904C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4904C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S4904C3_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v6Ev,
};
extern VTBL_ENTRY _ZTI10S4904C3_nt[];
VTBL_ENTRY *P__ZTI10S4904C3_nt = _ZTI10S4904C3_nt; 
extern  VTBL_ENTRY _ZTV10S4904C3_nt[];
Class_Descriptor cd_S4904C3_nt = {  "S4904C3_nt", // class name
  0,0,//no base classes
  &(vtc_S4904C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S4904C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S4904C3_nt),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4904C2_nt  : S4904C3_nt {
  int s4904c2f0[3];
  virtual  ~S4904C2_nt(); // _ZN10S4904C2_ntD1Ev
  virtual void  v7(); // _ZN10S4904C2_nt2v7Ev
  virtual void  v8(); // _ZN10S4904C2_nt2v8Ev
  virtual void  v9(); // _ZN10S4904C2_nt2v9Ev
  S4904C2_nt(); // tgen
};
//SIG(-1 S4904C2_nt) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S4904C2_nt ::~S4904C2_nt(){ note_dtor("S4904C2_nt", this);}
void  S4904C2_nt ::v7(){vfunc_called(this, "_ZN10S4904C2_nt2v7Ev");}
void  S4904C2_nt ::v8(){vfunc_called(this, "_ZN10S4904C2_nt2v8Ev");}
void  S4904C2_nt ::v9(){vfunc_called(this, "_ZN10S4904C2_nt2v9Ev");}
S4904C2_nt ::S4904C2_nt(){ note_ctor("S4904C2_nt", this);} // tgen

//skip512 S4904C2_nt

#else // __cplusplus

extern void _ZN10S4904C2_ntC1Ev();
extern void _ZN10S4904C2_ntD1Ev();
Name_Map name_map_S4904C2_nt[] = {
  NSPAIR(_ZN10S4904C2_ntC1Ev),
  NSPAIR(_ZN10S4904C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4904C3_nt;
extern VTBL_ENTRY _ZTI10S4904C3_nt[];
extern  VTBL_ENTRY _ZTV10S4904C3_nt[];
static Base_Class bases_S4904C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4904C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S4904C2_nt[];
extern void _ZN10S4904C2_ntD1Ev();
extern void _ZN10S4904C2_ntD0Ev();
extern void _ZN10S4904C3_nt2v3Ev();
extern void _ZN10S4904C3_nt2v4Ev();
extern void _ZN10S4904C3_nt2v5Ev();
extern void _ZN10S4904C3_nt2v6Ev();
extern void _ZN10S4904C2_nt2v7Ev();
extern void _ZN10S4904C2_nt2v8Ev();
extern void _ZN10S4904C2_nt2v9Ev();
static  VTBL_ENTRY vtc_S4904C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S4904C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S4904C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_nt2v9Ev,
};
extern VTBL_ENTRY _ZTI10S4904C2_nt[];
VTBL_ENTRY *P__ZTI10S4904C2_nt = _ZTI10S4904C2_nt; 
extern  VTBL_ENTRY _ZTV10S4904C2_nt[];
Class_Descriptor cd_S4904C2_nt = {  "S4904C2_nt", // class name
  bases_S4904C2_nt, 1,
  &(vtc_S4904C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI10S4904C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S4904C2_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4904C10  {
  virtual  ~S4904C10(); // _ZN8S4904C10D1Ev
  virtual void  v11(); // _ZN8S4904C103v11Ev
  S4904C10(); // tgen
};
//SIG(-1 S4904C10) C1{ vd v1}


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

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

#else // __cplusplus

extern void _ZN8S4904C10C1Ev();
extern void _ZN8S4904C10D1Ev();
Name_Map name_map_S4904C10[] = {
  NSPAIR(_ZN8S4904C10C1Ev),
  NSPAIR(_ZN8S4904C10D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S4904C10[];
extern void _ZN8S4904C10D1Ev();
extern void _ZN8S4904C10D0Ev();
extern void _ZN8S4904C103v11Ev();
static  VTBL_ENTRY vtc_S4904C10[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S4904C10[0]),
  (VTBL_ENTRY)&_ZN8S4904C10D1Ev,
  (VTBL_ENTRY)&_ZN8S4904C10D0Ev,
  (VTBL_ENTRY)&_ZN8S4904C103v11Ev,
};
extern VTBL_ENTRY _ZTI8S4904C10[];
extern  VTBL_ENTRY _ZTV8S4904C10[];
Class_Descriptor cd_S4904C10 = {  "S4904C10", // class name
  0,0,//no base classes
  &(vtc_S4904C10[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S4904C10),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S4904C10),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  S4904C9  : S4904C10 {
  int s4904c9f0[5];
  virtual  ~S4904C9(); // _ZN7S4904C9D1Ev
  virtual void  v10(); // _ZN7S4904C93v10Ev
  S4904C9(); // tgen
};
//SIG(-1 S4904C9) C1{ BC2{ vd v2} vd v1 Fi[5]}


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

static void Test_S4904C9()
{
  extern Class_Descriptor cd_S4904C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S4904C9, buf);
    S4904C9 *dp, &lv = *(dp=new (buf) S4904C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S4904C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4904C9)");
    check_base_class_offset(lv, (S4904C10*), 0, "S4904C9");
    check_field_offset(lv, s4904c9f0, ABISELECT(8,4), "S4904C9.s4904c9f0");
    test_class_info(&lv, &cd_S4904C9);
    dp->~S4904C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4904C9(Test_S4904C9, "S4904C9", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S4904C9C1Ev();
extern void _ZN7S4904C9D1Ev();
Name_Map name_map_S4904C9[] = {
  NSPAIR(_ZN7S4904C9C1Ev),
  NSPAIR(_ZN7S4904C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4904C10;
extern VTBL_ENTRY _ZTI8S4904C10[];
extern  VTBL_ENTRY _ZTV8S4904C10[];
static Base_Class bases_S4904C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4904C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4904C9[];
extern void _ZN7S4904C9D1Ev();
extern void _ZN7S4904C9D0Ev();
extern void _ZN8S4904C103v11Ev();
extern void _ZN7S4904C93v10Ev();
static  VTBL_ENTRY vtc_S4904C9[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4904C9[0]),
  (VTBL_ENTRY)&_ZN7S4904C9D1Ev,
  (VTBL_ENTRY)&_ZN7S4904C9D0Ev,
  (VTBL_ENTRY)&_ZN8S4904C103v11Ev,
  (VTBL_ENTRY)&_ZN7S4904C93v10Ev,
};
extern VTBL_ENTRY _ZTI7S4904C9[];
extern  VTBL_ENTRY _ZTV7S4904C9[];
Class_Descriptor cd_S4904C9 = {  "S4904C9", // class name
  bases_S4904C9, 1,
  &(vtc_S4904C9[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S4904C9),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4904C9),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  S4904C1  : S4904C2_nt {
  int s4904c1f0[3];
  ::S10296C47_nt s4904c1f1[8];
  ::S10296C46_nt s4904c1f2[8];
  ::S9624C35 s4904c1f3;
  int s4904c1f4[5];
  ::S4904C9 s4904c1f5;
  virtual  ~S4904C1(); // _ZN7S4904C1D1Ev
  virtual void  v1(); // _ZN7S4904C12v1Ev
  virtual void  v2(); // _ZN7S4904C12v2Ev
  S4904C1(); // tgen
};
//SIG(1 S4904C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 Fp Fc Fi[4] Fp} vd v7 v8 v9 Fi[3]} vd v1 v2 Fi[3] FC4{ m FL}[8] FC5{ m FC4}[8] FC6{ m Fp Fi[2] FC7{ m}} Fi[5] FC8{ BC9{ vd v11} vd v10 Fi[5]}}


 S4904C1 ::~S4904C1(){ note_dtor("S4904C1", this);}
void  S4904C1 ::v1(){vfunc_called(this, "_ZN7S4904C12v1Ev");}
void  S4904C1 ::v2(){vfunc_called(this, "_ZN7S4904C12v2Ev");}
S4904C1 ::S4904C1(){ note_ctor("S4904C1", this);} // tgen

static void Test_S4904C1()
{
  extern Class_Descriptor cd_S4904C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,62)];
    init_test(&cd_S4904C1, buf);
    S4904C1 *dp, &lv = *(dp=new (buf) S4904C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,244), "sizeof(S4904C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4904C1)");
    check_base_class_offset(lv, (S4904C3_nt*)(S4904C2_nt*), 0, "S4904C1");
    check_base_class_offset(lv, (S4904C2_nt*), 0, "S4904C1");
    check_field_offset(lv, s4904c1f0, ABISELECT(60,44), "S4904C1.s4904c1f0");
    check_field_offset(lv, s4904c1f1, ABISELECT(72,56), "S4904C1.s4904c1f1");
    check_field_offset(lv, s4904c1f2, ABISELECT(136,120), "S4904C1.s4904c1f2");
    check_field_offset(lv, s4904c1f3, ABISELECT(200,184), "S4904C1.s4904c1f3");
    check_field_offset(lv, s4904c1f4, ABISELECT(224,200), "S4904C1.s4904c1f4");
    check_field_offset(lv, s4904c1f5, ABISELECT(248,220), "S4904C1.s4904c1f5");
    test_class_info(&lv, &cd_S4904C1);
    dp->~S4904C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4904C1(Test_S4904C1, "S4904C1", ABISELECT(280,244));

#else // __cplusplus

extern void _ZN7S4904C1C1Ev();
extern void _ZN7S4904C1D1Ev();
Name_Map name_map_S4904C1[] = {
  NSPAIR(_ZN7S4904C1C1Ev),
  NSPAIR(_ZN7S4904C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4904C3_nt;
extern VTBL_ENTRY _ZTI10S4904C3_nt[];
extern  VTBL_ENTRY _ZTV10S4904C3_nt[];
extern Class_Descriptor cd_S4904C2_nt;
extern VTBL_ENTRY _ZTI10S4904C2_nt[];
extern  VTBL_ENTRY _ZTV10S4904C2_nt[];
static Base_Class bases_S4904C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4904C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4904C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4904C1[];
extern void _ZN7S4904C1D1Ev();
extern void _ZN7S4904C1D0Ev();
extern void _ZN10S4904C3_nt2v3Ev();
extern void _ZN10S4904C3_nt2v4Ev();
extern void _ZN10S4904C3_nt2v5Ev();
extern void _ZN10S4904C3_nt2v6Ev();
extern void _ZN10S4904C2_nt2v7Ev();
extern void _ZN10S4904C2_nt2v8Ev();
extern void _ZN10S4904C2_nt2v9Ev();
extern void _ZN7S4904C12v1Ev();
extern void _ZN7S4904C12v2Ev();
static  VTBL_ENTRY vtc_S4904C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4904C1[0]),
  (VTBL_ENTRY)&_ZN7S4904C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4904C1D0Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN10S4904C3_nt2v6Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN10S4904C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN7S4904C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4904C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4904C1[];
extern  VTBL_ENTRY _ZTV7S4904C1[];
Class_Descriptor cd_S4904C1 = {  "S4904C1", // class name
  bases_S4904C1, 2,
  &(vtc_S4904C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,244), // object size
  NSPAIRA(_ZTI7S4904C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4904C1),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  S4903C3  {
  void *s4903c3f0;
  char s4903c3f1;
  int s4903c3f2[4];
  void *s4903c3f3;
  virtual  ~S4903C3(); // _ZN7S4903C3D1Ev
  virtual void  v3(); // _ZN7S4903C32v3Ev
  virtual void  v4(); // _ZN7S4903C32v4Ev
  virtual void  v5(); // _ZN7S4903C32v5Ev
  virtual void  v6(); // _ZN7S4903C32v6Ev
  S4903C3(); // tgen
};
//SIG(-1 S4903C3) C1{ vd v1 v2 v3 v4 Fp Fc Fi[4] Fp}


 S4903C3 ::~S4903C3(){ note_dtor("S4903C3", this);}
void  S4903C3 ::v3(){vfunc_called(this, "_ZN7S4903C32v3Ev");}
void  S4903C3 ::v4(){vfunc_called(this, "_ZN7S4903C32v4Ev");}
void  S4903C3 ::v5(){vfunc_called(this, "_ZN7S4903C32v5Ev");}
void  S4903C3 ::v6(){vfunc_called(this, "_ZN7S4903C32v6Ev");}
S4903C3 ::S4903C3(){ note_ctor("S4903C3", this);} // tgen

static void Test_S4903C3()
{
  extern Class_Descriptor cd_S4903C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4903C3, buf);
    S4903C3 *dp, &lv = *(dp=new (buf) S4903C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4903C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4903C3)");
    check_field_offset(lv, s4903c3f0, ABISELECT(8,4), "S4903C3.s4903c3f0");
    check_field_offset(lv, s4903c3f1, ABISELECT(16,8), "S4903C3.s4903c3f1");
    check_field_offset(lv, s4903c3f2, ABISELECT(20,12), "S4903C3.s4903c3f2");
    check_field_offset(lv, s4903c3f3, ABISELECT(40,28), "S4903C3.s4903c3f3");
    test_class_info(&lv, &cd_S4903C3);
    dp->~S4903C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4903C3(Test_S4903C3, "S4903C3", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4903C3C1Ev();
extern void _ZN7S4903C3D1Ev();
Name_Map name_map_S4903C3[] = {
  NSPAIR(_ZN7S4903C3C1Ev),
  NSPAIR(_ZN7S4903C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4903C3[];
extern void _ZN7S4903C3D1Ev();
extern void _ZN7S4903C3D0Ev();
extern void _ZN7S4903C32v3Ev();
extern void _ZN7S4903C32v4Ev();
extern void _ZN7S4903C32v5Ev();
extern void _ZN7S4903C32v6Ev();
static  VTBL_ENTRY vtc_S4903C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4903C3[0]),
  (VTBL_ENTRY)&_ZN7S4903C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4903C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S4903C3[];
extern  VTBL_ENTRY _ZTV7S4903C3[];
Class_Descriptor cd_S4903C3 = {  "S4903C3", // class name
  0,0,//no base classes
  &(vtc_S4903C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4903C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4903C3),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  S4903C2  : S4903C3 {
  int s4903c2f0[3];
  virtual  ~S4903C2(); // _ZN7S4903C2D1Ev
  virtual void  v7(); // _ZN7S4903C22v7Ev
  virtual void  v8(); // _ZN7S4903C22v8Ev
  virtual void  v9(); // _ZN7S4903C22v9Ev
  S4903C2(); // tgen
};
//SIG(-1 S4903C2) C1{ BC2{ vd v4 v5 v6 v7 Fp Fc Fi[4] Fp} vd v1 v2 v3 Fi[3]}


 S4903C2 ::~S4903C2(){ note_dtor("S4903C2", this);}
void  S4903C2 ::v7(){vfunc_called(this, "_ZN7S4903C22v7Ev");}
void  S4903C2 ::v8(){vfunc_called(this, "_ZN7S4903C22v8Ev");}
void  S4903C2 ::v9(){vfunc_called(this, "_ZN7S4903C22v9Ev");}
S4903C2 ::S4903C2(){ note_ctor("S4903C2", this);} // tgen

static void Test_S4903C2()
{
  extern Class_Descriptor cd_S4903C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,12)];
    init_test(&cd_S4903C2, buf);
    S4903C2 *dp, &lv = *(dp=new (buf) S4903C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,44), "sizeof(S4903C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4903C2)");
    check_base_class_offset(lv, (S4903C3*), 0, "S4903C2");
    check_field_offset(lv, s4903c2f0, ABISELECT(48,32), "S4903C2.s4903c2f0");
    test_class_info(&lv, &cd_S4903C2);
    dp->~S4903C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4903C2(Test_S4903C2, "S4903C2", ABISELECT(64,44));

#else // __cplusplus

extern void _ZN7S4903C2C1Ev();
extern void _ZN7S4903C2D1Ev();
Name_Map name_map_S4903C2[] = {
  NSPAIR(_ZN7S4903C2C1Ev),
  NSPAIR(_ZN7S4903C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4903C3;
extern VTBL_ENTRY _ZTI7S4903C3[];
extern  VTBL_ENTRY _ZTV7S4903C3[];
static Base_Class bases_S4903C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4903C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4903C2[];
extern void _ZN7S4903C2D1Ev();
extern void _ZN7S4903C2D0Ev();
extern void _ZN7S4903C32v3Ev();
extern void _ZN7S4903C32v4Ev();
extern void _ZN7S4903C32v5Ev();
extern void _ZN7S4903C32v6Ev();
extern void _ZN7S4903C22v7Ev();
extern void _ZN7S4903C22v8Ev();
extern void _ZN7S4903C22v9Ev();
static  VTBL_ENTRY vtc_S4903C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4903C2[0]),
  (VTBL_ENTRY)&_ZN7S4903C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4903C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4903C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4903C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4903C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S4903C2[];
extern  VTBL_ENTRY _ZTV7S4903C2[];
Class_Descriptor cd_S4903C2 = {  "S4903C2", // class name
  bases_S4903C2, 1,
  &(vtc_S4903C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,44), // object size
  NSPAIRA(_ZTI7S4903C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4903C2),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  S4903C4_nt  {
  long s4903c4f0;
  void  mf4903c4(); // _ZN10S4903C4_nt8mf4903c4Ev
};
//SIG(1 S4903C4_nt) C1{ m Fl}


void  S4903C4_nt ::mf4903c4(){}

//skip512 S4903C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S4903C1  : S4903C2 {
  int s4903c1f0[3];
  ::S4903C4_nt s4903c1f1[8];
  ::S10296C46_nt s4903c1f2[8];
  ::S9624C35 s4903c1f3;
  int s4903c1f4[5];
  ::S4904C9 s4903c1f5;
  virtual  ~S4903C1(); // _ZN7S4903C1D1Ev
  virtual void  v1(); // _ZN7S4903C12v1Ev
  virtual void  v2(); // _ZN7S4903C12v2Ev
  S4903C1(); // tgen
};
//SIG(1 S4903C1) C1{ BC2{ BC3{ vd v3 v4 v5 v6 Fp Fc Fi[4] Fp} vd v7 v8 v9 Fi[3]} vd v1 v2 Fi[3] FC4{ m Fl}[8] FC5{ m FC6{ m FL}}[8] FC7{ m Fp Fi[2] FC8{ m}} Fi[5] FC9{ BC10{ vd v11} vd v10 Fi[5]}}


 S4903C1 ::~S4903C1(){ note_dtor("S4903C1", this);}
void  S4903C1 ::v1(){vfunc_called(this, "_ZN7S4903C12v1Ev");}
void  S4903C1 ::v2(){vfunc_called(this, "_ZN7S4903C12v2Ev");}
S4903C1 ::S4903C1(){ note_ctor("S4903C1", this);} // tgen

static void Test_S4903C1()
{
  extern Class_Descriptor cd_S4903C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(36,54)];
    init_test(&cd_S4903C1, buf);
    S4903C1 *dp, &lv = *(dp=new (buf) S4903C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(280,212), "sizeof(S4903C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4903C1)");
    check_base_class_offset(lv, (S4903C3*)(S4903C2*), 0, "S4903C1");
    check_base_class_offset(lv, (S4903C2*), 0, "S4903C1");
    check_field_offset(lv, s4903c1f0, ABISELECT(60,44), "S4903C1.s4903c1f0");
    check_field_offset(lv, s4903c1f1, ABISELECT(72,56), "S4903C1.s4903c1f1");
    check_field_offset(lv, s4903c1f2, ABISELECT(136,88), "S4903C1.s4903c1f2");
    check_field_offset(lv, s4903c1f3, ABISELECT(200,152), "S4903C1.s4903c1f3");
    check_field_offset(lv, s4903c1f4, ABISELECT(224,168), "S4903C1.s4903c1f4");
    check_field_offset(lv, s4903c1f5, ABISELECT(248,188), "S4903C1.s4903c1f5");
    test_class_info(&lv, &cd_S4903C1);
    dp->~S4903C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4903C1(Test_S4903C1, "S4903C1", ABISELECT(280,212));

#else // __cplusplus

extern void _ZN7S4903C1C1Ev();
extern void _ZN7S4903C1D1Ev();
Name_Map name_map_S4903C1[] = {
  NSPAIR(_ZN7S4903C1C1Ev),
  NSPAIR(_ZN7S4903C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4903C3;
extern VTBL_ENTRY _ZTI7S4903C3[];
extern  VTBL_ENTRY _ZTV7S4903C3[];
extern Class_Descriptor cd_S4903C2;
extern VTBL_ENTRY _ZTI7S4903C2[];
extern  VTBL_ENTRY _ZTV7S4903C2[];
static Base_Class bases_S4903C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4903C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4903C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4903C1[];
extern void _ZN7S4903C1D1Ev();
extern void _ZN7S4903C1D0Ev();
extern void _ZN7S4903C32v3Ev();
extern void _ZN7S4903C32v4Ev();
extern void _ZN7S4903C32v5Ev();
extern void _ZN7S4903C32v6Ev();
extern void _ZN7S4903C22v7Ev();
extern void _ZN7S4903C22v8Ev();
extern void _ZN7S4903C22v9Ev();
extern void _ZN7S4903C12v1Ev();
extern void _ZN7S4903C12v2Ev();
static  VTBL_ENTRY vtc_S4903C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4903C1[0]),
  (VTBL_ENTRY)&_ZN7S4903C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4903C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4903C32v6Ev,
  (VTBL_ENTRY)&_ZN7S4903C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4903C22v8Ev,
  (VTBL_ENTRY)&_ZN7S4903C22v9Ev,
  (VTBL_ENTRY)&_ZN7S4903C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4903C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4903C1[];
extern  VTBL_ENTRY _ZTV7S4903C1[];
Class_Descriptor cd_S4903C1 = {  "S4903C1", // class name
  bases_S4903C1, 2,
  &(vtc_S4903C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(280,212), // object size
  NSPAIRA(_ZTI7S4903C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4903C1),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  S7115C2  {
  virtual void  v7(); // _ZN7S7115C22v7Ev
  virtual void  v8(); // _ZN7S7115C22v8Ev
  virtual void  v9(); // _ZN7S7115C22v9Ev
  ~S7115C2(); // tgen
  S7115C2(); // tgen
};
//SIG(-1 S7115C2) C1{ v1 v2 v3}


void  S7115C2 ::v7(){vfunc_called(this, "_ZN7S7115C22v7Ev");}
void  S7115C2 ::v8(){vfunc_called(this, "_ZN7S7115C22v8Ev");}
void  S7115C2 ::v9(){vfunc_called(this, "_ZN7S7115C22v9Ev");}
S7115C2 ::~S7115C2(){ note_dtor("S7115C2", this);} // tgen
S7115C2 ::S7115C2(){ note_ctor("S7115C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7115C2C1Ev();
extern void _ZN7S7115C2D1Ev();
Name_Map name_map_S7115C2[] = {
  NSPAIR(_ZN7S7115C2C1Ev),
  NSPAIR(_ZN7S7115C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7115C2[];
extern void _ZN7S7115C22v7Ev();
extern void _ZN7S7115C22v8Ev();
extern void _ZN7S7115C22v9Ev();
static  VTBL_ENTRY vtc_S7115C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C2[0]),
  (VTBL_ENTRY)&_ZN7S7115C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7115C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7115C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S7115C2[];
extern  VTBL_ENTRY _ZTV7S7115C2[];
Class_Descriptor cd_S7115C2 = {  "S7115C2", // class name
  0,0,//no base classes
  &(vtc_S7115C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7115C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7115C2),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  S7115C4  {
  long s7115c4f0;
  virtual void  v10(); // _ZN7S7115C43v10Ev
  virtual void  v11(); // _ZN7S7115C43v11Ev
  virtual void  v12(); // _ZN7S7115C43v12Ev
  virtual void  v13(); // _ZN7S7115C43v13Ev
  virtual void  v14(); // _ZN7S7115C43v14Ev
  ~S7115C4(); // tgen
  S7115C4(); // tgen
};
//SIG(-1 S7115C4) C1{ v1 v2 v3 v4 v5 Fl}


void  S7115C4 ::v10(){vfunc_called(this, "_ZN7S7115C43v10Ev");}
void  S7115C4 ::v11(){vfunc_called(this, "_ZN7S7115C43v11Ev");}
void  S7115C4 ::v12(){vfunc_called(this, "_ZN7S7115C43v12Ev");}
void  S7115C4 ::v13(){vfunc_called(this, "_ZN7S7115C43v13Ev");}
void  S7115C4 ::v14(){vfunc_called(this, "_ZN7S7115C43v14Ev");}
S7115C4 ::~S7115C4(){ note_dtor("S7115C4", this);} // tgen
S7115C4 ::S7115C4(){ note_ctor("S7115C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7115C4C1Ev();
extern void _ZN7S7115C4D1Ev();
Name_Map name_map_S7115C4[] = {
  NSPAIR(_ZN7S7115C4C1Ev),
  NSPAIR(_ZN7S7115C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7115C4[];
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
static  VTBL_ENTRY vtc_S7115C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C4[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
};
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
Class_Descriptor cd_S7115C4 = {  "S7115C4", // class name
  0,0,//no base classes
  &(vtc_S7115C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7115C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7115C4),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  S7115C7  {
  short s7115c7f0;
  virtual  ~S7115C7(); // _ZN7S7115C7D1Ev
  virtual void  v15(); // _ZN7S7115C73v15Ev
  virtual void  v16(); // _ZN7S7115C73v16Ev
  virtual void  v17(); // _ZN7S7115C73v17Ev
  virtual void  v18(); // _ZN7S7115C73v18Ev
  virtual void  v19(); // _ZN7S7115C73v19Ev
  virtual void  v20(); // _ZN7S7115C73v20Ev
  S7115C7(); // tgen
};
//SIG(-1 S7115C7) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S7115C7 ::~S7115C7(){ note_dtor("S7115C7", this);}
void  S7115C7 ::v15(){vfunc_called(this, "_ZN7S7115C73v15Ev");}
void  S7115C7 ::v16(){vfunc_called(this, "_ZN7S7115C73v16Ev");}
void  S7115C7 ::v17(){vfunc_called(this, "_ZN7S7115C73v17Ev");}
void  S7115C7 ::v18(){vfunc_called(this, "_ZN7S7115C73v18Ev");}
void  S7115C7 ::v19(){vfunc_called(this, "_ZN7S7115C73v19Ev");}
void  S7115C7 ::v20(){vfunc_called(this, "_ZN7S7115C73v20Ev");}
S7115C7 ::S7115C7(){ note_ctor("S7115C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7115C7C1Ev();
extern void _ZN7S7115C7D1Ev();
Name_Map name_map_S7115C7[] = {
  NSPAIR(_ZN7S7115C7C1Ev),
  NSPAIR(_ZN7S7115C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7115C7[];
extern void _ZN7S7115C7D1Ev();
extern void _ZN7S7115C7D0Ev();
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY vtc_S7115C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C7[0]),
  (VTBL_ENTRY)&_ZN7S7115C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern VTBL_ENTRY _ZTI7S7115C7[];
extern  VTBL_ENTRY _ZTV7S7115C7[];
Class_Descriptor cd_S7115C7 = {  "S7115C7", // class name
  0,0,//no base classes
  &(vtc_S7115C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7115C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7115C7),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7115C6  : virtual S7115C7 , S7115C4 {
  char s7115c6f0;
  virtual  ~S7115C6(); // _ZN7S7115C6D2Ev
  S7115C6(); // tgen
};
//SIG(-1 S7115C6) C1{ VBC2{ vd v1 v2 v3 v4 v5 v6 Fs} BC3{ v7 v8 v9 v10 v11 Fl} vd Fc}


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

static void Test_S7115C6()
{
  extern Class_Descriptor cd_S7115C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7115C6, buf);
    S7115C6 *dp, &lv = *(dp=new (buf) S7115C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7115C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7115C6)");
    check_base_class_offset(lv, (S7115C7*), ABISELECT(24,12), "S7115C6");
    check_base_class_offset(lv, (S7115C4*), 0, "S7115C6");
    check_field_offset(lv, s7115c6f0, ABISELECT(16,8), "S7115C6.s7115c6f0");
    test_class_info(&lv, &cd_S7115C6);
    dp->~S7115C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7115C6(Test_S7115C6, "S7115C6", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7115C6C1Ev();
extern void _ZN7S7115C6D2Ev();
Name_Map name_map_S7115C6[] = {
  NSPAIR(_ZN7S7115C6C1Ev),
  NSPAIR(_ZN7S7115C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7115C7;
extern VTBL_ENTRY _ZTI7S7115C7[];
extern  VTBL_ENTRY _ZTV7S7115C7[];
extern Class_Descriptor cd_S7115C4;
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
static Base_Class bases_S7115C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7115C7,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7115C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7115C6[];
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void _ZN7S7115C6D1Ev();
extern void _ZN7S7115C6D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY vtc_S7115C6[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern VTBL_ENTRY _ZTV7S7115C6[];
static  VTT_ENTRY vtt_S7115C6[] = {
  {&(_ZTV7S7115C6[3]),  3,27},
  {&(_ZTV7S7115C6[19]),  19,27},
};
extern VTBL_ENTRY _ZTI7S7115C6[];
extern  VTBL_ENTRY _ZTV7S7115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C6[];
static VTBL_ENTRY alt_thunk_names127[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7115C6 = {  "S7115C6", // class name
  bases_S7115C6, 2,
  &(vtc_S7115C6[0]), // expected_vtbl_contents
  &(vtt_S7115C6[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7115C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7115C6),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7115C6),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names127,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7115C5  : virtual S7115C6 {
  ::S7115C7 s7115c5f0;
  virtual void  v21(); // _ZN7S7115C53v21Ev
  virtual void  v22(); // _ZN7S7115C53v22Ev
  virtual void  v23(); // _ZN7S7115C53v23Ev
  virtual void  v24(); // _ZN7S7115C53v24Ev
  virtual void  v25(); // _ZN7S7115C53v25Ev
  virtual void  v26(); // _ZN7S7115C53v26Ev
  ~S7115C5(); // tgen
  S7115C5(); // tgen
};
//SIG(-1 S7115C5) C1{ VBC2{ VBC3{ vd v7 v8 v9 v10 v11 v12 Fs} BC4{ v13 v14 v15 v16 v17 Fl} vd Fc} v1 v2 v3 v4 v5 v6 FC3}


void  S7115C5 ::v21(){vfunc_called(this, "_ZN7S7115C53v21Ev");}
void  S7115C5 ::v22(){vfunc_called(this, "_ZN7S7115C53v22Ev");}
void  S7115C5 ::v23(){vfunc_called(this, "_ZN7S7115C53v23Ev");}
void  S7115C5 ::v24(){vfunc_called(this, "_ZN7S7115C53v24Ev");}
void  S7115C5 ::v25(){vfunc_called(this, "_ZN7S7115C53v25Ev");}
void  S7115C5 ::v26(){vfunc_called(this, "_ZN7S7115C53v26Ev");}
S7115C5 ::~S7115C5(){ note_dtor("S7115C5", this);} // tgen
S7115C5 ::S7115C5(){ note_ctor("S7115C5", this);} // tgen

static void Test_S7115C5()
{
  extern Class_Descriptor cd_S7115C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7115C5, buf);
    S7115C5 *dp, &lv = *(dp=new (buf) S7115C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7115C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7115C5)");
    check_base_class_offset(lv, (S7115C7*)(S7115C6*), ABISELECT(48,24), "S7115C5");
    check_base_class_offset(lv, (S7115C4*)(S7115C6*), ABISELECT(24,12), "S7115C5");
    check_base_class_offset(lv, (S7115C6*), ABISELECT(24,12), "S7115C5");
    check_field_offset(lv, s7115c5f0, ABISELECT(8,4), "S7115C5.s7115c5f0");
    test_class_info(&lv, &cd_S7115C5);
    dp->~S7115C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7115C5(Test_S7115C5, "S7115C5", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7115C5C1Ev();
extern void _ZN7S7115C5D1Ev();
Name_Map name_map_S7115C5[] = {
  NSPAIR(_ZN7S7115C5C1Ev),
  NSPAIR(_ZN7S7115C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7115C7;
extern VTBL_ENTRY _ZTI7S7115C7[];
extern  VTBL_ENTRY _ZTV7S7115C7[];
extern Class_Descriptor cd_S7115C4;
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
extern Class_Descriptor cd_S7115C6;
extern VTBL_ENTRY _ZTI7S7115C6[];
extern  VTBL_ENTRY _ZTV7S7115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C6[];
static Base_Class bases_S7115C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7115C7,    ABISELECT(48,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7115C4,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7115C6,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7115C5[];
extern void _ZN7S7115C53v21Ev();
extern void _ZN7S7115C53v22Ev();
extern void _ZN7S7115C53v23Ev();
extern void _ZN7S7115C53v24Ev();
extern void _ZN7S7115C53v25Ev();
extern void _ZN7S7115C53v26Ev();
extern void _ZN7S7115C5D1Ev();
extern void _ZN7S7115C5D0Ev();
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev)();
extern void ABISELECT(_ZThn24_N7S7115C5D1Ev,_ZThn12_N7S7115C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev)();
extern void ABISELECT(_ZThn24_N7S7115C5D0Ev,_ZThn12_N7S7115C5D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev)();
extern void ABISELECT(_ZThn48_N7S7115C5D1Ev,_ZThn24_N7S7115C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev)();
extern void ABISELECT(_ZThn48_N7S7115C5D0Ev,_ZThn24_N7S7115C5D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY vtc_S7115C5[] = {
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&_ZN7S7115C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7115C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C5D0Ev,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern VTBL_ENTRY _ZTV7S7115C5[];
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void _ZN7S7115C6D1Ev();
extern void _ZN7S7115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C6__7S7115C5[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C7__7S7115C6__7S7115C5[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
static  VTT_ENTRY vtt_S7115C5[] = {
  {&(_ZTV7S7115C5[4]),  4,45},
  {&(_ZTV7S7115C5[21]),  21,45},
  {&(_ZTV7S7115C5[37]),  37,45},
  {&(_tg__ZTV7S7115C6__7S7115C5[3]),  3,10},
  {&(_tg__ZTV7S7115C7__7S7115C6__7S7115C5[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7115C5[];
extern  VTBL_ENTRY _ZTV7S7115C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C5[];
static VTBL_ENTRY alt_thunk_names128[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7115C5D0Ev,_ZThn24_N7S7115C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7115C5D1Ev,_ZThn24_N7S7115C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C5D0Ev,_ZThn12_N7S7115C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C5D1Ev,_ZThn12_N7S7115C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7115C5 = {  "S7115C5", // class name
  bases_S7115C5, 3,
  &(vtc_S7115C5[0]), // expected_vtbl_contents
  &(vtt_S7115C5[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7115C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7115C5),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7115C5),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names128,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7115C3  : virtual S7115C4 , S7115C5 {
  virtual  ~S7115C3(); // _ZN7S7115C3D2Ev
  virtual void  v27(); // _ZN7S7115C33v27Ev
  S7115C3(); // tgen
};
//SIG(-1 S7115C3) C1{ VBC2{ v2 v3 v4 v5 v6 Fl} BC3{ VBC4{ VBC5{ vd v7 v8 v9 v10 v11 v12 Fs} BC2 vd Fc} v13 v14 v15 v16 v17 v18 FC5} vd v1}


 S7115C3 ::~S7115C3(){ note_dtor("S7115C3", this);}
void  S7115C3 ::v27(){vfunc_called(this, "_ZN7S7115C33v27Ev");}
S7115C3 ::S7115C3(){ note_ctor("S7115C3", this);} // tgen

static void Test_S7115C3()
{
  extern Class_Descriptor cd_S7115C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S7115C3, buf);
    S7115C3 *dp, &lv = *(dp=new (buf) S7115C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S7115C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7115C3)");
    /*is_ambiguous_... S7115C3::S7115C4 */ AMB_check_base_class_offset(lv, (S7115C4*), ABISELECT(24,12), "S7115C3");
    check_base_class_offset(lv, (S7115C7*)(S7115C6*), ABISELECT(64,32), "S7115C3");
    check_base_class_offset(lv, (S7115C4*)(S7115C6*), ABISELECT(40,20), "S7115C3");
    check_base_class_offset(lv, (S7115C6*)(S7115C5*), ABISELECT(40,20), "S7115C3");
    check_base_class_offset(lv, (S7115C5*), 0, "S7115C3");
    test_class_info(&lv, &cd_S7115C3);
    dp->~S7115C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7115C3(Test_S7115C3, "S7115C3", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S7115C3C1Ev();
extern void _ZN7S7115C3D2Ev();
Name_Map name_map_S7115C3[] = {
  NSPAIR(_ZN7S7115C3C1Ev),
  NSPAIR(_ZN7S7115C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7115C4;
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
extern Class_Descriptor cd_S7115C7;
extern VTBL_ENTRY _ZTI7S7115C7[];
extern  VTBL_ENTRY _ZTV7S7115C7[];
extern Class_Descriptor cd_S7115C4;
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
extern Class_Descriptor cd_S7115C6;
extern VTBL_ENTRY _ZTI7S7115C6[];
extern  VTBL_ENTRY _ZTV7S7115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C6[];
extern Class_Descriptor cd_S7115C5;
extern VTBL_ENTRY _ZTI7S7115C5[];
extern  VTBL_ENTRY _ZTV7S7115C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C5[];
static Base_Class bases_S7115C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7115C4,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7115C7,    ABISELECT(64,32), //bcp->offset
    42, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7115C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S7115C6,    ABISELECT(40,20), //bcp->offset
    26, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7115C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7115C3[];
extern void _ZN7S7115C53v21Ev();
extern void _ZN7S7115C53v22Ev();
extern void _ZN7S7115C53v23Ev();
extern void _ZN7S7115C53v24Ev();
extern void _ZN7S7115C53v25Ev();
extern void _ZN7S7115C53v26Ev();
extern void _ZN7S7115C3D1Ev();
extern void _ZN7S7115C3D0Ev();
extern void _ZN7S7115C33v27Ev();
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void ABISELECT(_ZTv0_n72_N7S7115C3D1Ev,_ZTv0_n36_N7S7115C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7115C3D1Ev,_ZThn20_N7S7115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7115C3D0Ev,_ZTv0_n36_N7S7115C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7115C3D0Ev,_ZThn20_N7S7115C3D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C3D1Ev,_ZTv0_n12_N7S7115C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7115C3D1Ev,_ZThn32_N7S7115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C3D0Ev,_ZTv0_n12_N7S7115C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7115C3D0Ev,_ZThn32_N7S7115C3D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY vtc_S7115C3[] = {
  ABISELECT(24,12),
  ABISELECT(64,32),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&_ZN7S7115C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7115C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7115C33v27Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C3D1Ev,_ZTv0_n36_N7S7115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C3D0Ev,_ZTv0_n36_N7S7115C3D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C3D1Ev,_ZTv0_n12_N7S7115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C3D0Ev,_ZTv0_n12_N7S7115C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern VTBL_ENTRY _ZTV7S7115C3[];
extern void _ZN7S7115C53v21Ev();
extern void _ZN7S7115C53v22Ev();
extern void _ZN7S7115C53v23Ev();
extern void _ZN7S7115C53v24Ev();
extern void _ZN7S7115C53v25Ev();
extern void _ZN7S7115C53v26Ev();
extern void _ZN7S7115C5D1Ev();
extern void _ZN7S7115C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C5__7S7115C3[] = {
  ABISELECT(64,32),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&_ZN7S7115C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7115C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C5D0Ev,
};
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7115C5D1Ev,_ZThn20_N7S7115C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7115C5D0Ev,_ZThn20_N7S7115C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7115C6__7S7115C5__7S7115C3[] = {
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7115C5D1Ev,_ZThn32_N7S7115C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7115C5D0Ev,_ZThn32_N7S7115C5D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C7__7S7115C5__7S7115C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void _ZN7S7115C6D1Ev();
extern void _ZN7S7115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C6__7S7115C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C7__7S7115C6__7S7115C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
static  VTT_ENTRY vtt_S7115C3[] = {
  {&(_ZTV7S7115C3[5]),  5,59},
  {&(_tg__ZTV7S7115C5__7S7115C3[4]),  4,12},
  {&(_tg__ZTV7S7115C6__7S7115C5__7S7115C3[9]),  9,16},
  {&(_tg__ZTV7S7115C7__7S7115C5__7S7115C3[9]),  9,17},
  {&(_ZTV7S7115C3[21]),  21,59},
  {&(_ZTV7S7115C3[35]),  35,59},
  {&(_ZTV7S7115C3[51]),  51,59},
  {&(_tg__ZTV7S7115C6__7S7115C3[3]),  3,10},
  {&(_tg__ZTV7S7115C7__7S7115C6__7S7115C3[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7115C3[];
extern  VTBL_ENTRY _ZTV7S7115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C3[];
static VTBL_ENTRY alt_thunk_names129[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C5D0Ev,_ZThn32_N7S7115C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C5D1Ev,_ZThn32_N7S7115C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C5D0Ev,_ZThn20_N7S7115C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C5D1Ev,_ZThn20_N7S7115C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C3D0Ev,_ZTv0_n12_N7S7115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C3D0Ev,_ZThn32_N7S7115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C3D1Ev,_ZTv0_n12_N7S7115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C3D1Ev,_ZThn32_N7S7115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C3D0Ev,_ZTv0_n36_N7S7115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C3D0Ev,_ZThn20_N7S7115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C3D1Ev,_ZTv0_n36_N7S7115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C3D1Ev,_ZThn20_N7S7115C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7115C3 = {  "S7115C3", // class name
  bases_S7115C3, 5,
  &(vtc_S7115C3[0]), // expected_vtbl_contents
  &(vtt_S7115C3[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S7115C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7115C3),59, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7115C3),9, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names129,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7115C1  : S7115C2 , virtual S7115C3 {
  int s7115c1f0[2];
  virtual  ~S7115C1(); // _ZN7S7115C1D2Ev
  virtual void  v1(); // _ZN7S7115C12v1Ev
  virtual void  v2(); // _ZN7S7115C12v2Ev
  virtual void  v3(); // _ZN7S7115C12v3Ev
  virtual void  v4(); // _ZN7S7115C12v4Ev
  virtual void  v5(); // _ZN7S7115C12v5Ev
  virtual void  v6(); // _ZN7S7115C12v6Ev
  S7115C1(); // tgen
};
//SIG(1 S7115C1) C1{ BC2{ v7 v8 v9} VBC3{ VBC4{ v10 v11 v12 v13 v14 Fl} BC5{ VBC6{ VBC7{ vd v15 v16 v17 v18 v19 v20 Fs} BC4 vd Fc} v21 v22 v23 v24 v25 v26 FC7} vd v27} vd v1 v2 v3 v4 v5 v6 Fi[2]}


 S7115C1 ::~S7115C1(){ note_dtor("S7115C1", this);}
void  S7115C1 ::v1(){vfunc_called(this, "_ZN7S7115C12v1Ev");}
void  S7115C1 ::v2(){vfunc_called(this, "_ZN7S7115C12v2Ev");}
void  S7115C1 ::v3(){vfunc_called(this, "_ZN7S7115C12v3Ev");}
void  S7115C1 ::v4(){vfunc_called(this, "_ZN7S7115C12v4Ev");}
void  S7115C1 ::v5(){vfunc_called(this, "_ZN7S7115C12v5Ev");}
void  S7115C1 ::v6(){vfunc_called(this, "_ZN7S7115C12v6Ev");}
S7115C1 ::S7115C1(){ note_ctor("S7115C1", this);} // tgen

static void Test_S7115C1()
{
  extern Class_Descriptor cd_S7115C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,14)];
    init_test(&cd_S7115C1, buf);
    S7115C1 *dp, &lv = *(dp=new (buf) S7115C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,52), "sizeof(S7115C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7115C1)");
    check_base_class_offset(lv, (S7115C2*), 0, "S7115C1");
    /*is_ambiguous_... S7115C3::S7115C4 */ AMB_check_base_class_offset(lv, (S7115C4*)(S7115C3*), ABISELECT(40,24), "S7115C1");
    check_base_class_offset(lv, (S7115C7*)(S7115C6*), ABISELECT(80,44), "S7115C1");
    check_base_class_offset(lv, (S7115C4*)(S7115C6*), ABISELECT(56,32), "S7115C1");
    check_base_class_offset(lv, (S7115C6*)(S7115C5*)(S7115C3*), ABISELECT(56,32), "S7115C1");
    check_base_class_offset(lv, (S7115C5*)(S7115C3*), ABISELECT(16,12), "S7115C1");
    check_base_class_offset(lv, (S7115C3*), ABISELECT(16,12), "S7115C1");
    check_field_offset(lv, s7115c1f0, ABISELECT(8,4), "S7115C1.s7115c1f0");
    test_class_info(&lv, &cd_S7115C1);
    dp->~S7115C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7115C1(Test_S7115C1, "S7115C1", ABISELECT(96,52));

#else // __cplusplus

extern void _ZN7S7115C1C1Ev();
extern void _ZN7S7115C1D2Ev();
Name_Map name_map_S7115C1[] = {
  NSPAIR(_ZN7S7115C1C1Ev),
  NSPAIR(_ZN7S7115C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7115C2;
extern VTBL_ENTRY _ZTI7S7115C2[];
extern  VTBL_ENTRY _ZTV7S7115C2[];
extern Class_Descriptor cd_S7115C4;
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
extern Class_Descriptor cd_S7115C7;
extern VTBL_ENTRY _ZTI7S7115C7[];
extern  VTBL_ENTRY _ZTV7S7115C7[];
extern Class_Descriptor cd_S7115C4;
extern VTBL_ENTRY _ZTI7S7115C4[];
extern  VTBL_ENTRY _ZTV7S7115C4[];
extern Class_Descriptor cd_S7115C6;
extern VTBL_ENTRY _ZTI7S7115C6[];
extern  VTBL_ENTRY _ZTV7S7115C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C6[];
extern Class_Descriptor cd_S7115C5;
extern VTBL_ENTRY _ZTI7S7115C5[];
extern  VTBL_ENTRY _ZTV7S7115C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C5[];
extern Class_Descriptor cd_S7115C3;
extern VTBL_ENTRY _ZTI7S7115C3[];
extern  VTBL_ENTRY _ZTV7S7115C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C3[];
static Base_Class bases_S7115C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7115C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S7115C4,    ABISELECT(40,24), //bcp->offset
    39, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7115C7,    ABISELECT(80,44), //bcp->offset
    67, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S7115C4,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7115C6,    ABISELECT(56,32), //bcp->offset
    51, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7115C5,    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
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7115C3,    ABISELECT(16,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    13, //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 _ZTI7S7115C1[];
extern void _ZN7S7115C22v7Ev();
extern void _ZN7S7115C22v8Ev();
extern void _ZN7S7115C22v9Ev();
extern void _ZN7S7115C1D1Ev();
extern void _ZN7S7115C1D0Ev();
extern void _ZN7S7115C12v1Ev();
extern void _ZN7S7115C12v2Ev();
extern void _ZN7S7115C12v3Ev();
extern void _ZN7S7115C12v4Ev();
extern void _ZN7S7115C12v5Ev();
extern void _ZN7S7115C12v6Ev();
extern void _ZN7S7115C53v21Ev();
extern void _ZN7S7115C53v22Ev();
extern void _ZN7S7115C53v23Ev();
extern void _ZN7S7115C53v24Ev();
extern void _ZN7S7115C53v25Ev();
extern void _ZN7S7115C53v26Ev();
extern void ABISELECT(_ZTv0_n96_N7S7115C1D1Ev,_ZTv0_n48_N7S7115C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7115C1D1Ev,_ZThn12_N7S7115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n96_N7S7115C1D0Ev,_ZTv0_n48_N7S7115C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7115C1D0Ev,_ZThn12_N7S7115C1D0Ev)() __attribute__((weak));
extern void _ZN7S7115C33v27Ev();
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void ABISELECT(_ZTv0_n72_N7S7115C1D1Ev,_ZTv0_n36_N7S7115C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7115C1D1Ev,_ZThn32_N7S7115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7115C1D0Ev,_ZTv0_n36_N7S7115C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7115C1D0Ev,_ZThn32_N7S7115C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C1D1Ev,_ZTv0_n12_N7S7115C1D1Ev)();
extern void ABISELECT(_ZThn80_N7S7115C1D1Ev,_ZThn44_N7S7115C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C1D0Ev,_ZTv0_n12_N7S7115C1D0Ev)();
extern void ABISELECT(_ZThn80_N7S7115C1D0Ev,_ZThn44_N7S7115C1D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY vtc_S7115C1[] = {
  ABISELECT(80,44),
  ABISELECT(56,32),
  ABISELECT(40,24),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C1[0]),
  (VTBL_ENTRY)&_ZN7S7115C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7115C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7115C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7115C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7115C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7115C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7115C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7115C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7115C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7115C12v6Ev,
  0,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(64,32),
  ABISELECT(40,20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C1[0]),
  (VTBL_ENTRY)&_ZN7S7115C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v26Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7115C1D1Ev,_ZTv0_n48_N7S7115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n96_N7S7115C1D0Ev,_ZTv0_n48_N7S7115C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C33v27Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S7115C1[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  ABISELECT(-56,-32),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7115C1[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C1D1Ev,_ZTv0_n36_N7S7115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C1D0Ev,_ZTv0_n36_N7S7115C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-44),
  ABISELECT(-80,-44),
  (VTBL_ENTRY)&(_ZTI7S7115C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C1D1Ev,_ZTv0_n12_N7S7115C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C1D0Ev,_ZTv0_n12_N7S7115C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern VTBL_ENTRY _ZTV7S7115C1[];
extern void _ZN7S7115C53v21Ev();
extern void _ZN7S7115C53v22Ev();
extern void _ZN7S7115C53v23Ev();
extern void _ZN7S7115C53v24Ev();
extern void _ZN7S7115C53v25Ev();
extern void _ZN7S7115C53v26Ev();
extern void _ZN7S7115C3D1Ev();
extern void _ZN7S7115C3D0Ev();
extern void _ZN7S7115C33v27Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C3__7S7115C1[] = {
  ABISELECT(24,12),
  ABISELECT(64,32),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&_ZN7S7115C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7115C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7115C33v27Ev,
};
extern void _ZN7S7115C53v21Ev();
extern void _ZN7S7115C53v22Ev();
extern void _ZN7S7115C53v23Ev();
extern void _ZN7S7115C53v24Ev();
extern void _ZN7S7115C53v25Ev();
extern void _ZN7S7115C53v26Ev();
extern void _ZN7S7115C5D1Ev();
extern void _ZN7S7115C5D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C57S7115C3__7S7115C1[] = {
  ABISELECT(64,32),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&_ZN7S7115C53v21Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v22Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v23Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v24Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v25Ev,
  (VTBL_ENTRY)&_ZN7S7115C53v26Ev,
  (VTBL_ENTRY)&_ZN7S7115C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C5D0Ev,
};
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev)();
extern void ABISELECT(_ZThn40_N7S7115C5D1Ev,_ZThn20_N7S7115C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev)();
extern void ABISELECT(_ZThn40_N7S7115C5D0Ev,_ZThn20_N7S7115C5D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7115C6__7S7115C57S7115C3__7S7115C1[] = {
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev)();
extern void ABISELECT(_ZThn64_N7S7115C5D1Ev,_ZThn32_N7S7115C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev)();
extern void ABISELECT(_ZThn64_N7S7115C5D0Ev,_ZThn32_N7S7115C5D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C7__7S7115C57S7115C3__7S7115C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7115C5[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C4__7S7115C3__7S7115C1[] = {
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
};
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void ABISELECT(_ZTv0_n72_N7S7115C3D1Ev,_ZTv0_n36_N7S7115C3D1Ev)();
extern void ABISELECT(_ZThn40_N7S7115C3D1Ev,_ZThn20_N7S7115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7115C3D0Ev,_ZTv0_n36_N7S7115C3D0Ev)();
extern void ABISELECT(_ZThn40_N7S7115C3D0Ev,_ZThn20_N7S7115C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7115C6__7S7115C3__7S7115C1[] = {
  ABISELECT(-40,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C3D1Ev,_ZTv0_n36_N7S7115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7115C3D0Ev,_ZTv0_n36_N7S7115C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7115C3D1Ev,_ZTv0_n12_N7S7115C3D1Ev)();
extern void ABISELECT(_ZThn64_N7S7115C3D1Ev,_ZThn32_N7S7115C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C3D0Ev,_ZTv0_n12_N7S7115C3D0Ev)();
extern void ABISELECT(_ZThn64_N7S7115C3D0Ev,_ZThn32_N7S7115C3D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C7__7S7115C3__7S7115C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-32),
  ABISELECT(-64,-32),
  (VTBL_ENTRY)&(_ZTI7S7115C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C3D1Ev,_ZTv0_n12_N7S7115C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C3D0Ev,_ZTv0_n12_N7S7115C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
extern void _ZN7S7115C43v10Ev();
extern void _ZN7S7115C43v11Ev();
extern void _ZN7S7115C43v12Ev();
extern void _ZN7S7115C43v13Ev();
extern void _ZN7S7115C43v14Ev();
extern void _ZN7S7115C6D1Ev();
extern void _ZN7S7115C6D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C6__7S7115C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&_ZN7S7115C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v11Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v12Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7115C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7115C6D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev)();
extern void ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev)() __attribute__((weak));
extern void _ZN7S7115C73v15Ev();
extern void _ZN7S7115C73v16Ev();
extern void _ZN7S7115C73v17Ev();
extern void _ZN7S7115C73v18Ev();
extern void _ZN7S7115C73v19Ev();
extern void _ZN7S7115C73v20Ev();
static  VTBL_ENTRY _tg__ZTV7S7115C7__7S7115C6__7S7115C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7115C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7115C73v15Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v16Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v17Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v18Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v19Ev,
  (VTBL_ENTRY)&_ZN7S7115C73v20Ev,
};
static  VTT_ENTRY vtt_S7115C1[] = {
  {&(_ZTV7S7115C1[6]),  6,84},
  {&(_ZTV7S7115C1[30]),  30,84},
  {&(_ZTV7S7115C1[46]),  46,84},
  {&(_ZTV7S7115C1[60]),  60,84},
  {&(_ZTV7S7115C1[76]),  76,84},
  {&(_tg__ZTV7S7115C3__7S7115C1[5]),  5,14},
  {&(_tg__ZTV7S7115C57S7115C3__7S7115C1[4]),  4,12},
  {&(_tg__ZTV7S7115C6__7S7115C57S7115C3__7S7115C1[9]),  9,16},
  {&(_tg__ZTV7S7115C7__7S7115C57S7115C3__7S7115C1[9]),  9,17},
  {&(_tg__ZTV7S7115C4__7S7115C3__7S7115C1[7]),  7,12},
  {&(_tg__ZTV7S7115C6__7S7115C3__7S7115C1[9]),  9,16},
  {&(_tg__ZTV7S7115C7__7S7115C3__7S7115C1[9]),  9,17},
  {&(_tg__ZTV7S7115C6__7S7115C1[3]),  3,10},
  {&(_tg__ZTV7S7115C7__7S7115C6__7S7115C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7115C1[];
extern  VTBL_ENTRY _ZTV7S7115C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7115C1[];
static VTBL_ENTRY alt_thunk_names130[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D0Ev,_ZTv0_n12_N7S7115C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D0Ev,_ZThn12_N7S7115C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C6D1Ev,_ZTv0_n12_N7S7115C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7115C6D1Ev,_ZThn12_N7S7115C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C3D0Ev,_ZTv0_n12_N7S7115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C3D0Ev,_ZThn32_N7S7115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C3D1Ev,_ZTv0_n12_N7S7115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C3D1Ev,_ZThn32_N7S7115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C3D0Ev,_ZTv0_n36_N7S7115C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C3D0Ev,_ZThn20_N7S7115C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C3D1Ev,_ZTv0_n36_N7S7115C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C3D1Ev,_ZThn20_N7S7115C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C5D0Ev,_ZTv0_n12_N7S7115C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C5D0Ev,_ZThn32_N7S7115C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C5D1Ev,_ZTv0_n12_N7S7115C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N7S7115C5D1Ev,_ZThn32_N7S7115C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C5D0Ev,_ZTv0_n36_N7S7115C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C5D0Ev,_ZThn20_N7S7115C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C5D1Ev,_ZTv0_n36_N7S7115C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S7115C5D1Ev,_ZThn20_N7S7115C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C1D0Ev,_ZTv0_n12_N7S7115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7115C1D0Ev,_ZThn44_N7S7115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7115C1D1Ev,_ZTv0_n12_N7S7115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7115C1D1Ev,_ZThn44_N7S7115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C1D0Ev,_ZTv0_n36_N7S7115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7115C1D0Ev,_ZThn32_N7S7115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7115C1D1Ev,_ZTv0_n36_N7S7115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7115C1D1Ev,_ZThn32_N7S7115C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7115C1D0Ev,_ZTv0_n48_N7S7115C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7115C1D0Ev,_ZThn12_N7S7115C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n96_N7S7115C1D1Ev,_ZTv0_n48_N7S7115C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7115C1D1Ev,_ZThn12_N7S7115C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7115C1 = {  "S7115C1", // class name
  bases_S7115C1, 7,
  &(vtc_S7115C1[0]), // expected_vtbl_contents
  &(vtt_S7115C1[0]), // expected_vtt_contents
  ABISELECT(96,52), // object size
  NSPAIRA(_ZTI7S7115C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7115C1),84, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7115C1),14, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names130,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20866C3  {
  char s20866c3f0;
  void *s20866c3f1;
  int s20866c3f2;
  __tsi64 s20866c3f3:8;
  virtual void  v5(); // _ZN8S20866C32v5Ev
  virtual void  v6(); // _ZN8S20866C32v6Ev
  virtual void  v7(); // _ZN8S20866C32v7Ev
  virtual void  v8(); // _ZN8S20866C32v8Ev
  ~S20866C3(); // tgen
  S20866C3(); // tgen
};
//SIG(-1 S20866C3) C1{ v1 v2 v3 v4 Fc Fp Fi FL:8}


void  S20866C3 ::v5(){vfunc_called(this, "_ZN8S20866C32v5Ev");}
void  S20866C3 ::v6(){vfunc_called(this, "_ZN8S20866C32v6Ev");}
void  S20866C3 ::v7(){vfunc_called(this, "_ZN8S20866C32v7Ev");}
void  S20866C3 ::v8(){vfunc_called(this, "_ZN8S20866C32v8Ev");}
S20866C3 ::~S20866C3(){ note_dtor("S20866C3", this);} // tgen
S20866C3 ::S20866C3(){ note_ctor("S20866C3", this);} // tgen

static void Test_S20866C3()
{
  extern Class_Descriptor cd_S20866C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20866C3, buf);
    S20866C3 *dp, &lv = *(dp=new (buf) S20866C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20866C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C3)");
    check_field_offset(lv, s20866c3f0, ABISELECT(8,4), "S20866C3.s20866c3f0");
    check_field_offset(lv, s20866c3f1, ABISELECT(16,8), "S20866C3.s20866c3f1");
    check_field_offset(lv, s20866c3f2, ABISELECT(24,12), "S20866C3.s20866c3f2");
    set_bf_and_test(lv, s20866c3f3, ABISELECT(28,16), 0, 8, 1, "S20866C3");
    set_bf_and_test(lv, s20866c3f3, ABISELECT(28,16), 0, 8, hide_sll(1LL<<7), "S20866C3");
    test_class_info(&lv, &cd_S20866C3);
    dp->~S20866C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C3(Test_S20866C3, "S20866C3", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20866C3C1Ev();
extern void _ZN8S20866C3D1Ev();
Name_Map name_map_S20866C3[] = {
  NSPAIR(_ZN8S20866C3C1Ev),
  NSPAIR(_ZN8S20866C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20866C3[];
extern void _ZN8S20866C32v5Ev();
extern void _ZN8S20866C32v6Ev();
extern void _ZN8S20866C32v7Ev();
extern void _ZN8S20866C32v8Ev();
static  VTBL_ENTRY vtc_S20866C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C3[0]),
  (VTBL_ENTRY)&_ZN8S20866C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v8Ev,
};
extern VTBL_ENTRY _ZTI8S20866C3[];
extern  VTBL_ENTRY _ZTV8S20866C3[];
Class_Descriptor cd_S20866C3 = {  "S20866C3", // class name
  0,0,//no base classes
  &(vtc_S20866C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20866C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20866C3),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  S20866C2  : virtual S20866C3 , virtual S9624C48 {
  virtual void  v9(); // _ZN8S20866C22v9Ev
  ~S20866C2(); // tgen
  S20866C2(); // tgen
};
//SIG(-1 S20866C2) C1{ VBC2{ v2 v3 v4 v5 Fc Fp Fi FL:8} VBC3{ m} v1}


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

static void Test_S20866C2()
{
  extern Class_Descriptor cd_S20866C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S20866C2, buf);
    S20866C2 *dp, &lv = *(dp=new (buf) S20866C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S20866C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C2)");
    check_base_class_offset(lv, (S20866C3*), ABISELECT(8,4), "S20866C2");
    check_base_class_offset(lv, (S9624C48*), 0, "S20866C2");
    test_class_info(&lv, &cd_S20866C2);
    dp->~S20866C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C2(Test_S20866C2, "S20866C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S20866C2C1Ev();
extern void _ZN8S20866C2D1Ev();
Name_Map name_map_S20866C2[] = {
  NSPAIR(_ZN8S20866C2C1Ev),
  NSPAIR(_ZN8S20866C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20866C3;
extern VTBL_ENTRY _ZTI8S20866C3[];
extern  VTBL_ENTRY _ZTV8S20866C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20866C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20866C3,    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},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20866C2[];
extern void _ZN8S20866C22v9Ev();
extern void _ZN8S20866C32v5Ev();
extern void _ZN8S20866C32v6Ev();
extern void _ZN8S20866C32v7Ev();
extern void _ZN8S20866C32v8Ev();
static  VTBL_ENTRY vtc_S20866C2[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C2[0]),
  (VTBL_ENTRY)&_ZN8S20866C22v9Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20866C2[0]),
  (VTBL_ENTRY)&_ZN8S20866C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v8Ev,
};
extern VTBL_ENTRY _ZTV8S20866C2[];
static  VTT_ENTRY vtt_S20866C2[] = {
  {&(_ZTV8S20866C2[4]),  4,15},
  {&(_ZTV8S20866C2[11]),  11,15},
};
extern VTBL_ENTRY _ZTI8S20866C2[];
extern  VTBL_ENTRY _ZTV8S20866C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C2[];
Class_Descriptor cd_S20866C2 = {  "S20866C2", // class name
  bases_S20866C2, 2,
  &(vtc_S20866C2[0]), // expected_vtbl_contents
  &(vtt_S20866C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S20866C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20866C2),15, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20866C2),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  S20866C7  {
  virtual void  v10(); // _ZN8S20866C73v10Ev
  ~S20866C7(); // tgen
  S20866C7(); // tgen
};
//SIG(-1 S20866C7) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S20866C7C1Ev();
extern void _ZN8S20866C7D1Ev();
Name_Map name_map_S20866C7[] = {
  NSPAIR(_ZN8S20866C7C1Ev),
  NSPAIR(_ZN8S20866C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20866C7[];
extern void _ZN8S20866C73v10Ev();
static  VTBL_ENTRY vtc_S20866C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C7[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
};
extern VTBL_ENTRY _ZTI8S20866C7[];
extern  VTBL_ENTRY _ZTV8S20866C7[];
Class_Descriptor cd_S20866C7 = {  "S20866C7", // class name
  0,0,//no base classes
  &(vtc_S20866C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20866C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20866C7),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  S20866C8  : virtual S20866C7 {
  virtual void  v11(); // _ZN8S20866C83v11Ev
  ~S20866C8(); // tgen
  S20866C8(); // tgen
};
//SIG(-1 S20866C8) C1{ VBC2{ v2} v1}


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

static void Test_S20866C8()
{
  extern Class_Descriptor cd_S20866C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20866C8, buf);
    S20866C8 *dp, &lv = *(dp=new (buf) S20866C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20866C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C8)");
    check_base_class_offset(lv, (S20866C7*), 0, "S20866C8");
    test_class_info(&lv, &cd_S20866C8);
    dp->~S20866C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C8(Test_S20866C8, "S20866C8", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20866C8C1Ev();
extern void _ZN8S20866C8D1Ev();
Name_Map name_map_S20866C8[] = {
  NSPAIR(_ZN8S20866C8C1Ev),
  NSPAIR(_ZN8S20866C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20866C7;
extern VTBL_ENTRY _ZTI8S20866C7[];
extern  VTBL_ENTRY _ZTV8S20866C7[];
static Base_Class bases_S20866C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20866C7,    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 _ZTI8S20866C8[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
static  VTBL_ENTRY vtc_S20866C8[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
};
extern VTBL_ENTRY _ZTV8S20866C8[];
static  VTT_ENTRY vtt_S20866C8[] = {
  {&(_ZTV8S20866C8[4]),  4,6},
  {&(_ZTV8S20866C8[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20866C8[];
extern  VTBL_ENTRY _ZTV8S20866C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C8[];
Class_Descriptor cd_S20866C8 = {  "S20866C8", // class name
  bases_S20866C8, 1,
  &(vtc_S20866C8[0]), // expected_vtbl_contents
  &(vtt_S20866C8[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20866C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20866C8),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20866C8),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  S20866C6  : virtual S20866C7 , S20866C8 {
  int s20866c6f0;
  virtual  ~S20866C6(); // _ZN8S20866C6D2Ev
  virtual void  v12(); // _ZN8S20866C63v12Ev
  virtual void  v13(); // _ZN8S20866C63v13Ev
  S20866C6(); // tgen
};
//SIG(-1 S20866C6) C1{ VBC2{ v3} BC3{ VBC2 v4} vd v1 v2 Fi}


 S20866C6 ::~S20866C6(){ note_dtor("S20866C6", this);}
void  S20866C6 ::v12(){vfunc_called(this, "_ZN8S20866C63v12Ev");}
void  S20866C6 ::v13(){vfunc_called(this, "_ZN8S20866C63v13Ev");}
S20866C6 ::S20866C6(){ note_ctor("S20866C6", this);} // tgen

static void Test_S20866C6()
{
  extern Class_Descriptor cd_S20866C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20866C6, buf);
    S20866C6 *dp, &lv = *(dp=new (buf) S20866C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20866C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C6)");
    check_base_class_offset(lv, (S20866C7*), 0, "S20866C6");
    check_base_class_offset(lv, (S20866C7*)(S20866C8*), 0, "S20866C6");
    check_base_class_offset(lv, (S20866C8*), 0, "S20866C6");
    check_field_offset(lv, s20866c6f0, ABISELECT(8,4), "S20866C6.s20866c6f0");
    test_class_info(&lv, &cd_S20866C6);
    dp->~S20866C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C6(Test_S20866C6, "S20866C6", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20866C6C1Ev();
extern void _ZN8S20866C6D2Ev();
Name_Map name_map_S20866C6[] = {
  NSPAIR(_ZN8S20866C6C1Ev),
  NSPAIR(_ZN8S20866C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20866C7;
extern VTBL_ENTRY _ZTI8S20866C7[];
extern  VTBL_ENTRY _ZTV8S20866C7[];
extern Class_Descriptor cd_S20866C8;
extern VTBL_ENTRY _ZTI8S20866C8[];
extern  VTBL_ENTRY _ZTV8S20866C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C8[];
static Base_Class bases_S20866C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20866C7,    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
  1, 1},
  {&cd_S20866C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20866C6[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void _ZN8S20866C6D1Ev();
extern void _ZN8S20866C6D0Ev();
extern void _ZN8S20866C63v12Ev();
extern void _ZN8S20866C63v13Ev();
static  VTBL_ENTRY vtc_S20866C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C6[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20866C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20866C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S20866C6[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C8__8S20866C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
};
static  VTT_ENTRY vtt_S20866C6[] = {
  {&(_ZTV8S20866C6[4]),  4,10},
  {&(_tg__ZTV8S20866C8__8S20866C6[4]),  4,6},
  {&(_tg__ZTV8S20866C8__8S20866C6[4]),  4,6},
  {&(_ZTV8S20866C6[4]),  4,10},
};
extern VTBL_ENTRY _ZTI8S20866C6[];
extern  VTBL_ENTRY _ZTV8S20866C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C6[];
Class_Descriptor cd_S20866C6 = {  "S20866C6", // class name
  bases_S20866C6, 2,
  &(vtc_S20866C6[0]), // expected_vtbl_contents
  &(vtt_S20866C6[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20866C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20866C6),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20866C6),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  S20866C9  : virtual S20866C8 {
  virtual void  v20(); // _ZN8S20866C93v20Ev
  virtual void  v21(); // _ZN8S20866C93v21Ev
  virtual void  v22(); // _ZN8S20866C93v22Ev
  virtual void  v23(); // _ZN8S20866C93v23Ev
  ~S20866C9(); // tgen
  S20866C9(); // tgen
};
//SIG(-1 S20866C9) C1{ VBC2{ VBC3{ v5} v6} v1 v2 v3 v4}


void  S20866C9 ::v20(){vfunc_called(this, "_ZN8S20866C93v20Ev");}
void  S20866C9 ::v21(){vfunc_called(this, "_ZN8S20866C93v21Ev");}
void  S20866C9 ::v22(){vfunc_called(this, "_ZN8S20866C93v22Ev");}
void  S20866C9 ::v23(){vfunc_called(this, "_ZN8S20866C93v23Ev");}
S20866C9 ::~S20866C9(){ note_dtor("S20866C9", this);} // tgen
S20866C9 ::S20866C9(){ note_ctor("S20866C9", this);} // tgen

static void Test_S20866C9()
{
  extern Class_Descriptor cd_S20866C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20866C9, buf);
    S20866C9 *dp, &lv = *(dp=new (buf) S20866C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20866C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C9)");
    check_base_class_offset(lv, (S20866C7*)(S20866C8*), 0, "S20866C9");
    check_base_class_offset(lv, (S20866C8*), 0, "S20866C9");
    test_class_info(&lv, &cd_S20866C9);
    dp->~S20866C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C9(Test_S20866C9, "S20866C9", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20866C9C1Ev();
extern void _ZN8S20866C9D1Ev();
Name_Map name_map_S20866C9[] = {
  NSPAIR(_ZN8S20866C9C1Ev),
  NSPAIR(_ZN8S20866C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20866C7;
extern VTBL_ENTRY _ZTI8S20866C7[];
extern  VTBL_ENTRY _ZTV8S20866C7[];
extern Class_Descriptor cd_S20866C8;
extern VTBL_ENTRY _ZTI8S20866C8[];
extern  VTBL_ENTRY _ZTV8S20866C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C8[];
static Base_Class bases_S20866C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20866C7,    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_S20866C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20866C9[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void _ZN8S20866C93v20Ev();
extern void _ZN8S20866C93v21Ev();
extern void _ZN8S20866C93v22Ev();
extern void _ZN8S20866C93v23Ev();
static  VTBL_ENTRY vtc_S20866C9[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C9[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20866C93v20Ev,
  (VTBL_ENTRY)&_ZN8S20866C93v21Ev,
  (VTBL_ENTRY)&_ZN8S20866C93v22Ev,
  (VTBL_ENTRY)&_ZN8S20866C93v23Ev,
};
extern VTBL_ENTRY _ZTV8S20866C9[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C8__8S20866C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
};
static  VTT_ENTRY vtt_S20866C9[] = {
  {&(_ZTV8S20866C9[6]),  6,12},
  {&(_ZTV8S20866C9[6]),  6,12},
  {&(_ZTV8S20866C9[6]),  6,12},
  {&(_tg__ZTV8S20866C8__8S20866C9[4]),  4,6},
  {&(_tg__ZTV8S20866C8__8S20866C9[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20866C9[];
extern  VTBL_ENTRY _ZTV8S20866C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C9[];
Class_Descriptor cd_S20866C9 = {  "S20866C9", // class name
  bases_S20866C9, 2,
  &(vtc_S20866C9[0]), // expected_vtbl_contents
  &(vtt_S20866C9[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20866C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20866C9),12, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20866C9),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  S20866C5  : virtual S20866C6 {
  ::S20866C9 s20866c5f0;
  char s20866c5f1;
  virtual  ~S20866C5(); // _ZN8S20866C5D2Ev
  virtual void  v14(); // _ZN8S20866C53v14Ev
  virtual void  v15(); // _ZN8S20866C53v15Ev
  virtual void  v16(); // _ZN8S20866C53v16Ev
  virtual void  v17(); // _ZN8S20866C53v17Ev
  virtual void  v18(); // _ZN8S20866C53v18Ev
  virtual void  v19(); // _ZN8S20866C53v19Ev
  S20866C5(); // tgen
};
//SIG(-1 S20866C5) C1{ VBC2{ VBC3{ v7} BC4{ VBC3 v8} vd v9 v10 Fi} vd v1 v2 v3 v4 v5 v6 FC5{ VBC4 v11 v12 v13 v14} Fc}


 S20866C5 ::~S20866C5(){ note_dtor("S20866C5", this);}
void  S20866C5 ::v14(){vfunc_called(this, "_ZN8S20866C53v14Ev");}
void  S20866C5 ::v15(){vfunc_called(this, "_ZN8S20866C53v15Ev");}
void  S20866C5 ::v16(){vfunc_called(this, "_ZN8S20866C53v16Ev");}
void  S20866C5 ::v17(){vfunc_called(this, "_ZN8S20866C53v17Ev");}
void  S20866C5 ::v18(){vfunc_called(this, "_ZN8S20866C53v18Ev");}
void  S20866C5 ::v19(){vfunc_called(this, "_ZN8S20866C53v19Ev");}
S20866C5 ::S20866C5(){ note_ctor("S20866C5", this);} // tgen

static void Test_S20866C5()
{
  extern Class_Descriptor cd_S20866C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S20866C5, buf);
    S20866C5 *dp, &lv = *(dp=new (buf) S20866C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S20866C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C5)");
    check_base_class_offset(lv, (S20866C7*)(S20866C6*), 0, "S20866C5");
    check_base_class_offset(lv, (S20866C7*)(S20866C8*)(S20866C6*), 0, "S20866C5");
    check_base_class_offset(lv, (S20866C8*)(S20866C6*), ABISELECT(24,12), "S20866C5");
    check_base_class_offset(lv, (S20866C6*), ABISELECT(24,12), "S20866C5");
    check_field_offset(lv, s20866c5f0, ABISELECT(8,4), "S20866C5.s20866c5f0");
    check_field_offset(lv, s20866c5f1, ABISELECT(16,8), "S20866C5.s20866c5f1");
    test_class_info(&lv, &cd_S20866C5);
    dp->~S20866C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C5(Test_S20866C5, "S20866C5", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S20866C5C1Ev();
extern void _ZN8S20866C5D2Ev();
Name_Map name_map_S20866C5[] = {
  NSPAIR(_ZN8S20866C5C1Ev),
  NSPAIR(_ZN8S20866C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20866C7;
extern VTBL_ENTRY _ZTI8S20866C7[];
extern  VTBL_ENTRY _ZTV8S20866C7[];
extern Class_Descriptor cd_S20866C8;
extern VTBL_ENTRY _ZTI8S20866C8[];
extern  VTBL_ENTRY _ZTV8S20866C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C8[];
extern Class_Descriptor cd_S20866C6;
extern VTBL_ENTRY _ZTI8S20866C6[];
extern  VTBL_ENTRY _ZTV8S20866C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C6[];
static Base_Class bases_S20866C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20866C7,    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_S20866C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20866C6,    ABISELECT(24,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20866C5[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C5D1Ev();
extern void _ZN8S20866C5D0Ev();
extern void _ZN8S20866C53v14Ev();
extern void _ZN8S20866C53v15Ev();
extern void _ZN8S20866C53v16Ev();
extern void _ZN8S20866C53v17Ev();
extern void _ZN8S20866C53v18Ev();
extern void _ZN8S20866C53v19Ev();
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void ABISELECT(_ZTv0_n48_N8S20866C5D1Ev,_ZTv0_n24_N8S20866C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20866C5D1Ev,_ZThn12_N8S20866C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20866C5D0Ev,_ZTv0_n24_N8S20866C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20866C5D0Ev,_ZThn12_N8S20866C5D0Ev)() __attribute__((weak));
extern void _ZN8S20866C63v12Ev();
extern void _ZN8S20866C63v13Ev();
static  VTBL_ENTRY vtc_S20866C5[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C5[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20866C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v19Ev,
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20866C5[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C5D1Ev,_ZTv0_n24_N8S20866C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C5D0Ev,_ZTv0_n24_N8S20866C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20866C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S20866C5[];
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void _ZN8S20866C6D1Ev();
extern void _ZN8S20866C6D0Ev();
extern void _ZN8S20866C63v12Ev();
extern void _ZN8S20866C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C6__8S20866C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C6[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20866C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20866C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v13Ev,
};
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C88S20866C6__8S20866C5[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
};
extern void _ZN8S20866C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C7__8S20866C88S20866C6__8S20866C5[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
};
extern void _ZN8S20866C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C7__8S20866C6__8S20866C5[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20866C6[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
};
static  VTT_ENTRY vtt_S20866C5[] = {
  {&(_ZTV8S20866C5[5]),  5,28},
  {&(_ZTV8S20866C5[22]),  22,28},
  {&(_ZTV8S20866C5[5]),  5,28},
  {&(_tg__ZTV8S20866C6__8S20866C5[4]),  4,10},
  {&(_tg__ZTV8S20866C88S20866C6__8S20866C5[4]),  4,6},
  {&(_tg__ZTV8S20866C7__8S20866C88S20866C6__8S20866C5[3]),  3,4},
  {&(_tg__ZTV8S20866C7__8S20866C6__8S20866C5[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20866C5[];
extern  VTBL_ENTRY _ZTV8S20866C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C5[];
static VTBL_ENTRY alt_thunk_names131[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20866C5D0Ev,_ZTv0_n24_N8S20866C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20866C5D0Ev,_ZThn12_N8S20866C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20866C5D1Ev,_ZTv0_n24_N8S20866C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20866C5D1Ev,_ZThn12_N8S20866C5D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20866C5 = {  "S20866C5", // class name
  bases_S20866C5, 3,
  &(vtc_S20866C5[0]), // expected_vtbl_contents
  &(vtt_S20866C5[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S20866C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20866C5),28, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20866C5),7, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names131,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20866C1  : virtual S20866C2 , virtual S20866C5 {
  virtual  ~S20866C1(); // _ZN8S20866C1D2Ev
  virtual void  v1(); // _ZN8S20866C12v1Ev
  virtual void  v2(); // _ZN8S20866C12v2Ev
  virtual void  v3(); // _ZN8S20866C12v3Ev
  virtual void  v4(); // _ZN8S20866C12v4Ev
  S20866C1(); // tgen
};
//SIG(1 S20866C1) C1{ VBC2{ VBC3{ v5 v6 v7 v8 Fc Fp Fi FL:8} VBC4{ m} v9} VBC5{ VBC6{ VBC7{ v10} BC8{ VBC7 v11} vd v12 v13 Fi} vd v14 v15 v16 v17 v18 v19 FC9{ VBC8 v20 v21 v22 v23} Fc} vd v1 v2 v3 v4}


 S20866C1 ::~S20866C1(){ note_dtor("S20866C1", this);}
void  S20866C1 ::v1(){vfunc_called(this, "_ZN8S20866C12v1Ev");}
void  S20866C1 ::v2(){vfunc_called(this, "_ZN8S20866C12v2Ev");}
void  S20866C1 ::v3(){vfunc_called(this, "_ZN8S20866C12v3Ev");}
void  S20866C1 ::v4(){vfunc_called(this, "_ZN8S20866C12v4Ev");}
S20866C1 ::S20866C1(){ note_ctor("S20866C1", this);} // tgen

static void Test_S20866C1()
{
  extern Class_Descriptor cd_S20866C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,12)];
    init_test(&cd_S20866C1, buf);
    S20866C1 *dp, &lv = *(dp=new (buf) S20866C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20866C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20866C1)");
    check_base_class_offset(lv, (S20866C3*)(S20866C2*), ABISELECT(8,4), "S20866C1");
    check_base_class_offset(lv, (S9624C48*)(S20866C2*), 0, "S20866C1");
    check_base_class_offset(lv, (S20866C2*), 0, "S20866C1");
    check_base_class_offset(lv, (S20866C7*)(S20866C6*), ABISELECT(40,24), "S20866C1");
    check_base_class_offset(lv, (S20866C7*)(S20866C8*)(S20866C6*), ABISELECT(40,24), "S20866C1");
    check_base_class_offset(lv, (S20866C8*)(S20866C6*), ABISELECT(64,36), "S20866C1");
    check_base_class_offset(lv, (S20866C6*)(S20866C5*), ABISELECT(64,36), "S20866C1");
    check_base_class_offset(lv, (S20866C5*), ABISELECT(40,24), "S20866C1");
    test_class_info(&lv, &cd_S20866C1);
    dp->~S20866C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20866C1(Test_S20866C1, "S20866C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S20866C1C1Ev();
extern void _ZN8S20866C1D2Ev();
Name_Map name_map_S20866C1[] = {
  NSPAIR(_ZN8S20866C1C1Ev),
  NSPAIR(_ZN8S20866C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20866C3;
extern VTBL_ENTRY _ZTI8S20866C3[];
extern  VTBL_ENTRY _ZTV8S20866C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20866C2;
extern VTBL_ENTRY _ZTI8S20866C2[];
extern  VTBL_ENTRY _ZTV8S20866C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C2[];
extern Class_Descriptor cd_S20866C7;
extern VTBL_ENTRY _ZTI8S20866C7[];
extern  VTBL_ENTRY _ZTV8S20866C7[];
extern Class_Descriptor cd_S20866C8;
extern VTBL_ENTRY _ZTI8S20866C8[];
extern  VTBL_ENTRY _ZTV8S20866C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C8[];
extern Class_Descriptor cd_S20866C6;
extern VTBL_ENTRY _ZTI8S20866C6[];
extern  VTBL_ENTRY _ZTV8S20866C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C6[];
extern Class_Descriptor cd_S20866C5;
extern VTBL_ENTRY _ZTI8S20866C5[];
extern  VTBL_ENTRY _ZTV8S20866C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C5[];
static Base_Class bases_S20866C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20866C3,    ABISELECT(8,4), //bcp->offset
    16, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20866C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //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_S20866C7,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20866C8,    ABISELECT(64,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20866C6,    ABISELECT(64,36), //bcp->offset
    47, //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
    5, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S20866C5,    ABISELECT(40,24), //bcp->offset
    26, //bcp->virtual_function_table_offset
    12, //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 _ZTI8S20866C1[];
extern void _ZN8S20866C22v9Ev();
extern void _ZN8S20866C1D1Ev();
extern void _ZN8S20866C1D0Ev();
extern void _ZN8S20866C12v1Ev();
extern void _ZN8S20866C12v2Ev();
extern void _ZN8S20866C12v3Ev();
extern void _ZN8S20866C12v4Ev();
extern void _ZN8S20866C32v5Ev();
extern void _ZN8S20866C32v6Ev();
extern void _ZN8S20866C32v7Ev();
extern void _ZN8S20866C32v8Ev();
extern void _ZN8S20866C73v10Ev();
extern void ABISELECT(_ZTv0_n48_N8S20866C1D1Ev,_ZTv0_n24_N8S20866C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S20866C1D1Ev,_ZThn24_N8S20866C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20866C1D0Ev,_ZTv0_n24_N8S20866C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S20866C1D0Ev,_ZThn24_N8S20866C1D0Ev)() __attribute__((weak));
extern void _ZN8S20866C53v14Ev();
extern void _ZN8S20866C53v15Ev();
extern void _ZN8S20866C53v16Ev();
extern void _ZN8S20866C53v17Ev();
extern void _ZN8S20866C53v18Ev();
extern void _ZN8S20866C53v19Ev();
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void ABISELECT(_ZTv0_n48_N8S20866C1D1Ev,_ZTv0_n24_N8S20866C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S20866C1D1Ev,_ZThn36_N8S20866C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20866C1D0Ev,_ZTv0_n24_N8S20866C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S20866C1D0Ev,_ZThn36_N8S20866C1D0Ev)() __attribute__((weak));
extern void _ZN8S20866C63v12Ev();
extern void _ZN8S20866C63v13Ev();
static  VTBL_ENTRY vtc_S20866C1[] = {
  ABISELECT(40,24),
  ABISELECT(64,36),
  ABISELECT(40,24),
  0,
  0,
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C1[0]),
  (VTBL_ENTRY)&_ZN8S20866C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20866C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20866C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20866C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20866C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20866C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20866C12v4Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20866C1[0]),
  (VTBL_ENTRY)&_ZN8S20866C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v8Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  0,
  ABISELECT(24,12),
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20866C1[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C1D1Ev,_ZTv0_n24_N8S20866C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C1D0Ev,_ZTv0_n24_N8S20866C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20866C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v19Ev,
  0,
  0,
  ABISELECT(-64,-36),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S20866C1[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C1D1Ev,_ZTv0_n24_N8S20866C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C1D0Ev,_ZTv0_n24_N8S20866C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20866C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v13Ev,
};
extern VTBL_ENTRY _ZTV8S20866C1[];
extern void _ZN8S20866C22v9Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C2__8S20866C1[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C2[0]),
  (VTBL_ENTRY)&_ZN8S20866C22v9Ev,
};
extern void _ZN8S20866C32v5Ev();
extern void _ZN8S20866C32v6Ev();
extern void _ZN8S20866C32v7Ev();
extern void _ZN8S20866C32v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C3__8S20866C2__8S20866C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20866C2[0]),
  (VTBL_ENTRY)&_ZN8S20866C32v5Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20866C32v8Ev,
};
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C5D1Ev();
extern void _ZN8S20866C5D0Ev();
extern void _ZN8S20866C53v14Ev();
extern void _ZN8S20866C53v15Ev();
extern void _ZN8S20866C53v16Ev();
extern void _ZN8S20866C53v17Ev();
extern void _ZN8S20866C53v18Ev();
extern void _ZN8S20866C53v19Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C5__8S20866C1[] = {
  0,
  ABISELECT(24,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C5[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C5D1Ev,
  (VTBL_ENTRY)&_ZN8S20866C5D0Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v14Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v15Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v16Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v17Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v18Ev,
  (VTBL_ENTRY)&_ZN8S20866C53v19Ev,
};
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void ABISELECT(_ZTv0_n48_N8S20866C5D1Ev,_ZTv0_n24_N8S20866C5D1Ev)();
extern void ABISELECT(_ZThn24_N8S20866C5D1Ev,_ZThn12_N8S20866C5D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S20866C5D0Ev,_ZTv0_n24_N8S20866C5D0Ev)();
extern void ABISELECT(_ZThn24_N8S20866C5D0Ev,_ZThn12_N8S20866C5D0Ev)() __attribute__((weak));
extern void _ZN8S20866C63v12Ev();
extern void _ZN8S20866C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C6__8S20866C5__8S20866C1[] = {
  0,
  0,
  ABISELECT(-24,-12),
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20866C5[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C5D1Ev,_ZTv0_n24_N8S20866C5D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S20866C5D0Ev,_ZTv0_n24_N8S20866C5D0Ev),
  (VTBL_ENTRY)&_ZN8S20866C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v13Ev,
};
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
extern void _ZN8S20866C6D1Ev();
extern void _ZN8S20866C6D0Ev();
extern void _ZN8S20866C63v12Ev();
extern void _ZN8S20866C63v13Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C6__8S20866C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C6[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
  (VTBL_ENTRY)&_ZN8S20866C6D1Ev,
  (VTBL_ENTRY)&_ZN8S20866C6D0Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v12Ev,
  (VTBL_ENTRY)&_ZN8S20866C63v13Ev,
};
extern void _ZN8S20866C73v10Ev();
extern void _ZN8S20866C83v11Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C88S20866C6__8S20866C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
  (VTBL_ENTRY)&_ZN8S20866C83v11Ev,
};
extern void _ZN8S20866C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C7__8S20866C88S20866C6__8S20866C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20866C8[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
};
extern void _ZN8S20866C73v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20866C7__8S20866C6__8S20866C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S20866C6[0]),
  (VTBL_ENTRY)&_ZN8S20866C73v10Ev,
};
static  VTT_ENTRY vtt_S20866C1[] = {
  {&(_ZTV8S20866C1[9]),  9,61},
  {&(_ZTV8S20866C1[9]),  9,61},
  {&(_ZTV8S20866C1[22]),  22,61},
  {&(_ZTV8S20866C1[38]),  38,61},
  {&(_ZTV8S20866C1[55]),  55,61},
  {&(_ZTV8S20866C1[38]),  38,61},
  {&(_tg__ZTV8S20866C2__8S20866C1[4]),  4,5},
  {&(_tg__ZTV8S20866C3__8S20866C2__8S20866C1[6]),  6,10},
  {&(_tg__ZTV8S20866C5__8S20866C1[5]),  5,14},
  {&(_tg__ZTV8S20866C6__8S20866C5__8S20866C1[8]),  8,14},
  {&(_tg__ZTV8S20866C5__8S20866C1[5]),  5,14},
  {&(_tg__ZTV8S20866C6__8S20866C1[4]),  4,10},
  {&(_tg__ZTV8S20866C88S20866C6__8S20866C1[4]),  4,6},
  {&(_tg__ZTV8S20866C7__8S20866C88S20866C6__8S20866C1[3]),  3,4},
  {&(_tg__ZTV8S20866C7__8S20866C6__8S20866C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20866C1[];
extern  VTBL_ENTRY _ZTV8S20866C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20866C1[];
static VTBL_ENTRY alt_thunk_names132[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20866C5D0Ev,_ZTv0_n24_N8S20866C5D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20866C5D0Ev,_ZThn12_N8S20866C5D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20866C5D1Ev,_ZTv0_n24_N8S20866C5D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S20866C5D1Ev,_ZThn12_N8S20866C5D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20866C1D0Ev,_ZTv0_n24_N8S20866C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20866C1D0Ev,_ZThn36_N8S20866C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20866C1D0Ev,_ZThn24_N8S20866C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S20866C1D1Ev,_ZTv0_n24_N8S20866C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S20866C1D1Ev,_ZThn36_N8S20866C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S20866C1D1Ev,_ZThn24_N8S20866C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20866C1 = {  "S20866C1", // class name
  bases_S20866C1, 7,
  &(vtc_S20866C1[0]), // expected_vtbl_contents
  &(vtt_S20866C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S20866C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20866C1),61, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20866C1),15, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names132,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2592C2  : S20489C10_nt {
  int s2592c2f0[3];
  ::S2569C4_nt s2592c2f1;
  int s2592c2f2;
  virtual  ~S2592C2(); // _ZN7S2592C2D1Ev
  virtual void  v9(); // _ZN7S2592C22v9Ev
  virtual void  v10(); // _ZN7S2592C23v10Ev
  virtual void  v11(); // _ZN7S2592C23v11Ev
  virtual void  v12(); // _ZN7S2592C23v12Ev
  virtual void  v13(); // _ZN7S2592C23v13Ev
  virtual void  v14(); // _ZN7S2592C23v14Ev
  virtual void  v15(); // _ZN7S2592C23v15Ev
  virtual void  v16(); // _ZN7S2592C23v16Ev
  virtual void  v17(); // _ZN7S2592C23v17Ev
  virtual void  v18(); // _ZN7S2592C23v18Ev
  virtual void  v19(); // _ZN7S2592C23v19Ev
  virtual void  v20(); // _ZN7S2592C23v20Ev
  virtual void  v21(); // _ZN7S2592C23v21Ev
  virtual void  v22(); // _ZN7S2592C23v22Ev
  S2592C2(); // tgen
};
//SIG(-1 S2592C2) C1{ BC2{ m Fi} vd v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 Fi[3] FC3{ BC4{ BC5{ BC6{}} FC7{ BC8{}}} FU9{ Fc[16] Fp} Fi Fi} Fi}


 S2592C2 ::~S2592C2(){ note_dtor("S2592C2", this);}
void  S2592C2 ::v9(){vfunc_called(this, "_ZN7S2592C22v9Ev");}
void  S2592C2 ::v10(){vfunc_called(this, "_ZN7S2592C23v10Ev");}
void  S2592C2 ::v11(){vfunc_called(this, "_ZN7S2592C23v11Ev");}
void  S2592C2 ::v12(){vfunc_called(this, "_ZN7S2592C23v12Ev");}
void  S2592C2 ::v13(){vfunc_called(this, "_ZN7S2592C23v13Ev");}
void  S2592C2 ::v14(){vfunc_called(this, "_ZN7S2592C23v14Ev");}
void  S2592C2 ::v15(){vfunc_called(this, "_ZN7S2592C23v15Ev");}
void  S2592C2 ::v16(){vfunc_called(this, "_ZN7S2592C23v16Ev");}
void  S2592C2 ::v17(){vfunc_called(this, "_ZN7S2592C23v17Ev");}
void  S2592C2 ::v18(){vfunc_called(this, "_ZN7S2592C23v18Ev");}
void  S2592C2 ::v19(){vfunc_called(this, "_ZN7S2592C23v19Ev");}
void  S2592C2 ::v20(){vfunc_called(this, "_ZN7S2592C23v20Ev");}
void  S2592C2 ::v21(){vfunc_called(this, "_ZN7S2592C23v21Ev");}
void  S2592C2 ::v22(){vfunc_called(this, "_ZN7S2592C23v22Ev");}
S2592C2 ::S2592C2(){ note_ctor("S2592C2", this);} // tgen

static void Test_S2592C2()
{
  extern Class_Descriptor cd_S2592C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,14)];
    init_test(&cd_S2592C2, buf);
    S2592C2 *dp, &lv = *(dp=new (buf) S2592C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,52), "sizeof(S2592C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2592C2)");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S2592C2");
    check_field_offset(lv, s2592c2f0, ABISELECT(12,8), "S2592C2.s2592c2f0");
    check_field_offset(lv, s2592c2f1, ABISELECT(24,20), "S2592C2.s2592c2f1");
    check_field_offset(lv, s2592c2f2, ABISELECT(56,48), "S2592C2.s2592c2f2");
    test_class_info(&lv, &cd_S2592C2);
    dp->~S2592C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2592C2(Test_S2592C2, "S2592C2", ABISELECT(64,52));

#else // __cplusplus

extern void _ZN7S2592C2C1Ev();
extern void _ZN7S2592C2D1Ev();
Name_Map name_map_S2592C2[] = {
  NSPAIR(_ZN7S2592C2C1Ev),
  NSPAIR(_ZN7S2592C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S2592C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2592C2[];
extern void _ZN7S2592C2D1Ev();
extern void _ZN7S2592C2D0Ev();
extern void _ZN7S2592C22v9Ev();
extern void _ZN7S2592C23v10Ev();
extern void _ZN7S2592C23v11Ev();
extern void _ZN7S2592C23v12Ev();
extern void _ZN7S2592C23v13Ev();
extern void _ZN7S2592C23v14Ev();
extern void _ZN7S2592C23v15Ev();
extern void _ZN7S2592C23v16Ev();
extern void _ZN7S2592C23v17Ev();
extern void _ZN7S2592C23v18Ev();
extern void _ZN7S2592C23v19Ev();
extern void _ZN7S2592C23v20Ev();
extern void _ZN7S2592C23v21Ev();
extern void _ZN7S2592C23v22Ev();
static  VTBL_ENTRY vtc_S2592C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2592C2[0]),
  (VTBL_ENTRY)&_ZN7S2592C2D1Ev,
  (VTBL_ENTRY)&_ZN7S2592C2D0Ev,
  (VTBL_ENTRY)&_ZN7S2592C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v22Ev,
};
extern VTBL_ENTRY _ZTI7S2592C2[];
extern  VTBL_ENTRY _ZTV7S2592C2[];
Class_Descriptor cd_S2592C2 = {  "S2592C2", // class name
  bases_S2592C2, 1,
  &(vtc_S2592C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(64,52), // object size
  NSPAIRA(_ZTI7S2592C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2592C2),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S2592C1  : S2592C2 {
  void *s2592c1f0;
  virtual void  v1(); // _ZN7S2592C12v1Ev
  virtual void  v2(); // _ZN7S2592C12v2Ev
  virtual void  v3(); // _ZN7S2592C12v3Ev
  virtual void  v4(); // _ZN7S2592C12v4Ev
  virtual void  v5(); // _ZN7S2592C12v5Ev
  virtual void  v6(); // _ZN7S2592C12v6Ev
  virtual void  v7(); // _ZN7S2592C12v7Ev
  virtual void  v8(); // _ZN7S2592C12v8Ev
  ~S2592C1(); // tgen
  S2592C1(); // tgen
};
//SIG(1 S2592C1) C1{ BC2{ BC3{ m Fi} vd v9 v10 v11 v12 v13 v14 v15 v16 v17 v18 v19 v20 v21 v22 Fi[3] FC4{ BC5{ BC6{ BC7{}} FC8{ BC9{}}} FU10{ Fc[16] Fp} Fi Fi} Fi} v1 v2 v3 v4 v5 v6 v7 v8 Fp}


void  S2592C1 ::v1(){vfunc_called(this, "_ZN7S2592C12v1Ev");}
void  S2592C1 ::v2(){vfunc_called(this, "_ZN7S2592C12v2Ev");}
void  S2592C1 ::v3(){vfunc_called(this, "_ZN7S2592C12v3Ev");}
void  S2592C1 ::v4(){vfunc_called(this, "_ZN7S2592C12v4Ev");}
void  S2592C1 ::v5(){vfunc_called(this, "_ZN7S2592C12v5Ev");}
void  S2592C1 ::v6(){vfunc_called(this, "_ZN7S2592C12v6Ev");}
void  S2592C1 ::v7(){vfunc_called(this, "_ZN7S2592C12v7Ev");}
void  S2592C1 ::v8(){vfunc_called(this, "_ZN7S2592C12v8Ev");}
S2592C1 ::~S2592C1(){ note_dtor("S2592C1", this);} // tgen
S2592C1 ::S2592C1(){ note_ctor("S2592C1", this);} // tgen

static void Test_S2592C1()
{
  extern Class_Descriptor cd_S2592C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,15)];
    init_test(&cd_S2592C1, buf);
    S2592C1 *dp, &lv = *(dp=new (buf) S2592C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,56), "sizeof(S2592C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2592C1)");
    check_base_class_offset(lv, (S20489C10_nt*)(S2592C2*), ABISELECT(8,4), "S2592C1");
    check_base_class_offset(lv, (S2592C2*), 0, "S2592C1");
    check_field_offset(lv, s2592c1f0, ABISELECT(64,52), "S2592C1.s2592c1f0");
    test_class_info(&lv, &cd_S2592C1);
    dp->~S2592C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2592C1(Test_S2592C1, "S2592C1", ABISELECT(72,56));

#else // __cplusplus

extern void _ZN7S2592C1C1Ev();
extern void _ZN7S2592C1D1Ev();
Name_Map name_map_S2592C1[] = {
  NSPAIR(_ZN7S2592C1C1Ev),
  NSPAIR(_ZN7S2592C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S2592C2;
extern VTBL_ENTRY _ZTI7S2592C2[];
extern  VTBL_ENTRY _ZTV7S2592C2[];
static Base_Class bases_S2592C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2592C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2592C1[];
extern void _ZN7S2592C1D1Ev();
extern void _ZN7S2592C1D0Ev();
extern void _ZN7S2592C22v9Ev();
extern void _ZN7S2592C23v10Ev();
extern void _ZN7S2592C23v11Ev();
extern void _ZN7S2592C23v12Ev();
extern void _ZN7S2592C23v13Ev();
extern void _ZN7S2592C23v14Ev();
extern void _ZN7S2592C23v15Ev();
extern void _ZN7S2592C23v16Ev();
extern void _ZN7S2592C23v17Ev();
extern void _ZN7S2592C23v18Ev();
extern void _ZN7S2592C23v19Ev();
extern void _ZN7S2592C23v20Ev();
extern void _ZN7S2592C23v21Ev();
extern void _ZN7S2592C23v22Ev();
extern void _ZN7S2592C12v1Ev();
extern void _ZN7S2592C12v2Ev();
extern void _ZN7S2592C12v3Ev();
extern void _ZN7S2592C12v4Ev();
extern void _ZN7S2592C12v5Ev();
extern void _ZN7S2592C12v6Ev();
extern void _ZN7S2592C12v7Ev();
extern void _ZN7S2592C12v8Ev();
static  VTBL_ENTRY vtc_S2592C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2592C1[0]),
  (VTBL_ENTRY)&_ZN7S2592C1D1Ev,
  (VTBL_ENTRY)&_ZN7S2592C1D0Ev,
  (VTBL_ENTRY)&_ZN7S2592C22v9Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v10Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v11Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v12Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v13Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v14Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v15Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v16Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v17Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v18Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v19Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v20Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v21Ev,
  (VTBL_ENTRY)&_ZN7S2592C23v22Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v1Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v2Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v3Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v4Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v5Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v6Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v7Ev,
  (VTBL_ENTRY)&_ZN7S2592C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S2592C1[];
extern  VTBL_ENTRY _ZTV7S2592C1[];
Class_Descriptor cd_S2592C1 = {  "S2592C1", // class name
  bases_S2592C1, 2,
  &(vtc_S2592C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,56), // object size
  NSPAIRA(_ZTI7S2592C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2592C1),26, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual 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  S21021C3  : virtual S9624C48 {
  int s21021c3f0;
  ~S21021C3(); // tgen
  S21021C3(); // tgen
};
//SIG(-1 S21021C3) C1{ VBC2{ m} Fi}


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

static void Test_S21021C3()
{
  extern Class_Descriptor cd_S21021C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21021C3, buf);
    S21021C3 *dp, &lv = *(dp=new (buf) S21021C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21021C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C3)");
    check_base_class_offset(lv, (S9624C48*), 0, "S21021C3");
    check_field_offset(lv, s21021c3f0, ABISELECT(8,4), "S21021C3.s21021c3f0");
    test_class_info(&lv, &cd_S21021C3);
    dp->~S21021C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C3(Test_S21021C3, "S21021C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21021C3C1Ev();
extern void _ZN8S21021C3D1Ev();
Name_Map name_map_S21021C3[] = {
  NSPAIR(_ZN8S21021C3C1Ev),
  NSPAIR(_ZN8S21021C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S21021C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S21021C3[];
static  VTBL_ENTRY vtc_S21021C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
extern VTBL_ENTRY _ZTV8S21021C3[];
static  VTT_ENTRY vtt_S21021C3[] = {
  {&(_ZTV8S21021C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
Class_Descriptor cd_S21021C3 = {  "S21021C3", // class name
  bases_S21021C3, 1,
  &(vtc_S21021C3[0]), // expected_vtbl_contents
  &(vtt_S21021C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21021C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21021C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21021C3),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  S21021C7  : S9624C48 {
};
//SIG(-1 S21021C7) C1{ BC2{ m}}



static void Test_S21021C7()
{
  extern Class_Descriptor cd_S21021C7;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S21021C7, buf);
    S21021C7 &lv = *(new (buf) S21021C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S21021C7)");
    check2(__alignof__(lv), 1, "__alignof__(S21021C7)");
    check_base_class_offset(lv, (S9624C48*), 0, "S21021C7");
    test_class_info(&lv, &cd_S21021C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C7(Test_S21021C7, "S21021C7", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S21021C6  : S9624C48 , S21021C7 , S21021C3 , virtual S20489C10_nt , virtual S20489C8 {
  ::S21021C7 s21021c6f0;
  ~S21021C6(); // tgen
  S21021C6(); // tgen
};
//SIG(-1 S21021C6) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S21021C6()
{
  extern Class_Descriptor cd_S21021C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21021C6, buf);
    S21021C6 *dp, &lv = *(dp=new (buf) S21021C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21021C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C6)");
    /*is_ambiguous_... S21021C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S21021C6");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*), ABISELECT(12,8), "S21021C6");
    check_base_class_offset(lv, (S21021C7*), ABISELECT(12,8), "S21021C6");
    check_base_class_offset(lv, (S9624C48*)(S21021C3*), ABISELECT(14,10), "S21021C6");
    check_base_class_offset(lv, (S21021C3*), 0, "S21021C6");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,12), "S21021C6");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S21021C6");
    check_field_offset(lv, s21021c6f0, ABISELECT(13,9), "S21021C6.s21021c6f0");
    test_class_info(&lv, &cd_S21021C6);
    dp->~S21021C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C6(Test_S21021C6, "S21021C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21021C6C1Ev();
extern void _ZN8S21021C6D1Ev();
Name_Map name_map_S21021C6[] = {
  NSPAIR(_ZN8S21021C6C1Ev),
  NSPAIR(_ZN8S21021C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S21021C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21021C3,    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_S20489C10_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21021C6[];
static  VTBL_ENTRY vtc_S21021C6[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
extern VTBL_ENTRY _ZTV8S21021C6[];
static  VTBL_ENTRY _tg__ZTV8S21021C3__8S21021C6[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTT_ENTRY vtt_S21021C6[] = {
  {&(_ZTV8S21021C6[5]),  5,5},
  {&(_tg__ZTV8S21021C3__8S21021C6[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
Class_Descriptor cd_S21021C6 = {  "S21021C6", // class name
  bases_S21021C6, 7,
  &(vtc_S21021C6[0]), // expected_vtbl_contents
  &(vtt_S21021C6[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21021C6),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21021C6),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21021C6),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  S21021C11  : virtual S9624C39 , S9624C48 , S20489C10_nt , S21021C7 , S20489C8 {
  ~S21021C11(); // tgen
  S21021C11(); // tgen
};
//SIG(-1 S21021C11) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S21021C11()
{
  extern Class_Descriptor cd_S21021C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21021C11, buf);
    S21021C11 *dp, &lv = *(dp=new (buf) S21021C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21021C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C11)");
    check_base_class_offset(lv, (S9624C39*), 0, "S21021C11");
    /*is_ambiguous_... S21021C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S21021C11");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S21021C11");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*), ABISELECT(12,8), "S21021C11");
    check_base_class_offset(lv, (S21021C7*), ABISELECT(12,8), "S21021C11");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S21021C11");
    test_class_info(&lv, &cd_S21021C11);
    dp->~S21021C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C11(Test_S21021C11, "S21021C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S21021C11C1Ev();
extern void _ZN9S21021C11D1Ev();
Name_Map name_map_S21021C11[] = {
  NSPAIR(_ZN9S21021C11C1Ev),
  NSPAIR(_ZN9S21021C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S21021C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21021C11[];
static  VTBL_ENTRY vtc_S21021C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C11[0]),
};
extern VTBL_ENTRY _ZTV9S21021C11[];
static  VTT_ENTRY vtt_S21021C11[] = {
  {&(_ZTV9S21021C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21021C11[];
extern  VTBL_ENTRY _ZTV9S21021C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C11[];
Class_Descriptor cd_S21021C11 = {  "S21021C11", // class name
  bases_S21021C11, 6,
  &(vtc_S21021C11[0]), // expected_vtbl_contents
  &(vtt_S21021C11[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S21021C11),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV9S21021C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21021C11),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  S21021C10  : virtual S21021C11 {
  ~S21021C10(); // tgen
  S21021C10(); // tgen
};
//SIG(-1 S21021C10) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}}}


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

static void Test_S21021C10()
{
  extern Class_Descriptor cd_S21021C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S21021C10, buf);
    S21021C10 *dp, &lv = *(dp=new (buf) S21021C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S21021C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C10)");
    check_base_class_offset(lv, (S9624C39*)(S21021C11*), 0, "S21021C10");
    /*is_ambiguous_... S21021C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C11*), ABISELECT(8,4), "S21021C10");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C11*), ABISELECT(16,8), "S21021C10");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C11*), ABISELECT(20,12), "S21021C10");
    check_base_class_offset(lv, (S21021C7*)(S21021C11*), ABISELECT(20,12), "S21021C10");
    check_base_class_offset(lv, (S20489C8*)(S21021C11*), ABISELECT(24,12), "S21021C10");
    check_base_class_offset(lv, (S21021C11*), ABISELECT(8,4), "S21021C10");
    test_class_info(&lv, &cd_S21021C10);
    dp->~S21021C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C10(Test_S21021C10, "S21021C10", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN9S21021C10C1Ev();
extern void _ZN9S21021C10D1Ev();
Name_Map name_map_S21021C10[] = {
  NSPAIR(_ZN9S21021C10C1Ev),
  NSPAIR(_ZN9S21021C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C11;
extern VTBL_ENTRY _ZTI9S21021C11[];
extern  VTBL_ENTRY _ZTV9S21021C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C11[];
static Base_Class bases_S21021C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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_S9624C48,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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_S21021C11,    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 _ZTI9S21021C10[];
static  VTBL_ENTRY vtc_S21021C10[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
extern VTBL_ENTRY _ZTV9S21021C10[];
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C10[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C11[0]),
};
static  VTT_ENTRY vtt_S21021C10[] = {
  {&(_ZTV9S21021C10[4]),  4,7},
  {&(_ZTV9S21021C10[7]),  7,7},
  {&(_tg__ZTV9S21021C11__9S21021C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21021C10[];
extern  VTBL_ENTRY _ZTV9S21021C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C10[];
Class_Descriptor cd_S21021C10 = {  "S21021C10", // class name
  bases_S21021C10, 7,
  &(vtc_S21021C10[0]), // expected_vtbl_contents
  &(vtt_S21021C10[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI9S21021C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21021C10),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21021C10),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  S21021C13  : virtual S21021C11 , virtual S20489C10_nt , S21021C6 {
  short s21021c13f0;
  virtual  ~S21021C13(); // _ZN9S21021C13D2Ev
  S21021C13(); // tgen
};
//SIG(-1 S21021C13) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}} VBC5 BC8{ BC4 BC6 BC9{ VBC4 Fi} VBC5 VBC7 FC6} vd Fs}


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

static void Test_S21021C13()
{
  extern Class_Descriptor cd_S21021C13;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21021C13, buf);
    S21021C13 *dp, &lv = *(dp=new (buf) S21021C13());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21021C13)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C13)");
    check_base_class_offset(lv, (S9624C39*)(S21021C11*), 0, "S21021C13");
    /*is_ambiguous_... S21021C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C11*), ABISELECT(16,12), "S21021C13");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C11*), ABISELECT(24,16), "S21021C13");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C11*), ABISELECT(28,20), "S21021C13");
    check_base_class_offset(lv, (S21021C7*)(S21021C11*), ABISELECT(28,20), "S21021C13");
    check_base_class_offset(lv, (S20489C8*)(S21021C11*), ABISELECT(32,20), "S21021C13");
    check_base_class_offset(lv, (S21021C11*), ABISELECT(16,12), "S21021C13");
    /*is_ambiguous_... S21021C13::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(40,24), "S21021C13");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*), ABISELECT(40,24), "S21021C13");
    /*is_ambiguous_... S21021C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*), 0, "S21021C13");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*), ABISELECT(12,8), "S21021C13");
    check_base_class_offset(lv, (S21021C7*)(S21021C6*), ABISELECT(12,8), "S21021C13");
    check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*), ABISELECT(44,28), "S21021C13");
    check_base_class_offset(lv, (S21021C3*)(S21021C6*), 0, "S21021C13");
    check_base_class_offset(lv, (S20489C8*)(S21021C6*), ABISELECT(48,28), "S21021C13");
    check_base_class_offset(lv, (S21021C6*), 0, "S21021C13");
    check_field_offset(lv, s21021c13f0, ABISELECT(14,10), "S21021C13.s21021c13f0");
    test_class_info(&lv, &cd_S21021C13);
    dp->~S21021C13();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C13(Test_S21021C13, "S21021C13", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN9S21021C13C1Ev();
extern void _ZN9S21021C13D2Ev();
Name_Map name_map_S21021C13[] = {
  NSPAIR(_ZN9S21021C13C1Ev),
  NSPAIR(_ZN9S21021C13D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C11;
extern VTBL_ENTRY _ZTI9S21021C11[];
extern  VTBL_ENTRY _ZTV9S21021C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C11[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
static Base_Class bases_S21021C13[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21021C11,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21021C3,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S21021C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21021C13[];
extern void _ZN9S21021C13D1Ev();
extern void _ZN9S21021C13D0Ev();
static  VTBL_ENTRY vtc_S21021C13[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
  (VTBL_ENTRY)&_ZN9S21021C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21021C13D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
};
extern VTBL_ENTRY _ZTV9S21021C13[];
static  VTBL_ENTRY _tg__ZTV8S21021C6__9S21021C13[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C6__9S21021C13[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C13[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C11[0]),
};
static  VTT_ENTRY vtt_S21021C13[] = {
  {&(_ZTV9S21021C13[7]),  7,12},
  {&(_tg__ZTV8S21021C6__9S21021C13[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C6__9S21021C13[3]),  3,3},
  {&(_ZTV9S21021C13[12]),  12,12},
  {&(_tg__ZTV9S21021C11__9S21021C13[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21021C13[];
extern  VTBL_ENTRY _ZTV9S21021C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C13[];
Class_Descriptor cd_S21021C13 = {  "S21021C13", // class name
  bases_S21021C13, 15,
  &(vtc_S21021C13[0]), // expected_vtbl_contents
  &(vtt_S21021C13[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI9S21021C13),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21021C13),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21021C13),5, //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  S21021C5  : virtual S21021C6 , virtual S21021C10 , S21021C13 {
  int s21021c5f0;
  virtual  ~S21021C5(); // _ZN8S21021C5D2Ev
  S21021C5(); // tgen
};
//SIG(-1 S21021C5) C1{ VBC2{ BC3{ m} BC4{ BC3} BC5{ VBC3 Fi} VBC6{ m Fi} VBC7{ m Fi:0 Fp} FC4} VBC8{ VBC9{ VBC10{ m} BC3 BC6 BC4 BC7}} BC11{ VBC9 VBC6 BC2 vd Fs} vd Fi}


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

static void Test_S21021C5()
{
  extern Class_Descriptor cd_S21021C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,14)];
    init_test(&cd_S21021C5, buf);
    S21021C5 *dp, &lv = *(dp=new (buf) S21021C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S21021C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C5)");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*), ABISELECT(24,16), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*), ABISELECT(36,24), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C7*)(S21021C6*), ABISELECT(36,24), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*), ABISELECT(38,26), "S21021C5");
    check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*)(S21021C13*), ABISELECT(38,26), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C3*)(S21021C6*), ABISELECT(24,16), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*), ABISELECT(40,28), "S21021C5");
    /*is_ambiguous_... S21021C13::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21021C13*), ABISELECT(40,28), "S21021C5");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*)(S21021C13*), ABISELECT(40,28), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S20489C8*)(S21021C6*), ABISELECT(48,32), "S21021C5");
    check_base_class_offset(lv, (S20489C8*)(S21021C6*)(S21021C13*), ABISELECT(48,32), "S21021C5");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C6*), ABISELECT(24,16), "S21021C5");
    check_base_class_offset(lv, (S9624C39*)(S21021C11*), 0, "S21021C5");
    /*is_ambiguous_... S21021C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C11*), ABISELECT(64,40), "S21021C5");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C11*), ABISELECT(72,44), "S21021C5");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C11*), ABISELECT(76,48), "S21021C5");
    check_base_class_offset(lv, (S21021C7*)(S21021C11*), ABISELECT(76,48), "S21021C5");
    check_base_class_offset(lv, (S20489C8*)(S21021C11*), ABISELECT(80,48), "S21021C5");
    check_base_class_offset(lv, (S21021C11*)(S21021C10*), ABISELECT(64,40), "S21021C5");
    check_base_class_offset(lv, (S21021C11*)(S21021C13*), ABISELECT(64,40), "S21021C5");
    check_base_class_offset(lv, (S21021C10*), ABISELECT(56,36), "S21021C5");
    /*is_ambiguous_... S21021C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*)(S21021C13*), 0, "S21021C5");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*)(S21021C13*), ABISELECT(12,8), "S21021C5");
    check_base_class_offset(lv, (S21021C7*)(S21021C6*)(S21021C13*), ABISELECT(12,8), "S21021C5");
    check_base_class_offset(lv, (S21021C3*)(S21021C6*)(S21021C13*), 0, "S21021C5");
    check_base_class_offset(lv, (S21021C6*)(S21021C13*), 0, "S21021C5");
    check_base_class_offset(lv, (S21021C13*), 0, "S21021C5");
    check_field_offset(lv, s21021c5f0, ABISELECT(16,12), "S21021C5.s21021c5f0");
    test_class_info(&lv, &cd_S21021C5);
    dp->~S21021C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C5(Test_S21021C5, "S21021C5", ABISELECT(88,52));

#else // __cplusplus

extern void _ZN8S21021C5C1Ev();
extern void _ZN8S21021C5D2Ev();
Name_Map name_map_S21021C5[] = {
  NSPAIR(_ZN8S21021C5C1Ev),
  NSPAIR(_ZN8S21021C5D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C11;
extern VTBL_ENTRY _ZTI9S21021C11[];
extern  VTBL_ENTRY _ZTV9S21021C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C11[];
extern Class_Descriptor cd_S21021C10;
extern VTBL_ENTRY _ZTI9S21021C10[];
extern  VTBL_ENTRY _ZTV9S21021C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
extern Class_Descriptor cd_S21021C13;
extern VTBL_ENTRY _ZTI9S21021C13[];
extern  VTBL_ENTRY _ZTV9S21021C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C13[];
static Base_Class bases_S21021C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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_S9624C48,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(38,26), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21021C3,    ABISELECT(24,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
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21021C6,    ABISELECT(24,16), //bcp->offset
    11, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(76,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S21021C11,    ABISELECT(64,40), //bcp->offset
    20, //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
    3, //init_seq
    15, //immediately_derived
  0, 1},
  {&cd_S21021C10,    ABISELECT(56,36), //bcp->offset
    16, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    18, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21021C3,    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
    5, //init_seq
    20, //immediately_derived
  0, 0},
  {&cd_S21021C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21021C13,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21021C5[];
extern void _ZN8S21021C5D1Ev();
extern void _ZN8S21021C5D0Ev();
static  VTBL_ENTRY vtc_S21021C5[] = {
  ABISELECT(56,36),
  ABISELECT(24,16),
  0,
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(38,26),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
  (VTBL_ENTRY)&_ZN8S21021C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21021C5D0Ev,
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
  ABISELECT(-56,-36),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
extern VTBL_ENTRY _ZTV8S21021C5[];
extern void _ZN9S21021C13D1Ev();
extern void _ZN9S21021C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21021C13__8S21021C5[] = {
  0,
  ABISELECT(64,40),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(38,26),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
  (VTBL_ENTRY)&_ZN9S21021C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21021C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21021C69S21021C13__A1__8S21021C5[] = {
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(38,26),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C69S21021C13__A1__8S21021C5[] = {
  ABISELECT(38,26),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C13__8S21021C5[] = {
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C6__8S21021C5[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C6__8S21021C5[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C10__8S21021C5[] = {
  ABISELECT(-56,-36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C10__8S21021C5[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__8S21021C5[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C11[0]),
};
static  VTT_ENTRY vtt_S21021C5[] = {
  {&(_ZTV8S21021C5[9]),  9,23},
  {&(_tg__ZTV9S21021C13__8S21021C5[7]),  7,9},
  {&(_tg__ZTV8S21021C69S21021C13__A1__8S21021C5[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C69S21021C13__A1__8S21021C5[3]),  3,3},
  {&(_tg__ZTV9S21021C11__9S21021C13__8S21021C5[3]),  3,3},
  {&(_ZTV8S21021C5[16]),  16,23},
  {&(_ZTV8S21021C5[20]),  20,23},
  {&(_ZTV8S21021C5[23]),  23,23},
  {&(_tg__ZTV8S21021C6__8S21021C5[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C6__8S21021C5[3]),  3,3},
  {&(_tg__ZTV9S21021C10__8S21021C5[4]),  4,4},
  {&(_tg__ZTV9S21021C11__9S21021C10__8S21021C5[3]),  3,3},
  {&(_tg__ZTV9S21021C11__8S21021C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21021C5[];
extern  VTBL_ENTRY _ZTV8S21021C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C5[];
Class_Descriptor cd_S21021C5 = {  "S21021C5", // class name
  bases_S21021C5, 22,
  &(vtc_S21021C5[0]), // expected_vtbl_contents
  &(vtt_S21021C5[0]), // expected_vtt_contents
  ABISELECT(88,52), // object size
  NSPAIRA(_ZTI8S21021C5),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21021C5),23, //virtual function table var
  9, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21021C5),13, //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  S21021C2  : virtual S21021C3 , virtual S21021C5 {
  virtual  ~S21021C2(); // _ZN8S21021C2D2Ev
  virtual void  v1(); // _ZN8S21021C22v1Ev
  S21021C2(); // tgen
};
//SIG(-1 S21021C2) C1{ VBC2{ VBC3{ m} Fi} VBC4{ VBC5{ BC3 BC6{ BC3} BC2 VBC7{ m Fi} VBC8{ m Fi:0 Fp} FC6} VBC9{ VBC10{ VBC11{ m} BC3 BC7 BC6 BC8}} BC12{ VBC10 VBC7 BC5 vd Fs} vd Fi} vd v1}


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

static void Test_S21021C2()
{
  extern Class_Descriptor cd_S21021C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(14,16)];
    init_test(&cd_S21021C2, buf);
    S21021C2 *dp, &lv = *(dp=new (buf) S21021C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(104,60), "sizeof(S21021C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C2)");
    /*is_ambiguous_... S21021C2::S21021C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C3*), 0, "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*), 0, "S21021C2");
    check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*)(S21021C13*)(S21021C5*), 0, "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C3 */ AMB_check_base_class_offset(lv, (S21021C3*), ABISELECT(8,4), "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*), ABISELECT(48,28), "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*), ABISELECT(60,36), "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C7*)(S21021C6*), ABISELECT(60,36), "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C3*)(S21021C6*), ABISELECT(48,28), "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*), ABISELECT(64,40), "S21021C2");
    /*is_ambiguous_... S21021C13::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21021C13*)(S21021C5*), ABISELECT(64,40), "S21021C2");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(64,40), "S21021C2");
    /*is_ambiguous_... S21021C2::S21021C6 */ AMB_check_base_class_offset(lv, (S20489C8*)(S21021C6*), ABISELECT(72,44), "S21021C2");
    check_base_class_offset(lv, (S20489C8*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(72,44), "S21021C2");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C6*)(S21021C5*), ABISELECT(48,28), "S21021C2");
    check_base_class_offset(lv, (S9624C39*)(S21021C11*), 0, "S21021C2");
    /*is_ambiguous_... S21021C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C11*), ABISELECT(80,48), "S21021C2");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C11*), ABISELECT(88,52), "S21021C2");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C11*), ABISELECT(92,56), "S21021C2");
    check_base_class_offset(lv, (S21021C7*)(S21021C11*), ABISELECT(92,56), "S21021C2");
    check_base_class_offset(lv, (S20489C8*)(S21021C11*), ABISELECT(96,56), "S21021C2");
    check_base_class_offset(lv, (S21021C11*)(S21021C10*), ABISELECT(80,48), "S21021C2");
    check_base_class_offset(lv, (S21021C11*)(S21021C13*)(S21021C5*), ABISELECT(80,48), "S21021C2");
    check_base_class_offset(lv, (S21021C10*)(S21021C5*), 0, "S21021C2");
    /*is_ambiguous_... S21021C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(24,12), "S21021C2");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(36,20), "S21021C2");
    check_base_class_offset(lv, (S21021C7*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(36,20), "S21021C2");
    check_base_class_offset(lv, (S21021C3*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(24,12), "S21021C2");
    check_base_class_offset(lv, (S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(24,12), "S21021C2");
    check_base_class_offset(lv, (S21021C13*)(S21021C5*), ABISELECT(24,12), "S21021C2");
    check_base_class_offset(lv, (S21021C5*), ABISELECT(24,12), "S21021C2");
    test_class_info(&lv, &cd_S21021C2);
    dp->~S21021C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C2(Test_S21021C2, "S21021C2", ABISELECT(104,60));

#else // __cplusplus

extern void _ZN8S21021C2C1Ev();
extern void _ZN8S21021C2D2Ev();
Name_Map name_map_S21021C2[] = {
  NSPAIR(_ZN8S21021C2C1Ev),
  NSPAIR(_ZN8S21021C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C11;
extern VTBL_ENTRY _ZTI9S21021C11[];
extern  VTBL_ENTRY _ZTV9S21021C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C11[];
extern Class_Descriptor cd_S21021C10;
extern VTBL_ENTRY _ZTI9S21021C10[];
extern  VTBL_ENTRY _ZTV9S21021C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
extern Class_Descriptor cd_S21021C13;
extern VTBL_ENTRY _ZTI9S21021C13[];
extern  VTBL_ENTRY _ZTV9S21021C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C13[];
extern Class_Descriptor cd_S21021C5;
extern VTBL_ENTRY _ZTI8S21021C5[];
extern  VTBL_ENTRY _ZTV8S21021C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C5[];
static Base_Class bases_S21021C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21021C3,    ABISELECT(8,4), //bcp->offset
    14, //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_S9624C48,    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
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(60,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(60,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21021C3,    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
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20489C8,    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
    8, //immediately_derived
  0, 1},
  {&cd_S21021C6,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(88,52), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(92,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_S21021C7,    ABISELECT(92,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
    15, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    15, //immediately_derived
  0, 0},
  {&cd_S21021C11,    ABISELECT(80,48), //bcp->offset
    34, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21021C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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
    21, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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
    19, //immediately_derived
  0, 0},
  {&cd_S21021C7,    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
    21, //immediately_derived
  0, 0},
  {&cd_S21021C3,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21021C6,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21021C13,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21021C5,    ABISELECT(24,12), //bcp->offset
    17, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21021C2[];
extern void _ZN8S21021C2D1Ev();
extern void _ZN8S21021C2D0Ev();
extern void _ZN8S21021C22v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21021C2D1Ev,_ZTv0_n40_N8S21021C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S21021C2D1Ev,_ZThn12_N8S21021C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21021C2D0Ev,_ZTv0_n40_N8S21021C2D0Ev)();
extern void ABISELECT(_ZThn24_N8S21021C2D0Ev,_ZThn12_N8S21021C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21021C2[] = {
  0,
  ABISELECT(72,44),
  ABISELECT(64,40),
  ABISELECT(48,28),
  ABISELECT(24,12),
  0,
  ABISELECT(8,4),
  0,
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
  (VTBL_ENTRY)&_ZN8S21021C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21021C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21021C22v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21021C2D1Ev,_ZTv0_n40_N8S21021C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21021C2D0Ev,_ZTv0_n40_N8S21021C2D0Ev),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
};
extern VTBL_ENTRY _ZTV8S21021C2[];
static  VTBL_ENTRY _tg__ZTV8S21021C3__8S21021C2[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
extern void _ZN8S21021C5D1Ev();
extern void _ZN8S21021C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21021C5__8S21021C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(24,16),
  ABISELECT(-24,-12),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
  (VTBL_ENTRY)&_ZN8S21021C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21021C5D0Ev,
};
extern void _ZN9S21021C13D1Ev();
extern void _ZN9S21021C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21021C138S21021C5__8S21021C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
  (VTBL_ENTRY)&_ZN9S21021C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21021C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21021C69S21021C138S21021C5__A1__8S21021C2[] = {
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C69S21021C138S21021C5__A2__8S21021C2[] = {
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C138S21021C5__8S21021C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C6__8S21021C5__8S21021C2[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-48,-28),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C10__8S21021C5__8S21021C2[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__8S21021C5__8S21021C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C6__8S21021C2[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C6__A1__8S21021C2[] = {
  ABISELECT(-48,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C10__8S21021C2[] = {
  0,
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C10__8S21021C2[] = {
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__8S21021C2[] = {
  ABISELECT(-80,-48),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C11[0]),
};
static  VTT_ENTRY vtt_S21021C2[] = {
  {&(_ZTV8S21021C2[11]),  11,37},
  {&(_ZTV8S21021C2[17]),  17,37},
  {&(_ZTV8S21021C2[27]),  27,37},
  {&(_ZTV8S21021C2[34]),  34,37},
  {&(_ZTV8S21021C2[11]),  11,37},
  {&(_ZTV8S21021C2[37]),  37,37},
  {&(_tg__ZTV8S21021C3__8S21021C2[3]),  3,3},
  {&(_tg__ZTV8S21021C5__8S21021C2[9]),  9,11},
  {&(_tg__ZTV9S21021C138S21021C5__8S21021C2[7]),  7,9},
  {&(_tg__ZTV8S21021C69S21021C138S21021C5__A1__8S21021C2[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C69S21021C138S21021C5__A2__8S21021C2[3]),  3,3},
  {&(_tg__ZTV9S21021C11__9S21021C138S21021C5__8S21021C2[3]),  3,3},
  {&(_tg__ZTV8S21021C6__8S21021C5__8S21021C2[5]),  5,5},
  {&(_tg__ZTV9S21021C10__8S21021C5__8S21021C2[4]),  4,4},
  {&(_tg__ZTV9S21021C11__8S21021C5__8S21021C2[3]),  3,3},
  {&(_tg__ZTV8S21021C6__8S21021C2[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C6__A1__8S21021C2[3]),  3,3},
  {&(_tg__ZTV9S21021C10__8S21021C2[4]),  4,4},
  {&(_tg__ZTV9S21021C11__9S21021C10__8S21021C2[3]),  3,3},
  {&(_tg__ZTV9S21021C11__8S21021C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21021C2[];
extern  VTBL_ENTRY _ZTV8S21021C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C2[];
static VTBL_ENTRY alt_thunk_names133[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21021C2D0Ev,_ZTv0_n40_N8S21021C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21021C2D0Ev,_ZThn12_N8S21021C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21021C2D1Ev,_ZTv0_n40_N8S21021C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S21021C2D1Ev,_ZThn12_N8S21021C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21021C2 = {  "S21021C2", // class name
  bases_S21021C2, 24,
  &(vtc_S21021C2[0]), // expected_vtbl_contents
  &(vtt_S21021C2[0]), // expected_vtt_contents
  ABISELECT(104,60), // object size
  NSPAIRA(_ZTI8S21021C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21021C2),37, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21021C2),20, //virtual table table var
  9, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names133,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21021C1  : virtual S21021C2 {
  int s21021c1f0;
  virtual  ~S21021C1(); // _ZN8S21021C1D2Ev
  S21021C1(); // tgen
};
//SIG(1 S21021C1) C1{ VBC2{ VBC3{ VBC4{ m} Fi} VBC5{ VBC6{ BC4 BC7{ BC4} BC3 VBC8{ m Fi} VBC9{ m Fi:0 Fp} FC7} VBC10{ VBC11{ VBC12{ m} BC4 BC8 BC7 BC9}} BC13{ VBC11 VBC8 BC6 vd Fs} vd Fi} vd v1} vd Fi}


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

static void Test_S21021C1()
{
  extern Class_Descriptor cd_S21021C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S21021C1, buf);
    S21021C1 *dp, &lv = *(dp=new (buf) S21021C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S21021C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21021C1)");
    /*is_ambiguous_... S21021C1::S21021C3 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C3*), 0, "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*), 0, "S21021C1");
    check_base_class_offset(lv, (S9624C48*)(S21021C3*)(S21021C6*)(S21021C13*)(S21021C5*), 0, "S21021C1");
    /*is_ambiguous_... S21021C2::S21021C3 */ AMB_check_base_class_offset(lv, (S21021C3*)(S21021C2*), ABISELECT(16,8), "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*), ABISELECT(56,32), "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*), ABISELECT(68,40), "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C7*)(S21021C6*), ABISELECT(68,40), "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C3*)(S21021C6*), ABISELECT(56,32), "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*), ABISELECT(72,44), "S21021C1");
    /*is_ambiguous_... S21021C13::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21021C13*)(S21021C5*), ABISELECT(72,44), "S21021C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(72,44), "S21021C1");
    /*is_ambiguous_... S21021C1::S21021C6 */ AMB_check_base_class_offset(lv, (S20489C8*)(S21021C6*), ABISELECT(80,48), "S21021C1");
    check_base_class_offset(lv, (S20489C8*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(80,48), "S21021C1");
    /*is_ambiguous_... S21021C5::S21021C6 */ AMB_check_base_class_offset(lv, (S21021C6*)(S21021C5*), ABISELECT(56,32), "S21021C1");
    check_base_class_offset(lv, (S9624C39*)(S21021C11*), 0, "S21021C1");
    /*is_ambiguous_... S21021C11::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C11*), ABISELECT(88,52), "S21021C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S21021C11*), ABISELECT(96,56), "S21021C1");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C11*), ABISELECT(100,60), "S21021C1");
    check_base_class_offset(lv, (S21021C7*)(S21021C11*), ABISELECT(100,60), "S21021C1");
    check_base_class_offset(lv, (S20489C8*)(S21021C11*), ABISELECT(104,60), "S21021C1");
    check_base_class_offset(lv, (S21021C11*)(S21021C10*), ABISELECT(88,52), "S21021C1");
    check_base_class_offset(lv, (S21021C11*)(S21021C13*)(S21021C5*), ABISELECT(88,52), "S21021C1");
    check_base_class_offset(lv, (S21021C10*)(S21021C5*), 0, "S21021C1");
    /*is_ambiguous_... S21021C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(32,16), "S21021C1");
    check_base_class_offset(lv, (S9624C48*)(S21021C7*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(44,24), "S21021C1");
    check_base_class_offset(lv, (S21021C7*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(44,24), "S21021C1");
    check_base_class_offset(lv, (S21021C3*)(S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(32,16), "S21021C1");
    check_base_class_offset(lv, (S21021C6*)(S21021C13*)(S21021C5*), ABISELECT(32,16), "S21021C1");
    check_base_class_offset(lv, (S21021C13*)(S21021C5*), ABISELECT(32,16), "S21021C1");
    check_base_class_offset(lv, (S21021C5*)(S21021C2*), ABISELECT(32,16), "S21021C1");
    check_base_class_offset(lv, (S21021C2*), 0, "S21021C1");
    check_field_offset(lv, s21021c1f0, ABISELECT(8,4), "S21021C1.s21021c1f0");
    test_class_info(&lv, &cd_S21021C1);
    dp->~S21021C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21021C1(Test_S21021C1, "S21021C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S21021C1C1Ev();
extern void _ZN8S21021C1D2Ev();
Name_Map name_map_S21021C1[] = {
  NSPAIR(_ZN8S21021C1C1Ev),
  NSPAIR(_ZN8S21021C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21021C11;
extern VTBL_ENTRY _ZTI9S21021C11[];
extern  VTBL_ENTRY _ZTV9S21021C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C11[];
extern Class_Descriptor cd_S21021C10;
extern VTBL_ENTRY _ZTI9S21021C10[];
extern  VTBL_ENTRY _ZTV9S21021C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S21021C7;
extern VTBL_ENTRY _ZTI8S21021C7[];
extern Class_Descriptor cd_S21021C3;
extern VTBL_ENTRY _ZTI8S21021C3[];
extern  VTBL_ENTRY _ZTV8S21021C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C3[];
extern Class_Descriptor cd_S21021C6;
extern VTBL_ENTRY _ZTI8S21021C6[];
extern  VTBL_ENTRY _ZTV8S21021C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C6[];
extern Class_Descriptor cd_S21021C13;
extern VTBL_ENTRY _ZTI9S21021C13[];
extern  VTBL_ENTRY _ZTV9S21021C13[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21021C13[];
extern Class_Descriptor cd_S21021C5;
extern VTBL_ENTRY _ZTI8S21021C5[];
extern  VTBL_ENTRY _ZTV8S21021C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C5[];
extern Class_Descriptor cd_S21021C2;
extern VTBL_ENTRY _ZTI8S21021C2[];
extern  VTBL_ENTRY _ZTV8S21021C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C2[];
static Base_Class bases_S21021C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21021C3,    ABISELECT(16,8), //bcp->offset
    17, //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
    24, //immediately_derived
  0, 1},
  {&cd_S9624C48,    ABISELECT(56,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(68,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21021C7,    ABISELECT(68,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S21021C3,    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
    24, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    8, //immediately_derived
  0, 1},
  {&cd_S21021C6,    ABISELECT(56,32), //bcp->offset
    32, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    23, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    15, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    15, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(100,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_S21021C7,    ABISELECT(100,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_S20489C8,    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
    15, //immediately_derived
  0, 0},
  {&cd_S21021C11,    ABISELECT(88,52), //bcp->offset
    37, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    27, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    16, //immediately_derived
  0, 1},
  {&cd_S21021C10,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    25, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    23, //immediately_derived
  0, 1},
  {&cd_S9624C48,    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_S9624C48,    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
    19, //immediately_derived
  0, 0},
  {&cd_S21021C7,    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
    21, //immediately_derived
  0, 0},
  {&cd_S21021C3,    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
    6, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21021C6,    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
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    22, //immediately_derived
  0, 0},
  {&cd_S21021C13,    ABISELECT(32,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    16, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21021C5,    ABISELECT(32,16), //bcp->offset
    20, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21021C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    13, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21021C1[];
extern void _ZN8S21021C1D1Ev();
extern void _ZN8S21021C1D0Ev();
extern void _ZN8S21021C22v1Ev();
extern void ABISELECT(_ZTv0_n80_N8S21021C1D1Ev,_ZTv0_n40_N8S21021C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S21021C1D1Ev,_ZThn16_N8S21021C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21021C1D0Ev,_ZTv0_n40_N8S21021C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S21021C1D0Ev,_ZThn16_N8S21021C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21021C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C1[0]),
  (VTBL_ENTRY)&_ZN8S21021C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21021C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21021C22v1Ev,
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21021C1[0]),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21021C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21021C1D1Ev,_ZTv0_n40_N8S21021C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21021C1D0Ev,_ZTv0_n40_N8S21021C1D0Ev),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21021C1[0]),
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21021C1[0]),
};
extern VTBL_ENTRY _ZTV8S21021C1[];
extern void _ZN8S21021C2D1Ev();
extern void _ZN8S21021C2D0Ev();
extern void _ZN8S21021C22v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21021C2__8S21021C1[] = {
  0,
  ABISELECT(80,48),
  ABISELECT(72,44),
  ABISELECT(56,32),
  ABISELECT(32,16),
  0,
  ABISELECT(16,8),
  0,
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
  (VTBL_ENTRY)&_ZN8S21021C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21021C2D0Ev,
  (VTBL_ENTRY)&_ZN8S21021C22v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21021C3__8S21021C2__8S21021C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
};
extern void ABISELECT(_ZTv0_n80_N8S21021C2D1Ev,_ZTv0_n40_N8S21021C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21021C2D1Ev,_ZThn16_N8S21021C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n80_N8S21021C2D0Ev,_ZTv0_n40_N8S21021C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21021C2D0Ev,_ZThn16_N8S21021C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S21021C5__8S21021C2__8S21021C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21021C2D1Ev,_ZTv0_n40_N8S21021C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n80_N8S21021C2D0Ev,_ZTv0_n40_N8S21021C2D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S21021C6__8S21021C2__8S21021C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__8S21021C2__8S21021C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S21021C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C3__8S21021C1[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
extern void _ZN8S21021C5D1Ev();
extern void _ZN8S21021C5D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21021C5__8S21021C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(24,16),
  ABISELECT(-32,-16),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
  (VTBL_ENTRY)&_ZN8S21021C5D1Ev,
  (VTBL_ENTRY)&_ZN8S21021C5D0Ev,
};
extern void _ZN9S21021C13D1Ev();
extern void _ZN9S21021C13D0Ev();
static  VTBL_ENTRY _tg__ZTV9S21021C138S21021C5__8S21021C1[] = {
  ABISELECT(-32,-16),
  ABISELECT(56,36),
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
  (VTBL_ENTRY)&_ZN9S21021C13D1Ev,
  (VTBL_ENTRY)&_ZN9S21021C13D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21021C69S21021C138S21021C5__A1__8S21021C1[] = {
  ABISELECT(48,32),
  ABISELECT(40,28),
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C69S21021C138S21021C5__A2__8S21021C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C138S21021C5__8S21021C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI9S21021C13[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C6__8S21021C5__8S21021C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C10__8S21021C5__8S21021C1[] = {
  0,
  ABISELECT(88,52),
  ABISELECT(32,16),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__8S21021C5__8S21021C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S21021C5[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C6__8S21021C1[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C6[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21021C38S21021C6__A1__8S21021C1[] = {
  ABISELECT(-56,-32),
  0,
  (VTBL_ENTRY)&(_ZTI8S21021C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C10__8S21021C1[] = {
  0,
  ABISELECT(88,52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__9S21021C10__8S21021C1[] = {
  ABISELECT(-88,-52),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI9S21021C10[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21021C11__8S21021C1[] = {
  ABISELECT(-88,-52),
  0,
  (VTBL_ENTRY)&(_ZTI9S21021C11[0]),
};
static  VTT_ENTRY vtt_S21021C1[] = {
  {&(_ZTV8S21021C1[14]),  14,40},
  {&(_ZTV8S21021C1[14]),  14,40},
  {&(_ZTV8S21021C1[20]),  20,40},
  {&(_ZTV8S21021C1[30]),  30,40},
  {&(_ZTV8S21021C1[37]),  37,40},
  {&(_ZTV8S21021C1[14]),  14,40},
  {&(_ZTV8S21021C1[40]),  40,40},
  {&(_tg__ZTV8S21021C2__8S21021C1[11]),  11,14},
  {&(_tg__ZTV8S21021C3__8S21021C2__8S21021C1[3]),  3,3},
  {&(_tg__ZTV8S21021C5__8S21021C2__8S21021C1[10]),  10,12},
  {&(_tg__ZTV8S21021C6__8S21021C2__8S21021C1[5]),  5,5},
  {&(_tg__ZTV8S21021C2__8S21021C1[11]),  11,14},
  {&(_tg__ZTV9S21021C11__8S21021C2__8S21021C1[3]),  3,3},
  {&(_tg__ZTV8S21021C3__8S21021C1[3]),  3,3},
  {&(_tg__ZTV8S21021C5__8S21021C1[9]),  9,11},
  {&(_tg__ZTV9S21021C138S21021C5__8S21021C1[7]),  7,9},
  {&(_tg__ZTV8S21021C69S21021C138S21021C5__A1__8S21021C1[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C69S21021C138S21021C5__A2__8S21021C1[3]),  3,3},
  {&(_tg__ZTV9S21021C11__9S21021C138S21021C5__8S21021C1[3]),  3,3},
  {&(_tg__ZTV8S21021C6__8S21021C5__8S21021C1[5]),  5,5},
  {&(_tg__ZTV9S21021C10__8S21021C5__8S21021C1[4]),  4,4},
  {&(_tg__ZTV9S21021C11__8S21021C5__8S21021C1[3]),  3,3},
  {&(_tg__ZTV8S21021C6__8S21021C1[5]),  5,5},
  {&(_tg__ZTV8S21021C38S21021C6__A1__8S21021C1[3]),  3,3},
  {&(_tg__ZTV9S21021C10__8S21021C1[4]),  4,4},
  {&(_tg__ZTV9S21021C11__9S21021C10__8S21021C1[3]),  3,3},
  {&(_tg__ZTV9S21021C11__8S21021C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21021C1[];
extern  VTBL_ENTRY _ZTV8S21021C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21021C1[];
static VTBL_ENTRY alt_thunk_names134[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21021C2D0Ev,_ZTv0_n40_N8S21021C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21021C2D0Ev,_ZThn16_N8S21021C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21021C2D1Ev,_ZTv0_n40_N8S21021C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21021C2D1Ev,_ZThn16_N8S21021C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21021C1D0Ev,_ZTv0_n40_N8S21021C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21021C1D0Ev,_ZThn16_N8S21021C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n80_N8S21021C1D1Ev,_ZTv0_n40_N8S21021C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21021C1D1Ev,_ZThn16_N8S21021C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21021C1 = {  "S21021C1", // class name
  bases_S21021C1, 25,
  &(vtc_S21021C1[0]), // expected_vtbl_contents
  &(vtt_S21021C1[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S21021C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21021C1),40, //virtual function table var
  14, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21021C1),27, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names134,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19534C4  {
  short s19534c4f0;
  virtual  ~S19534C4(); // _ZN8S19534C4D1Ev
  virtual void  v5(); // _ZN8S19534C42v5Ev
  virtual void  v6(); // _ZN8S19534C42v6Ev
  virtual void  v7(); // _ZN8S19534C42v7Ev
  virtual void  v8(); // _ZN8S19534C42v8Ev
  virtual void  v9(); // _ZN8S19534C42v9Ev
  virtual void  v10(); // _ZN8S19534C43v10Ev
  S19534C4(); // tgen
};
//SIG(-1 S19534C4) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S19534C4 ::~S19534C4(){ note_dtor("S19534C4", this);}
void  S19534C4 ::v5(){vfunc_called(this, "_ZN8S19534C42v5Ev");}
void  S19534C4 ::v6(){vfunc_called(this, "_ZN8S19534C42v6Ev");}
void  S19534C4 ::v7(){vfunc_called(this, "_ZN8S19534C42v7Ev");}
void  S19534C4 ::v8(){vfunc_called(this, "_ZN8S19534C42v8Ev");}
void  S19534C4 ::v9(){vfunc_called(this, "_ZN8S19534C42v9Ev");}
void  S19534C4 ::v10(){vfunc_called(this, "_ZN8S19534C43v10Ev");}
S19534C4 ::S19534C4(){ note_ctor("S19534C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19534C4C1Ev();
extern void _ZN8S19534C4D1Ev();
Name_Map name_map_S19534C4[] = {
  NSPAIR(_ZN8S19534C4C1Ev),
  NSPAIR(_ZN8S19534C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19534C4[];
extern void _ZN8S19534C4D1Ev();
extern void _ZN8S19534C4D0Ev();
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY vtc_S19534C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C4[0]),
  (VTBL_ENTRY)&_ZN8S19534C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
extern VTBL_ENTRY _ZTI8S19534C4[];
extern  VTBL_ENTRY _ZTV8S19534C4[];
Class_Descriptor cd_S19534C4 = {  "S19534C4", // class name
  0,0,//no base classes
  &(vtc_S19534C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19534C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19534C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19534C5  {
  long s19534c5f0;
  virtual void  v11(); // _ZN8S19534C53v11Ev
  virtual void  v12(); // _ZN8S19534C53v12Ev
  virtual void  v13(); // _ZN8S19534C53v13Ev
  virtual void  v14(); // _ZN8S19534C53v14Ev
  virtual void  v15(); // _ZN8S19534C53v15Ev
  ~S19534C5(); // tgen
  S19534C5(); // tgen
};
//SIG(-1 S19534C5) C1{ v1 v2 v3 v4 v5 Fl}


void  S19534C5 ::v11(){vfunc_called(this, "_ZN8S19534C53v11Ev");}
void  S19534C5 ::v12(){vfunc_called(this, "_ZN8S19534C53v12Ev");}
void  S19534C5 ::v13(){vfunc_called(this, "_ZN8S19534C53v13Ev");}
void  S19534C5 ::v14(){vfunc_called(this, "_ZN8S19534C53v14Ev");}
void  S19534C5 ::v15(){vfunc_called(this, "_ZN8S19534C53v15Ev");}
S19534C5 ::~S19534C5(){ note_dtor("S19534C5", this);} // tgen
S19534C5 ::S19534C5(){ note_ctor("S19534C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19534C5C1Ev();
extern void _ZN8S19534C5D1Ev();
Name_Map name_map_S19534C5[] = {
  NSPAIR(_ZN8S19534C5C1Ev),
  NSPAIR(_ZN8S19534C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19534C5[];
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
static  VTBL_ENTRY vtc_S19534C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C5[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
};
extern VTBL_ENTRY _ZTI8S19534C5[];
extern  VTBL_ENTRY _ZTV8S19534C5[];
Class_Descriptor cd_S19534C5 = {  "S19534C5", // class name
  0,0,//no base classes
  &(vtc_S19534C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19534C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19534C5),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  S19534C3  : virtual S19534C4 , S19534C5 {
  char s19534c3f0;
  virtual  ~S19534C3(); // _ZN8S19534C3D2Ev
  S19534C3(); // tgen
};
//SIG(-1 S19534C3) C1{ VBC2{ vd v1 v2 v3 v4 v5 v6 Fs} BC3{ v7 v8 v9 v10 v11 Fl} vd Fc}


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

static void Test_S19534C3()
{
  extern Class_Descriptor cd_S19534C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S19534C3, buf);
    S19534C3 *dp, &lv = *(dp=new (buf) S19534C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S19534C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19534C3)");
    check_base_class_offset(lv, (S19534C4*), ABISELECT(24,12), "S19534C3");
    check_base_class_offset(lv, (S19534C5*), 0, "S19534C3");
    check_field_offset(lv, s19534c3f0, ABISELECT(16,8), "S19534C3.s19534c3f0");
    test_class_info(&lv, &cd_S19534C3);
    dp->~S19534C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19534C3(Test_S19534C3, "S19534C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN8S19534C3C1Ev();
extern void _ZN8S19534C3D2Ev();
Name_Map name_map_S19534C3[] = {
  NSPAIR(_ZN8S19534C3C1Ev),
  NSPAIR(_ZN8S19534C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19534C4;
extern VTBL_ENTRY _ZTI8S19534C4[];
extern  VTBL_ENTRY _ZTV8S19534C4[];
extern Class_Descriptor cd_S19534C5;
extern VTBL_ENTRY _ZTI8S19534C5[];
extern  VTBL_ENTRY _ZTV8S19534C5[];
static Base_Class bases_S19534C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19534C4,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19534C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI8S19534C3[];
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
extern void _ZN8S19534C3D1Ev();
extern void _ZN8S19534C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev)();
extern void ABISELECT(_ZThn24_N8S19534C3D1Ev,_ZThn12_N8S19534C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev)();
extern void ABISELECT(_ZThn24_N8S19534C3D0Ev,_ZThn12_N8S19534C3D0Ev)() __attribute__((weak));
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY vtc_S19534C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C3[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19534C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C3D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19534C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S19534C3[];
static  VTT_ENTRY vtt_S19534C3[] = {
  {&(_ZTV8S19534C3[3]),  3,27},
  {&(_ZTV8S19534C3[19]),  19,27},
};
extern VTBL_ENTRY _ZTI8S19534C3[];
extern  VTBL_ENTRY _ZTV8S19534C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19534C3[];
static VTBL_ENTRY alt_thunk_names135[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19534C3D0Ev,_ZThn12_N8S19534C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19534C3D1Ev,_ZThn12_N8S19534C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19534C3 = {  "S19534C3", // class name
  bases_S19534C3, 2,
  &(vtc_S19534C3[0]), // expected_vtbl_contents
  &(vtt_S19534C3[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI8S19534C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19534C3),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19534C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names135,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19534C7  {
  int s19534c7f0;
  virtual void  v16(); // _ZN8S19534C73v16Ev
  virtual void  v17(); // _ZN8S19534C73v17Ev
  virtual void  v18(); // _ZN8S19534C73v18Ev
  virtual void  v19(); // _ZN8S19534C73v19Ev
  virtual void  v20(); // _ZN8S19534C73v20Ev
  ~S19534C7(); // tgen
  S19534C7(); // tgen
};
//SIG(-1 S19534C7) C1{ v1 v2 v3 v4 v5 Fi}


void  S19534C7 ::v16(){vfunc_called(this, "_ZN8S19534C73v16Ev");}
void  S19534C7 ::v17(){vfunc_called(this, "_ZN8S19534C73v17Ev");}
void  S19534C7 ::v18(){vfunc_called(this, "_ZN8S19534C73v18Ev");}
void  S19534C7 ::v19(){vfunc_called(this, "_ZN8S19534C73v19Ev");}
void  S19534C7 ::v20(){vfunc_called(this, "_ZN8S19534C73v20Ev");}
S19534C7 ::~S19534C7(){ note_dtor("S19534C7", this);} // tgen
S19534C7 ::S19534C7(){ note_ctor("S19534C7", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19534C7C1Ev();
extern void _ZN8S19534C7D1Ev();
Name_Map name_map_S19534C7[] = {
  NSPAIR(_ZN8S19534C7C1Ev),
  NSPAIR(_ZN8S19534C7D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19534C7[];
extern void _ZN8S19534C73v16Ev();
extern void _ZN8S19534C73v17Ev();
extern void _ZN8S19534C73v18Ev();
extern void _ZN8S19534C73v19Ev();
extern void _ZN8S19534C73v20Ev();
static  VTBL_ENTRY vtc_S19534C7[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C7[0]),
  (VTBL_ENTRY)&_ZN8S19534C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v20Ev,
};
extern VTBL_ENTRY _ZTI8S19534C7[];
extern  VTBL_ENTRY _ZTV8S19534C7[];
Class_Descriptor cd_S19534C7 = {  "S19534C7", // class name
  0,0,//no base classes
  &(vtc_S19534C7[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19534C7),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19534C7),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  S19534C6  : S19534C7 {
  ::S10296C15_nt s19534c6f0;
  virtual  ~S19534C6(); // _ZN8S19534C6D1Ev
  virtual void  v21(); // _ZN8S19534C63v21Ev
  virtual void  v22(); // _ZN8S19534C63v22Ev
  virtual void  v23(); // _ZN8S19534C63v23Ev
  S19534C6(); // tgen
};
//SIG(-1 S19534C6) C1{ BC2{ v4 v5 v6 v7 v8 Fi} vd v1 v2 v3 FC3{}}


 S19534C6 ::~S19534C6(){ note_dtor("S19534C6", this);}
void  S19534C6 ::v21(){vfunc_called(this, "_ZN8S19534C63v21Ev");}
void  S19534C6 ::v22(){vfunc_called(this, "_ZN8S19534C63v22Ev");}
void  S19534C6 ::v23(){vfunc_called(this, "_ZN8S19534C63v23Ev");}
S19534C6 ::S19534C6(){ note_ctor("S19534C6", this);} // tgen

static void Test_S19534C6()
{
  extern Class_Descriptor cd_S19534C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19534C6, buf);
    S19534C6 *dp, &lv = *(dp=new (buf) S19534C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19534C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19534C6)");
    check_base_class_offset(lv, (S19534C7*), 0, "S19534C6");
    check_field_offset(lv, s19534c6f0, ABISELECT(12,8), "S19534C6.s19534c6f0");
    test_class_info(&lv, &cd_S19534C6);
    dp->~S19534C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19534C6(Test_S19534C6, "S19534C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19534C6C1Ev();
extern void _ZN8S19534C6D1Ev();
Name_Map name_map_S19534C6[] = {
  NSPAIR(_ZN8S19534C6C1Ev),
  NSPAIR(_ZN8S19534C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19534C7;
extern VTBL_ENTRY _ZTI8S19534C7[];
extern  VTBL_ENTRY _ZTV8S19534C7[];
static Base_Class bases_S19534C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19534C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19534C6[];
extern void _ZN8S19534C73v16Ev();
extern void _ZN8S19534C73v17Ev();
extern void _ZN8S19534C73v18Ev();
extern void _ZN8S19534C73v19Ev();
extern void _ZN8S19534C73v20Ev();
extern void _ZN8S19534C6D1Ev();
extern void _ZN8S19534C6D0Ev();
extern void _ZN8S19534C63v21Ev();
extern void _ZN8S19534C63v22Ev();
extern void _ZN8S19534C63v23Ev();
static  VTBL_ENTRY vtc_S19534C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C6[0]),
  (VTBL_ENTRY)&_ZN8S19534C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v20Ev,
  (VTBL_ENTRY)&_ZN8S19534C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C6D0Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v23Ev,
};
extern VTBL_ENTRY _ZTI8S19534C6[];
extern  VTBL_ENTRY _ZTV8S19534C6[];
Class_Descriptor cd_S19534C6 = {  "S19534C6", // class name
  bases_S19534C6, 1,
  &(vtc_S19534C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19534C6),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19534C6),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19534C2  : S19534C3 , S19534C6 {
  virtual  ~S19534C2(); // _ZN8S19534C2D2Ev
  virtual void  v24(); // _ZN8S19534C23v24Ev
  S19534C2(); // tgen
};
//SIG(-1 S19534C2) C1{ BC2{ VBC3{ vd v2 v3 v4 v5 v6 v7 Fs} BC4{ v8 v9 v10 v11 v12 Fl} vd Fc} BC5{ BC6{ v13 v14 v15 v16 v17 Fi} vd v18 v19 v20 FC7{}} vd v1}


 S19534C2 ::~S19534C2(){ note_dtor("S19534C2", this);}
void  S19534C2 ::v24(){vfunc_called(this, "_ZN8S19534C23v24Ev");}
S19534C2 ::S19534C2(){ note_ctor("S19534C2", this);} // tgen

static void Test_S19534C2()
{
  extern Class_Descriptor cd_S19534C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S19534C2, buf);
    S19534C2 *dp, &lv = *(dp=new (buf) S19534C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S19534C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19534C2)");
    check_base_class_offset(lv, (S19534C4*)(S19534C3*), ABISELECT(40,24), "S19534C2");
    check_base_class_offset(lv, (S19534C5*)(S19534C3*), 0, "S19534C2");
    check_base_class_offset(lv, (S19534C3*), 0, "S19534C2");
    check_base_class_offset(lv, (S19534C7*)(S19534C6*), ABISELECT(24,12), "S19534C2");
    check_base_class_offset(lv, (S19534C6*), ABISELECT(24,12), "S19534C2");
    test_class_info(&lv, &cd_S19534C2);
    dp->~S19534C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19534C2(Test_S19534C2, "S19534C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S19534C2C1Ev();
extern void _ZN8S19534C2D2Ev();
Name_Map name_map_S19534C2[] = {
  NSPAIR(_ZN8S19534C2C1Ev),
  NSPAIR(_ZN8S19534C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19534C4;
extern VTBL_ENTRY _ZTI8S19534C4[];
extern  VTBL_ENTRY _ZTV8S19534C4[];
extern Class_Descriptor cd_S19534C5;
extern VTBL_ENTRY _ZTI8S19534C5[];
extern  VTBL_ENTRY _ZTV8S19534C5[];
extern Class_Descriptor cd_S19534C3;
extern VTBL_ENTRY _ZTI8S19534C3[];
extern  VTBL_ENTRY _ZTV8S19534C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19534C3[];
extern Class_Descriptor cd_S19534C7;
extern VTBL_ENTRY _ZTI8S19534C7[];
extern  VTBL_ENTRY _ZTV8S19534C7[];
extern Class_Descriptor cd_S19534C6;
extern VTBL_ENTRY _ZTI8S19534C6[];
extern  VTBL_ENTRY _ZTV8S19534C6[];
static Base_Class bases_S19534C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19534C4,    ABISELECT(40,24), //bcp->offset
    23, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19534C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19534C3,    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_S19534C7,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19534C6,    ABISELECT(24,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19534C2[];
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
extern void _ZN8S19534C2D1Ev();
extern void _ZN8S19534C2D0Ev();
extern void _ZN8S19534C23v24Ev();
extern void _ZN8S19534C73v16Ev();
extern void _ZN8S19534C73v17Ev();
extern void _ZN8S19534C73v18Ev();
extern void _ZN8S19534C73v19Ev();
extern void _ZN8S19534C73v20Ev();
extern void ABISELECT(_ZThn24_N8S19534C2D1Ev,_ZThn12_N8S19534C2D1Ev)();
extern void ABISELECT(_ZThn24_N8S19534C2D0Ev,_ZThn12_N8S19534C2D0Ev)();
extern void _ZN8S19534C63v21Ev();
extern void _ZN8S19534C63v22Ev();
extern void _ZN8S19534C63v23Ev();
extern void ABISELECT(_ZTv0_n24_N8S19534C2D1Ev,_ZTv0_n12_N8S19534C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19534C2D1Ev,_ZThn24_N8S19534C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19534C2D0Ev,_ZTv0_n12_N8S19534C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19534C2D0Ev,_ZThn24_N8S19534C2D0Ev)() __attribute__((weak));
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY vtc_S19534C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C2[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19534C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19534C23v24Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S19534C2[0]),
  (VTBL_ENTRY)&_ZN8S19534C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19534C2D1Ev,_ZThn12_N8S19534C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn24_N8S19534C2D0Ev,_ZThn12_N8S19534C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v23Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19534C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C2D1Ev,_ZTv0_n12_N8S19534C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C2D0Ev,_ZTv0_n12_N8S19534C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S19534C2[];
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
extern void _ZN8S19534C3D1Ev();
extern void _ZN8S19534C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19534C3__8S19534C2[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C3[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19534C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S19534C3D1Ev,_ZThn24_N8S19534C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S19534C3D0Ev,_ZThn24_N8S19534C3D0Ev)() __attribute__((weak));
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19534C4__8S19534C3__8S19534C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19534C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
static  VTT_ENTRY vtt_S19534C2[] = {
  {&(_ZTV8S19534C2[3]),  3,40},
  {&(_tg__ZTV8S19534C3__8S19534C2[3]),  3,10},
  {&(_tg__ZTV8S19534C4__8S19534C3__8S19534C2[9]),  9,17},
  {&(_ZTV8S19534C2[32]),  32,40},
};
extern VTBL_ENTRY _ZTI8S19534C2[];
extern  VTBL_ENTRY _ZTV8S19534C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19534C2[];
static VTBL_ENTRY alt_thunk_names136[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C3D0Ev,_ZThn24_N8S19534C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C3D1Ev,_ZThn24_N8S19534C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C2D0Ev,_ZTv0_n12_N8S19534C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C2D0Ev,_ZThn24_N8S19534C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C2D1Ev,_ZTv0_n12_N8S19534C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C2D1Ev,_ZThn24_N8S19534C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19534C2 = {  "S19534C2", // class name
  bases_S19534C2, 5,
  &(vtc_S19534C2[0]), // expected_vtbl_contents
  &(vtt_S19534C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S19534C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19534C2),40, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19534C2),4, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names136,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19534C1  : virtual S19534C2 {
  int s19534c1f0;
  char s19534c1f1;
  int s19534c1f2;
  virtual void  v1(); // _ZN8S19534C12v1Ev
  virtual void  v2(); // _ZN8S19534C12v2Ev
  virtual void  v3(); // _ZN8S19534C12v3Ev
  virtual void  v4(); // _ZN8S19534C12v4Ev
  ~S19534C1(); // tgen
  S19534C1(); // tgen
};
//SIG(1 S19534C1) C1{ VBC2{ BC3{ VBC4{ vd v5 v6 v7 v8 v9 v10 Fs} BC5{ v11 v12 v13 v14 v15 Fl} vd Fc} BC6{ BC7{ v16 v17 v18 v19 v20 Fi} vd v21 v22 v23 FC8{}} vd v24} v1 v2 v3 v4 Fi Fc Fi}


void  S19534C1 ::v1(){vfunc_called(this, "_ZN8S19534C12v1Ev");}
void  S19534C1 ::v2(){vfunc_called(this, "_ZN8S19534C12v2Ev");}
void  S19534C1 ::v3(){vfunc_called(this, "_ZN8S19534C12v3Ev");}
void  S19534C1 ::v4(){vfunc_called(this, "_ZN8S19534C12v4Ev");}
S19534C1 ::~S19534C1(){ note_dtor("S19534C1", this);} // tgen
S19534C1 ::S19534C1(){ note_ctor("S19534C1", this);} // tgen

static void Test_S19534C1()
{
  extern Class_Descriptor cd_S19534C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,13)];
    init_test(&cd_S19534C1, buf);
    S19534C1 *dp, &lv = *(dp=new (buf) S19534C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19534C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19534C1)");
    check_base_class_offset(lv, (S19534C4*)(S19534C3*)(S19534C2*), ABISELECT(64,40), "S19534C1");
    check_base_class_offset(lv, (S19534C5*)(S19534C3*)(S19534C2*), ABISELECT(24,16), "S19534C1");
    check_base_class_offset(lv, (S19534C3*)(S19534C2*), ABISELECT(24,16), "S19534C1");
    check_base_class_offset(lv, (S19534C7*)(S19534C6*)(S19534C2*), ABISELECT(48,28), "S19534C1");
    check_base_class_offset(lv, (S19534C6*)(S19534C2*), ABISELECT(48,28), "S19534C1");
    check_base_class_offset(lv, (S19534C2*), ABISELECT(24,16), "S19534C1");
    check_field_offset(lv, s19534c1f0, ABISELECT(8,4), "S19534C1.s19534c1f0");
    check_field_offset(lv, s19534c1f1, ABISELECT(12,8), "S19534C1.s19534c1f1");
    check_field_offset(lv, s19534c1f2, ABISELECT(16,12), "S19534C1.s19534c1f2");
    test_class_info(&lv, &cd_S19534C1);
    dp->~S19534C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19534C1(Test_S19534C1, "S19534C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19534C1C1Ev();
extern void _ZN8S19534C1D1Ev();
Name_Map name_map_S19534C1[] = {
  NSPAIR(_ZN8S19534C1C1Ev),
  NSPAIR(_ZN8S19534C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19534C4;
extern VTBL_ENTRY _ZTI8S19534C4[];
extern  VTBL_ENTRY _ZTV8S19534C4[];
extern Class_Descriptor cd_S19534C5;
extern VTBL_ENTRY _ZTI8S19534C5[];
extern  VTBL_ENTRY _ZTV8S19534C5[];
extern Class_Descriptor cd_S19534C3;
extern VTBL_ENTRY _ZTI8S19534C3[];
extern  VTBL_ENTRY _ZTV8S19534C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19534C3[];
extern Class_Descriptor cd_S19534C7;
extern VTBL_ENTRY _ZTI8S19534C7[];
extern  VTBL_ENTRY _ZTV8S19534C7[];
extern Class_Descriptor cd_S19534C6;
extern VTBL_ENTRY _ZTI8S19534C6[];
extern  VTBL_ENTRY _ZTV8S19534C6[];
extern Class_Descriptor cd_S19534C2;
extern VTBL_ENTRY _ZTI8S19534C2[];
extern  VTBL_ENTRY _ZTV8S19534C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19534C2[];
static Base_Class bases_S19534C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19534C4,    ABISELECT(64,40), //bcp->offset
    48, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19534C5,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19534C3,    ABISELECT(24,16), //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
    3, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19534C7,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19534C6,    ABISELECT(48,28), //bcp->offset
    36, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S19534C2,    ABISELECT(24,16), //bcp->offset
    10, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19534C1[];
extern void _ZN8S19534C12v1Ev();
extern void _ZN8S19534C12v2Ev();
extern void _ZN8S19534C12v3Ev();
extern void _ZN8S19534C12v4Ev();
extern void _ZN8S19534C1D1Ev();
extern void _ZN8S19534C1D0Ev();
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
extern void ABISELECT(_ZTv0_n72_N8S19534C1D1Ev,_ZTv0_n36_N8S19534C1D1Ev)();
extern void ABISELECT(_ZThn24_N8S19534C1D1Ev,_ZThn16_N8S19534C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N8S19534C1D0Ev,_ZTv0_n36_N8S19534C1D0Ev)();
extern void ABISELECT(_ZThn24_N8S19534C1D0Ev,_ZThn16_N8S19534C1D0Ev)() __attribute__((weak));
extern void _ZN8S19534C23v24Ev();
extern void _ZN8S19534C73v16Ev();
extern void _ZN8S19534C73v17Ev();
extern void _ZN8S19534C73v18Ev();
extern void _ZN8S19534C73v19Ev();
extern void _ZN8S19534C73v20Ev();
extern void ABISELECT(_ZTvn24_n72_N8S19534C1D1Ev,_ZTvn12_n36_N8S19534C1D1Ev)();
extern void ABISELECT(_ZTvn24_n72_N8S19534C1D0Ev,_ZTvn12_n36_N8S19534C1D0Ev)();
extern void _ZN8S19534C63v21Ev();
extern void _ZN8S19534C63v22Ev();
extern void _ZN8S19534C63v23Ev();
extern void ABISELECT(_ZTv0_n24_N8S19534C1D1Ev,_ZTv0_n12_N8S19534C1D1Ev)();
extern void ABISELECT(_ZThn64_N8S19534C1D1Ev,_ZThn40_N8S19534C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19534C1D0Ev,_ZTv0_n12_N8S19534C1D0Ev)();
extern void ABISELECT(_ZThn64_N8S19534C1D0Ev,_ZThn40_N8S19534C1D0Ev)() __attribute__((weak));
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY vtc_S19534C1[] = {
  ABISELECT(64,40),
  ABISELECT(24,16),
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C1[0]),
  (VTBL_ENTRY)&_ZN8S19534C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19534C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19534C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19534C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19534C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C1D0Ev,
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  ABISELECT(-24,-16),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(40,24),
  ABISELECT(-24,-16),
  (VTBL_ENTRY)&(_ZTI8S19534C1[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19534C1D1Ev,_ZTv0_n36_N8S19534C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N8S19534C1D0Ev,_ZTv0_n36_N8S19534C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C23v24Ev,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19534C1[0]),
  (VTBL_ENTRY)&_ZN8S19534C73v16Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v17Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v18Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v19Ev,
  (VTBL_ENTRY)&_ZN8S19534C73v20Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n72_N8S19534C1D1Ev,_ZTvn12_n36_N8S19534C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn24_n72_N8S19534C1D0Ev,_ZTvn12_n36_N8S19534C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C63v21Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v22Ev,
  (VTBL_ENTRY)&_ZN8S19534C63v23Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S19534C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C1D1Ev,_ZTv0_n12_N8S19534C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C1D0Ev,_ZTv0_n12_N8S19534C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
extern VTBL_ENTRY _ZTV8S19534C1[];
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
extern void _ZN8S19534C2D1Ev();
extern void _ZN8S19534C2D0Ev();
extern void _ZN8S19534C23v24Ev();
static  VTBL_ENTRY _tg__ZTV8S19534C2__8S19534C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C2[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19534C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19534C23v24Ev,
};
extern void _ZN8S19534C53v11Ev();
extern void _ZN8S19534C53v12Ev();
extern void _ZN8S19534C53v13Ev();
extern void _ZN8S19534C53v14Ev();
extern void _ZN8S19534C53v15Ev();
extern void _ZN8S19534C3D1Ev();
extern void _ZN8S19534C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19534C38S19534C2__8S19534C1[] = {
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S19534C3[0]),
  (VTBL_ENTRY)&_ZN8S19534C53v11Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v12Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v13Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v14Ev,
  (VTBL_ENTRY)&_ZN8S19534C53v15Ev,
  (VTBL_ENTRY)&_ZN8S19534C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19534C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev)();
extern void ABISELECT(_ZThn40_N8S19534C3D1Ev,_ZThn24_N8S19534C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev)();
extern void ABISELECT(_ZThn40_N8S19534C3D0Ev,_ZThn24_N8S19534C3D0Ev)() __attribute__((weak));
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19534C4__8S19534C38S19534C2__8S19534C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19534C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19534C2D1Ev,_ZTv0_n12_N8S19534C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19534C2D1Ev,_ZThn24_N8S19534C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19534C2D0Ev,_ZTv0_n12_N8S19534C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19534C2D0Ev,_ZThn24_N8S19534C2D0Ev)() __attribute__((weak));
extern void _ZN8S19534C42v5Ev();
extern void _ZN8S19534C42v6Ev();
extern void _ZN8S19534C42v7Ev();
extern void _ZN8S19534C42v8Ev();
extern void _ZN8S19534C42v9Ev();
extern void _ZN8S19534C43v10Ev();
static  VTBL_ENTRY _tg__ZTV8S19534C4__8S19534C2__8S19534C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S19534C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C2D1Ev,_ZTv0_n12_N8S19534C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19534C2D0Ev,_ZTv0_n12_N8S19534C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19534C42v5Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v6Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v8Ev,
  (VTBL_ENTRY)&_ZN8S19534C42v9Ev,
  (VTBL_ENTRY)&_ZN8S19534C43v10Ev,
};
static  VTT_ENTRY vtt_S19534C1[] = {
  {&(_ZTV8S19534C1[4]),  4,65},
  {&(_ZTV8S19534C1[28]),  28,65},
  {&(_ZTV8S19534C1[57]),  57,65},
  {&(_ZTV8S19534C1[38]),  38,65},
  {&(_tg__ZTV8S19534C2__8S19534C1[3]),  3,11},
  {&(_tg__ZTV8S19534C38S19534C2__8S19534C1[3]),  3,10},
  {&(_tg__ZTV8S19534C4__8S19534C38S19534C2__8S19534C1[9]),  9,17},
  {&(_tg__ZTV8S19534C4__8S19534C2__8S19534C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI8S19534C1[];
extern  VTBL_ENTRY _ZTV8S19534C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19534C1[];
static VTBL_ENTRY alt_thunk_names137[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C2D0Ev,_ZTv0_n12_N8S19534C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C2D0Ev,_ZThn24_N8S19534C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C2D1Ev,_ZTv0_n12_N8S19534C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C2D1Ev,_ZThn24_N8S19534C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C3D0Ev,_ZTv0_n12_N8S19534C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C3D0Ev,_ZThn24_N8S19534C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C3D1Ev,_ZTv0_n12_N8S19534C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19534C3D1Ev,_ZThn24_N8S19534C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C1D0Ev,_ZTv0_n12_N8S19534C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19534C1D0Ev,_ZThn40_N8S19534C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19534C1D1Ev,_ZTv0_n12_N8S19534C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn64_N8S19534C1D1Ev,_ZThn40_N8S19534C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19534C1D0Ev,_ZTv0_n36_N8S19534C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19534C1D0Ev,_ZThn16_N8S19534C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N8S19534C1D1Ev,_ZTv0_n36_N8S19534C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N8S19534C1D1Ev,_ZThn16_N8S19534C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19534C1 = {  "S19534C1", // class name
  bases_S19534C1, 6,
  &(vtc_S19534C1[0]), // expected_vtbl_contents
  &(vtt_S19534C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19534C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19534C1),65, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19534C1),8, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names137,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21016C7  : S9624C39 {
};
//SIG(-1 S21016C7) C1{ BC2{ m}}



static void Test_S21016C7()
{
  extern Class_Descriptor cd_S21016C7;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S21016C7, buf);
    S21016C7 &lv = *(new (buf) S21016C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S21016C7)");
    check2(__alignof__(lv), 1, "__alignof__(S21016C7)");
    check_base_class_offset(lv, (S9624C39*), 0, "S21016C7");
    test_class_info(&lv, &cd_S21016C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C7(Test_S21016C7, "S21016C7", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S21016C3  : virtual S9624C48 , S9624C39 , S20489C10_nt , S21016C7 , S20489C8 {
  ~S21016C3(); // tgen
  S21016C3(); // tgen
};
//SIG(-1 S21016C3) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S21016C3()
{
  extern Class_Descriptor cd_S21016C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S21016C3, buf);
    S21016C3 *dp, &lv = *(dp=new (buf) S21016C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S21016C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C3)");
    check_base_class_offset(lv, (S9624C48*), 0, "S21016C3");
    /*is_ambiguous_... S21016C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S21016C3");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S21016C3");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*), ABISELECT(12,8), "S21016C3");
    check_base_class_offset(lv, (S21016C7*), ABISELECT(12,8), "S21016C3");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S21016C3");
    test_class_info(&lv, &cd_S21016C3);
    dp->~S21016C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C3(Test_S21016C3, "S21016C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S21016C3C1Ev();
extern void _ZN8S21016C3D1Ev();
Name_Map name_map_S21016C3[] = {
  NSPAIR(_ZN8S21016C3C1Ev),
  NSPAIR(_ZN8S21016C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S21016C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21016C3[];
static  VTBL_ENTRY vtc_S21016C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C3[0]),
};
extern VTBL_ENTRY _ZTV8S21016C3[];
static  VTT_ENTRY vtt_S21016C3[] = {
  {&(_ZTV8S21016C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21016C3[];
extern  VTBL_ENTRY _ZTV8S21016C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C3[];
Class_Descriptor cd_S21016C3 = {  "S21016C3", // class name
  bases_S21016C3, 6,
  &(vtc_S21016C3[0]), // expected_vtbl_contents
  &(vtt_S21016C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S21016C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21016C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21016C3),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  S21016C10  : virtual S9624C39 {
  int s21016c10f0;
  ~S21016C10(); // tgen
  S21016C10(); // tgen
};
//SIG(-1 S21016C10) C1{ VBC2{ m} Fi}


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

static void Test_S21016C10()
{
  extern Class_Descriptor cd_S21016C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21016C10, buf);
    S21016C10 *dp, &lv = *(dp=new (buf) S21016C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21016C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C10)");
    check_base_class_offset(lv, (S9624C39*), 0, "S21016C10");
    check_field_offset(lv, s21016c10f0, ABISELECT(8,4), "S21016C10.s21016c10f0");
    test_class_info(&lv, &cd_S21016C10);
    dp->~S21016C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C10(Test_S21016C10, "S21016C10", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN9S21016C10C1Ev();
extern void _ZN9S21016C10D1Ev();
Name_Map name_map_S21016C10[] = {
  NSPAIR(_ZN9S21016C10C1Ev),
  NSPAIR(_ZN9S21016C10D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S21016C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S21016C10[];
static  VTBL_ENTRY vtc_S21016C10[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C10[0]),
};
extern VTBL_ENTRY _ZTV9S21016C10[];
static  VTT_ENTRY vtt_S21016C10[] = {
  {&(_ZTV9S21016C10[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21016C10[];
extern  VTBL_ENTRY _ZTV9S21016C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C10[];
Class_Descriptor cd_S21016C10 = {  "S21016C10", // class name
  bases_S21016C10, 1,
  &(vtc_S21016C10[0]), // expected_vtbl_contents
  &(vtt_S21016C10[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI9S21016C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21016C10),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21016C10),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  S21016C9  : S9624C39 , S21016C7 , S21016C10 , virtual S20489C10_nt , virtual S20489C8 {
  ::S21016C7 s21016c9f0;
  ~S21016C9(); // tgen
  S21016C9(); // tgen
};
//SIG(-1 S21016C9) C1{ BC2{ m} BC3{ BC2} BC4{ VBC2 Fi} VBC5{ m Fi} VBC6{ m Fi:0 Fp} FC3}


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

static void Test_S21016C9()
{
  extern Class_Descriptor cd_S21016C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21016C9, buf);
    S21016C9 *dp, &lv = *(dp=new (buf) S21016C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21016C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C9)");
    /*is_ambiguous_... S21016C9::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*), 0, "S21016C9");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*), ABISELECT(12,8), "S21016C9");
    check_base_class_offset(lv, (S21016C7*), ABISELECT(12,8), "S21016C9");
    check_base_class_offset(lv, (S9624C39*)(S21016C10*), ABISELECT(14,10), "S21016C9");
    check_base_class_offset(lv, (S21016C10*), 0, "S21016C9");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,12), "S21016C9");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(24,16), "S21016C9");
    check_field_offset(lv, s21016c9f0, ABISELECT(13,9), "S21016C9.s21016c9f0");
    test_class_info(&lv, &cd_S21016C9);
    dp->~S21016C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C9(Test_S21016C9, "S21016C9", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21016C9C1Ev();
extern void _ZN8S21016C9D1Ev();
Name_Map name_map_S21016C9[] = {
  NSPAIR(_ZN8S21016C9C1Ev),
  NSPAIR(_ZN8S21016C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C10;
extern VTBL_ENTRY _ZTI9S21016C10[];
extern  VTBL_ENTRY _ZTV9S21016C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S21016C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(14,10), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21016C10,    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_S20489C10_nt,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(24,16), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21016C9[];
static  VTBL_ENTRY vtc_S21016C9[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C9[0]),
};
extern VTBL_ENTRY _ZTV8S21016C9[];
static  VTBL_ENTRY _tg__ZTV9S21016C10__8S21016C9[] = {
  ABISELECT(14,10),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C10[0]),
};
static  VTT_ENTRY vtt_S21016C9[] = {
  {&(_ZTV8S21016C9[5]),  5,5},
  {&(_tg__ZTV9S21016C10__8S21016C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21016C9[];
extern  VTBL_ENTRY _ZTV8S21016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C9[];
Class_Descriptor cd_S21016C9 = {  "S21016C9", // class name
  bases_S21016C9, 7,
  &(vtc_S21016C9[0]), // expected_vtbl_contents
  &(vtt_S21016C9[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21016C9),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S21016C9),5, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21016C9),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  S21016C2  : virtual S21016C3 , virtual S20489C10_nt , S21016C9 {
  short s21016c2f0;
  virtual  ~S21016C2(); // _ZN8S21016C2D2Ev
  S21016C2(); // tgen
};
//SIG(-1 S21016C2) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}} VBC5 BC8{ BC4 BC6 BC9{ VBC4 Fi} VBC5 VBC7 FC6} vd Fs}


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

static void Test_S21016C2()
{
  extern Class_Descriptor cd_S21016C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S21016C2, buf);
    S21016C2 *dp, &lv = *(dp=new (buf) S21016C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S21016C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C2)");
    check_base_class_offset(lv, (S9624C48*)(S21016C3*), 0, "S21016C2");
    /*is_ambiguous_... S21016C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C3*), ABISELECT(16,12), "S21016C2");
    check_base_class_offset(lv, (S20489C10_nt*)(S21016C3*), ABISELECT(24,16), "S21016C2");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*)(S21016C3*), ABISELECT(28,20), "S21016C2");
    check_base_class_offset(lv, (S21016C7*)(S21016C3*), ABISELECT(28,20), "S21016C2");
    check_base_class_offset(lv, (S20489C8*)(S21016C3*), ABISELECT(32,20), "S21016C2");
    check_base_class_offset(lv, (S21016C3*), ABISELECT(16,12), "S21016C2");
    /*is_ambiguous_... S21016C2::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(40,24), "S21016C2");
    check_base_class_offset(lv, (S20489C10_nt*)(S21016C9*), ABISELECT(40,24), "S21016C2");
    /*is_ambiguous_... S21016C9::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C9*), 0, "S21016C2");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*)(S21016C9*), ABISELECT(12,8), "S21016C2");
    check_base_class_offset(lv, (S21016C7*)(S21016C9*), ABISELECT(12,8), "S21016C2");
    check_base_class_offset(lv, (S9624C39*)(S21016C10*)(S21016C9*), ABISELECT(44,28), "S21016C2");
    check_base_class_offset(lv, (S21016C10*)(S21016C9*), 0, "S21016C2");
    check_base_class_offset(lv, (S20489C8*)(S21016C9*), ABISELECT(48,28), "S21016C2");
    check_base_class_offset(lv, (S21016C9*), 0, "S21016C2");
    check_field_offset(lv, s21016c2f0, ABISELECT(14,10), "S21016C2.s21016c2f0");
    test_class_info(&lv, &cd_S21016C2);
    dp->~S21016C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C2(Test_S21016C2, "S21016C2", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN8S21016C2C1Ev();
extern void _ZN8S21016C2D2Ev();
Name_Map name_map_S21016C2[] = {
  NSPAIR(_ZN8S21016C2C1Ev),
  NSPAIR(_ZN8S21016C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21016C3;
extern VTBL_ENTRY _ZTI8S21016C3[];
extern  VTBL_ENTRY _ZTV8S21016C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C3[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C10;
extern VTBL_ENTRY _ZTI9S21016C10[];
extern  VTBL_ENTRY _ZTV9S21016C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C10[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21016C9;
extern VTBL_ENTRY _ZTI8S21016C9[];
extern  VTBL_ENTRY _ZTV8S21016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C9[];
static Base_Class bases_S21016C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    6, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(28,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S21016C3,    ABISELECT(16,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(44,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 1},
  {&cd_S21016C10,    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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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
    14, //immediately_derived
  0, 1},
  {&cd_S21016C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21016C2[];
extern void _ZN8S21016C2D1Ev();
extern void _ZN8S21016C2D0Ev();
static  VTBL_ENTRY vtc_S21016C2[] = {
  0,
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C2[0]),
  (VTBL_ENTRY)&_ZN8S21016C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21016C2D0Ev,
  ABISELECT(-16,-12),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21016C2[0]),
};
extern VTBL_ENTRY _ZTV8S21016C2[];
static  VTBL_ENTRY _tg__ZTV8S21016C9__8S21016C2[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21016C108S21016C9__8S21016C2[] = {
  ABISELECT(44,28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21016C3__8S21016C2[] = {
  ABISELECT(-16,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C3[0]),
};
static  VTT_ENTRY vtt_S21016C2[] = {
  {&(_ZTV8S21016C2[7]),  7,12},
  {&(_tg__ZTV8S21016C9__8S21016C2[5]),  5,5},
  {&(_tg__ZTV9S21016C108S21016C9__8S21016C2[3]),  3,3},
  {&(_ZTV8S21016C2[12]),  12,12},
  {&(_tg__ZTV8S21016C3__8S21016C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21016C2[];
extern  VTBL_ENTRY _ZTV8S21016C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C2[];
Class_Descriptor cd_S21016C2 = {  "S21016C2", // class name
  bases_S21016C2, 15,
  &(vtc_S21016C2[0]), // expected_vtbl_contents
  &(vtt_S21016C2[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI8S21016C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21016C2),12, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21016C2),5, //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  S21016C11  : S20489C8 , virtual S9624C48 , S20489C10_nt {
  __tsi64 s21016c11f0;
  int s21016c11f1;
  ~S21016C11(); // tgen
  S21016C11(); // tgen
};
//SIG(-1 S21016C11) C1{ BC2{ m Fi:0 Fp} VBC3{ m} BC4{ m Fi} FL Fi}


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

static void Test_S21016C11()
{
  extern Class_Descriptor cd_S21016C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S21016C11, buf);
    S21016C11 *dp, &lv = *(dp=new (buf) S21016C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S21016C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C11)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(8,4), "S21016C11");
    check_base_class_offset(lv, (S9624C48*), 0, "S21016C11");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,8), "S21016C11");
    check_field_offset(lv, s21016c11f0, ABISELECT(24,12), "S21016C11.s21016c11f0");
    check_field_offset(lv, s21016c11f1, ABISELECT(32,20), "S21016C11.s21016c11f1");
    test_class_info(&lv, &cd_S21016C11);
    dp->~S21016C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C11(Test_S21016C11, "S21016C11", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN9S21016C11C1Ev();
extern void _ZN9S21016C11D1Ev();
Name_Map name_map_S21016C11[] = {
  NSPAIR(_ZN9S21016C11C1Ev),
  NSPAIR(_ZN9S21016C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S21016C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI9S21016C11[];
static  VTBL_ENTRY vtc_S21016C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C11[0]),
};
extern VTBL_ENTRY _ZTV9S21016C11[];
static  VTT_ENTRY vtt_S21016C11[] = {
  {&(_ZTV9S21016C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21016C11[];
extern  VTBL_ENTRY _ZTV9S21016C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C11[];
Class_Descriptor cd_S21016C11 = {  "S21016C11", // class name
  bases_S21016C11, 3,
  &(vtc_S21016C11[0]), // expected_vtbl_contents
  &(vtt_S21016C11[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI9S21016C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S21016C11),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21016C11),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  S21016C12  : virtual S21016C9 {
  int s21016c12f0;
  ~S21016C12(); // tgen
  S21016C12(); // tgen
};
//SIG(-1 S21016C12) C1{ VBC2{ BC3{ m} BC4{ BC3} BC5{ VBC3 Fi} VBC6{ m Fi} VBC7{ m Fi:0 Fp} FC4} Fi}


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

static void Test_S21016C12()
{
  extern Class_Descriptor cd_S21016C12;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S21016C12, buf);
    S21016C12 *dp, &lv = *(dp=new (buf) S21016C12());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S21016C12)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C12)");
    /*is_ambiguous_... S21016C9::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C9*), ABISELECT(16,8), "S21016C12");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*)(S21016C9*), ABISELECT(28,16), "S21016C12");
    check_base_class_offset(lv, (S21016C7*)(S21016C9*), ABISELECT(28,16), "S21016C12");
    check_base_class_offset(lv, (S9624C39*)(S21016C10*)(S21016C9*), 0, "S21016C12");
    check_base_class_offset(lv, (S21016C10*)(S21016C9*), ABISELECT(16,8), "S21016C12");
    check_base_class_offset(lv, (S20489C10_nt*)(S21016C9*), ABISELECT(32,20), "S21016C12");
    check_base_class_offset(lv, (S20489C8*)(S21016C9*), ABISELECT(40,24), "S21016C12");
    check_base_class_offset(lv, (S21016C9*), ABISELECT(16,8), "S21016C12");
    check_field_offset(lv, s21016c12f0, ABISELECT(8,4), "S21016C12.s21016c12f0");
    test_class_info(&lv, &cd_S21016C12);
    dp->~S21016C12();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C12(Test_S21016C12, "S21016C12", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN9S21016C12C1Ev();
extern void _ZN9S21016C12D1Ev();
Name_Map name_map_S21016C12[] = {
  NSPAIR(_ZN9S21016C12C1Ev),
  NSPAIR(_ZN9S21016C12D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C10;
extern VTBL_ENTRY _ZTI9S21016C10[];
extern  VTBL_ENTRY _ZTV9S21016C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C10[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21016C9;
extern VTBL_ENTRY _ZTI8S21016C9[];
extern  VTBL_ENTRY _ZTV8S21016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C9[];
static Base_Class bases_S21016C12[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C39,    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
    2, //immediately_derived
  0, 0},
  {&cd_S21016C7,    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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S21016C10,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 1},
  {&cd_S20489C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S21016C9,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI9S21016C12[];
static  VTBL_ENTRY vtc_S21016C12[] = {
  ABISELECT(40,24),
  ABISELECT(32,20),
  0,
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C12[0]),
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21016C12[0]),
};
extern VTBL_ENTRY _ZTV9S21016C12[];
static  VTBL_ENTRY _tg__ZTV8S21016C9__9S21016C12[] = {
  ABISELECT(24,16),
  ABISELECT(16,12),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21016C108S21016C9__9S21016C12[] = {
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C10[0]),
};
static  VTT_ENTRY vtt_S21016C12[] = {
  {&(_ZTV9S21016C12[6]),  6,11},
  {&(_ZTV9S21016C12[11]),  11,11},
  {&(_tg__ZTV8S21016C9__9S21016C12[5]),  5,5},
  {&(_tg__ZTV9S21016C108S21016C9__9S21016C12[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S21016C12[];
extern  VTBL_ENTRY _ZTV9S21016C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C12[];
Class_Descriptor cd_S21016C12 = {  "S21016C12", // class name
  bases_S21016C12, 8,
  &(vtc_S21016C12[0]), // expected_vtbl_contents
  &(vtt_S21016C12[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI9S21016C12),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S21016C12),11, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S21016C12),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21016C1  : virtual S21016C2 , S21016C11 , virtual S21016C12 {
  int s21016c1f0;
  virtual  ~S21016C1(); // _ZN8S21016C1D2Ev
  S21016C1(); // tgen
};
//SIG(1 S21016C1) C1{ VBC2{ VBC3{ VBC4{ m} BC5{ m} BC6{ m Fi} BC7{ BC5} BC8{ m Fi:0 Fp}} VBC6 BC9{ BC5 BC7 BC10{ VBC5 Fi} VBC6 VBC8 FC7} vd Fs} BC11{ BC8 VBC4 BC6 FL Fi} VBC12{ VBC9 Fi} vd Fi}


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

static void Test_S21016C1()
{
  extern Class_Descriptor cd_S21016C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(17,21)];
    init_test(&cd_S21016C1, buf);
    S21016C1 *dp, &lv = *(dp=new (buf) S21016C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,80), "sizeof(S21016C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21016C1)");
    check_base_class_offset(lv, (S9624C48*)(S21016C3*), 0, "S21016C1");
    check_base_class_offset(lv, (S9624C48*)(S21016C11*), 0, "S21016C1");
    /*is_ambiguous_... S21016C3::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C3*), ABISELECT(56,40), "S21016C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S21016C3*), ABISELECT(64,44), "S21016C1");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*)(S21016C3*), ABISELECT(68,48), "S21016C1");
    check_base_class_offset(lv, (S21016C7*)(S21016C3*), ABISELECT(68,48), "S21016C1");
    check_base_class_offset(lv, (S20489C8*)(S21016C3*), ABISELECT(72,48), "S21016C1");
    check_base_class_offset(lv, (S21016C3*)(S21016C2*), ABISELECT(56,40), "S21016C1");
    /*is_ambiguous_... S21016C2::S20489C10_nt */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21016C2*), ABISELECT(80,52), "S21016C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S21016C9*)(S21016C2*), ABISELECT(80,52), "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S21016C9*), ABISELECT(80,52), "S21016C1");
    /*is_ambiguous_... S21016C9::S9624C39 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C9*)(S21016C2*), ABISELECT(40,28), "S21016C1");
    check_base_class_offset(lv, (S9624C39*)(S21016C7*)(S21016C9*)(S21016C2*), ABISELECT(52,36), "S21016C1");
    check_base_class_offset(lv, (S21016C7*)(S21016C9*)(S21016C2*), ABISELECT(52,36), "S21016C1");
    check_base_class_offset(lv, (S9624C39*)(S21016C10*)(S21016C9*)(S21016C2*), 0, "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C10*)(S21016C9*), 0, "S21016C1");
    check_base_class_offset(lv, (S21016C10*)(S21016C9*)(S21016C2*), ABISELECT(40,28), "S21016C1");
    check_base_class_offset(lv, (S20489C8*)(S21016C9*)(S21016C2*), ABISELECT(88,56), "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S20489C8*)(S21016C9*), ABISELECT(88,56), "S21016C1");
    check_base_class_offset(lv, (S21016C9*)(S21016C2*), ABISELECT(40,28), "S21016C1");
    check_base_class_offset(lv, (S21016C2*), ABISELECT(40,28), "S21016C1");
    check_base_class_offset(lv, (S20489C8*)(S21016C11*), ABISELECT(8,4), "S21016C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S21016C11*), ABISELECT(16,8), "S21016C1");
    check_base_class_offset(lv, (S21016C11*), 0, "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C9*), ABISELECT(112,68), "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S9624C39*)(S21016C7*)(S21016C9*), ABISELECT(124,76), "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S21016C7*)(S21016C9*), ABISELECT(124,76), "S21016C1");
    /*is_ambiguous_... S21016C1::S21016C9 */ AMB_check_base_class_offset(lv, (S21016C10*)(S21016C9*), ABISELECT(112,68), "S21016C1");
    check_base_class_offset(lv, (S21016C9*)(S21016C12*), ABISELECT(112,68), "S21016C1");
    check_base_class_offset(lv, (S21016C12*), ABISELECT(96,60), "S21016C1");
    check_field_offset(lv, s21016c1f0, ABISELECT(36,24), "S21016C1.s21016c1f0");
    test_class_info(&lv, &cd_S21016C1);
    dp->~S21016C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21016C1(Test_S21016C1, "S21016C1", ABISELECT(128,80));

#else // __cplusplus

extern void _ZN8S21016C1C1Ev();
extern void _ZN8S21016C1D2Ev();
Name_Map name_map_S21016C1[] = {
  NSPAIR(_ZN8S21016C1C1Ev),
  NSPAIR(_ZN8S21016C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21016C3;
extern VTBL_ENTRY _ZTI8S21016C3[];
extern  VTBL_ENTRY _ZTV8S21016C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C3[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C10;
extern VTBL_ENTRY _ZTI9S21016C10[];
extern  VTBL_ENTRY _ZTV9S21016C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C10[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S21016C9;
extern VTBL_ENTRY _ZTI8S21016C9[];
extern  VTBL_ENTRY _ZTV8S21016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C9[];
extern Class_Descriptor cd_S21016C2;
extern VTBL_ENTRY _ZTI8S21016C2[];
extern  VTBL_ENTRY _ZTV8S21016C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C2[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S21016C11;
extern VTBL_ENTRY _ZTI9S21016C11[];
extern  VTBL_ENTRY _ZTV9S21016C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C11[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S21016C7;
extern VTBL_ENTRY _ZTI8S21016C7[];
extern Class_Descriptor cd_S21016C10;
extern VTBL_ENTRY _ZTI9S21016C10[];
extern  VTBL_ENTRY _ZTV9S21016C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C10[];
extern Class_Descriptor cd_S21016C9;
extern VTBL_ENTRY _ZTI8S21016C9[];
extern  VTBL_ENTRY _ZTV8S21016C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C9[];
extern Class_Descriptor cd_S21016C12;
extern VTBL_ENTRY _ZTI9S21016C12[];
extern  VTBL_ENTRY _ZTV9S21016C12[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S21016C12[];
static Base_Class bases_S21016C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C39,    ABISELECT(56,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(64,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(68,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(68,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, 0},
  {&cd_S20489C8,    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
    6, //immediately_derived
  0, 0},
  {&cd_S21016C3,    ABISELECT(56,40), //bcp->offset
    22, //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
    15, //immediately_derived
  0, 1},
  {&cd_S20489C10_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
    14, //immediately_derived
  0, 1},
  {&cd_S9624C39,    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
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(52,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(52,36), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S21016C10,    ABISELECT(40,28), //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
    14, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(88,56), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    14, //immediately_derived
  0, 1},
  {&cd_S21016C9,    ABISELECT(40,28), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    15, //immediately_derived
  0, 0},
  {&cd_S21016C2,    ABISELECT(40,28), //bcp->offset
    12, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20489C10_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
    18, //immediately_derived
  0, 0},
  {&cd_S21016C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    ABISELECT(112,68), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S9624C39,    ABISELECT(124,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    21, //immediately_derived
  0, 0},
  {&cd_S21016C7,    ABISELECT(124,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21016C10,    ABISELECT(112,68), //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
    5, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S21016C9,    ABISELECT(112,68), //bcp->offset
    31, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    24, //immediately_derived
  0, 1},
  {&cd_S21016C12,    ABISELECT(96,60), //bcp->offset
    25, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21016C1[];
extern void _ZN8S21016C1D1Ev();
extern void _ZN8S21016C1D0Ev();
extern void ABISELECT(_ZTv0_n64_N8S21016C1D1Ev,_ZTv0_n32_N8S21016C1D1Ev)();
extern void ABISELECT(_ZThn40_N8S21016C1D1Ev,_ZThn28_N8S21016C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S21016C1D0Ev,_ZTv0_n32_N8S21016C1D0Ev)();
extern void ABISELECT(_ZThn40_N8S21016C1D0Ev,_ZThn28_N8S21016C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S21016C1[] = {
  ABISELECT(112,68),
  ABISELECT(96,60),
  ABISELECT(88,56),
  0,
  ABISELECT(80,52),
  ABISELECT(56,40),
  ABISELECT(40,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C1[0]),
  (VTBL_ENTRY)&_ZN8S21016C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21016C1D0Ev,
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-40,-28),
  ABISELECT(-40,-28),
  (VTBL_ENTRY)&(_ZTI8S21016C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21016C1D1Ev,_ZTv0_n32_N8S21016C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S21016C1D0Ev,_ZTv0_n32_N8S21016C1D0Ev),
  ABISELECT(-56,-40),
  ABISELECT(-56,-40),
  (VTBL_ENTRY)&(_ZTI8S21016C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S21016C1[0]),
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-112,-68),
  ABISELECT(-112,-68),
  (VTBL_ENTRY)&(_ZTI8S21016C1[0]),
};
extern VTBL_ENTRY _ZTV8S21016C1[];
static  VTBL_ENTRY _tg__ZTV9S21016C11__8S21016C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C11[0]),
};
extern void _ZN8S21016C2D1Ev();
extern void _ZN8S21016C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21016C2__8S21016C1[] = {
  ABISELECT(-40,-28),
  ABISELECT(16,12),
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C2[0]),
  (VTBL_ENTRY)&_ZN8S21016C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21016C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S21016C98S21016C2__8S21016C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21016C108S21016C98S21016C2__8S21016C1[] = {
  ABISELECT(-40,-28),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C10[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21016C3__8S21016C2__8S21016C1[] = {
  ABISELECT(-56,-40),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21016C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21016C3__8S21016C1[] = {
  ABISELECT(-56,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C3[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21016C12__8S21016C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(-96,-60),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21016C9__9S21016C12__8S21016C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-112,-68),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI9S21016C12[0]),
};
static  VTBL_ENTRY _tg__ZTV8S21016C9__A1__8S21016C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-32,-16),
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI8S21016C9[0]),
};
static  VTBL_ENTRY _tg__ZTV9S21016C108S21016C9__A1__8S21016C1[] = {
  ABISELECT(-112,-68),
  0,
  (VTBL_ENTRY)&(_ZTI9S21016C10[0]),
};
static  VTT_ENTRY vtt_S21016C1[] = {
  {&(_ZTV8S21016C1[10]),  10,36},
  {&(_tg__ZTV9S21016C11__8S21016C1[3]),  3,3},
  {&(_ZTV8S21016C1[20]),  20,36},
  {&(_ZTV8S21016C1[25]),  25,36},
  {&(_ZTV8S21016C1[31]),  31,36},
  {&(_ZTV8S21016C1[36]),  36,36},
  {&(_tg__ZTV8S21016C2__8S21016C1[7]),  7,9},
  {&(_tg__ZTV8S21016C98S21016C2__8S21016C1[5]),  5,5},
  {&(_tg__ZTV9S21016C108S21016C98S21016C2__8S21016C1[3]),  3,3},
  {&(_tg__ZTV8S21016C3__8S21016C2__8S21016C1[3]),  3,3},
  {&(_tg__ZTV8S21016C3__8S21016C1[3]),  3,3},
  {&(_tg__ZTV9S21016C12__8S21016C1[6]),  6,6},
  {&(_tg__ZTV8S21016C9__9S21016C12__8S21016C1[5]),  5,5},
  {&(_tg__ZTV8S21016C9__A1__8S21016C1[5]),  5,5},
  {&(_tg__ZTV9S21016C108S21016C9__A1__8S21016C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S21016C1[];
extern  VTBL_ENTRY _ZTV8S21016C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21016C1[];
static VTBL_ENTRY alt_thunk_names138[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21016C1D0Ev,_ZTv0_n32_N8S21016C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21016C1D0Ev,_ZThn28_N8S21016C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S21016C1D1Ev,_ZTv0_n32_N8S21016C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S21016C1D1Ev,_ZThn28_N8S21016C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21016C1 = {  "S21016C1", // class name
  bases_S21016C1, 25,
  &(vtc_S21016C1[0]), // expected_vtbl_contents
  &(vtt_S21016C1[0]), // expected_vtt_contents
  ABISELECT(128,80), // object size
  NSPAIRA(_ZTI8S21016C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S21016C1),36, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21016C1),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names138,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7706C5  {
  long double s7706c5f0;
  virtual  ~S7706C5(); // _ZN7S7706C5D1Ev
  virtual void  v3(); // _ZN7S7706C52v3Ev
  S7706C5(); // tgen
};
//SIG(-1 S7706C5) C1{ vd v1 FD}


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

static void Test_S7706C5()
{
  extern Class_Descriptor cd_S7706C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S7706C5, buf);
    S7706C5 *dp, &lv = *(dp=new (buf) S7706C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S7706C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C5)");
    check_field_offset(lv, s7706c5f0, ABISELECT(16,4), "S7706C5.s7706c5f0");
    test_class_info(&lv, &cd_S7706C5);
    dp->~S7706C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C5(Test_S7706C5, "S7706C5", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S7706C5C1Ev();
extern void _ZN7S7706C5D1Ev();
Name_Map name_map_S7706C5[] = {
  NSPAIR(_ZN7S7706C5C1Ev),
  NSPAIR(_ZN7S7706C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7706C5[];
extern void _ZN7S7706C5D1Ev();
extern void _ZN7S7706C5D0Ev();
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY vtc_S7706C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C5[0]),
  (VTBL_ENTRY)&_ZN7S7706C5D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C5D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
Class_Descriptor cd_S7706C5 = {  "S7706C5", // class name
  0,0,//no base classes
  &(vtc_S7706C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S7706C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7706C5),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  S7706C4  : S7706C5 {
  int s7706c4f0[3];
  virtual void  v4(); // _ZN7S7706C42v4Ev
  virtual void  v5(); // _ZN7S7706C42v5Ev
  virtual void  v6(); // _ZN7S7706C42v6Ev
  ~S7706C4(); // tgen
  S7706C4(); // tgen
};
//SIG(-1 S7706C4) C1{ BC2{ vd v4 FD} v1 v2 v3 Fi[3]}


void  S7706C4 ::v4(){vfunc_called(this, "_ZN7S7706C42v4Ev");}
void  S7706C4 ::v5(){vfunc_called(this, "_ZN7S7706C42v5Ev");}
void  S7706C4 ::v6(){vfunc_called(this, "_ZN7S7706C42v6Ev");}
S7706C4 ::~S7706C4(){ note_dtor("S7706C4", this);} // tgen
S7706C4 ::S7706C4(){ note_ctor("S7706C4", this);} // tgen

static void Test_S7706C4()
{
  extern Class_Descriptor cd_S7706C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S7706C4, buf);
    S7706C4 *dp, &lv = *(dp=new (buf) S7706C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S7706C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C4)");
    check_base_class_offset(lv, (S7706C5*), 0, "S7706C4");
    check_field_offset(lv, s7706c4f0, ABISELECT(32,16), "S7706C4.s7706c4f0");
    test_class_info(&lv, &cd_S7706C4);
    dp->~S7706C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C4(Test_S7706C4, "S7706C4", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S7706C4C1Ev();
extern void _ZN7S7706C4D1Ev();
Name_Map name_map_S7706C4[] = {
  NSPAIR(_ZN7S7706C4C1Ev),
  NSPAIR(_ZN7S7706C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
static Base_Class bases_S7706C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7706C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7706C4[];
extern void _ZN7S7706C4D1Ev();
extern void _ZN7S7706C4D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
static  VTBL_ENTRY vtc_S7706C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C4[0]),
  (VTBL_ENTRY)&_ZN7S7706C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
};
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
Class_Descriptor cd_S7706C4 = {  "S7706C4", // class name
  bases_S7706C4, 1,
  &(vtc_S7706C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S7706C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7706C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7706C6  : virtual S7706C5 , S7706C4 {
  virtual  ~S7706C6(); // _ZN7S7706C6D2Ev
  virtual void  v7(); // _ZN7S7706C62v7Ev
  virtual void  v8(); // _ZN7S7706C62v8Ev
  virtual void  v9(); // _ZN7S7706C62v9Ev
  virtual void  v10(); // _ZN7S7706C63v10Ev
  S7706C6(); // tgen
};
//SIG(-1 S7706C6) C1{ VBC2{ vd v5 FD} BC3{ BC2 v6 v7 v8 Fi[3]} vd v1 v2 v3 v4}


 S7706C6 ::~S7706C6(){ note_dtor("S7706C6", this);}
void  S7706C6 ::v7(){vfunc_called(this, "_ZN7S7706C62v7Ev");}
void  S7706C6 ::v8(){vfunc_called(this, "_ZN7S7706C62v8Ev");}
void  S7706C6 ::v9(){vfunc_called(this, "_ZN7S7706C62v9Ev");}
void  S7706C6 ::v10(){vfunc_called(this, "_ZN7S7706C63v10Ev");}
S7706C6 ::S7706C6(){ note_ctor("S7706C6", this);} // tgen

static void Test_S7706C6()
{
  extern Class_Descriptor cd_S7706C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S7706C6, buf);
    S7706C6 *dp, &lv = *(dp=new (buf) S7706C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S7706C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C6)");
    /*is_ambiguous_... S7706C6::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*), ABISELECT(48,28), "S7706C6");
    check_base_class_offset(lv, (S7706C5*)(S7706C4*), 0, "S7706C6");
    check_base_class_offset(lv, (S7706C4*), 0, "S7706C6");
    test_class_info(&lv, &cd_S7706C6);
    dp->~S7706C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C6(Test_S7706C6, "S7706C6", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S7706C6C1Ev();
extern void _ZN7S7706C6D2Ev();
Name_Map name_map_S7706C6[] = {
  NSPAIR(_ZN7S7706C6C1Ev),
  NSPAIR(_ZN7S7706C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
static Base_Class bases_S7706C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7706C5,    ABISELECT(48,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7706C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7706C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI7S7706C6[];
extern void _ZN7S7706C6D1Ev();
extern void _ZN7S7706C6D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY vtc_S7706C6[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&_ZN7S7706C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S7706C6[];
static  VTT_ENTRY vtt_S7706C6[] = {
  {&(_ZTV7S7706C6[3]),  3,20},
  {&(_ZTV7S7706C6[17]),  17,20},
};
extern VTBL_ENTRY _ZTI7S7706C6[];
extern  VTBL_ENTRY _ZTV7S7706C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C6[];
static VTBL_ENTRY alt_thunk_names139[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7706C6 = {  "S7706C6", // class name
  bases_S7706C6, 3,
  &(vtc_S7706C6[0]), // expected_vtbl_contents
  &(vtt_S7706C6[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S7706C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7706C6),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7706C6),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names139,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7706C7  : S7706C5 , S7706C4 , virtual S7706C6 {
  int s7706c7f0;
  virtual  ~S7706C7(); // _ZN7S7706C7D2Ev
  virtual void  v11(); // _ZN7S7706C73v11Ev
  virtual void  v12(); // _ZN7S7706C73v12Ev
  S7706C7(); // tgen
};
//SIG(-1 S7706C7) C1{ BC2{ vd v3 FD} BC3{ BC2 v4 v5 v6 Fi[3]} VBC4{ VBC2 BC3 vd v7 v8 v9 v10} vd v1 v2 Fi}


 S7706C7 ::~S7706C7(){ note_dtor("S7706C7", this);}
void  S7706C7 ::v11(){vfunc_called(this, "_ZN7S7706C73v11Ev");}
void  S7706C7 ::v12(){vfunc_called(this, "_ZN7S7706C73v12Ev");}
S7706C7 ::S7706C7(){ note_ctor("S7706C7", this);} // tgen

static void Test_S7706C7()
{
  extern Class_Descriptor cd_S7706C7;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,24)];
    init_test(&cd_S7706C7, buf);
    S7706C7 *dp, &lv = *(dp=new (buf) S7706C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,92), "sizeof(S7706C7)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C7)");
    /*is_ambiguous_... S7706C7::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*), 0, "S7706C7");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*), ABISELECT(32,16), "S7706C7");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*), ABISELECT(32,16), "S7706C7");
    /*is_ambiguous_... S7706C6::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C6*), ABISELECT(128,76), "S7706C7");
    check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C6*), ABISELECT(80,48), "S7706C7");
    check_base_class_offset(lv, (S7706C4*)(S7706C6*), ABISELECT(80,48), "S7706C7");
    check_base_class_offset(lv, (S7706C6*), ABISELECT(80,48), "S7706C7");
    check_field_offset(lv, s7706c7f0, ABISELECT(76,44), "S7706C7.s7706c7f0");
    test_class_info(&lv, &cd_S7706C7);
    dp->~S7706C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C7(Test_S7706C7, "S7706C7", ABISELECT(160,92));

#else // __cplusplus

extern void _ZN7S7706C7C1Ev();
extern void _ZN7S7706C7D2Ev();
Name_Map name_map_S7706C7[] = {
  NSPAIR(_ZN7S7706C7C1Ev),
  NSPAIR(_ZN7S7706C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C6;
extern VTBL_ENTRY _ZTI7S7706C6[];
extern  VTBL_ENTRY _ZTV7S7706C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C6[];
static Base_Class bases_S7706C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7706C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7706C5,    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
    6, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(32,16), //bcp->offset
    9, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S7706C5,    ABISELECT(128,76), //bcp->offset
    39, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    6, //immediately_derived
  0, 1},
  {&cd_S7706C5,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S7706C6,    ABISELECT(80,48), //bcp->offset
    17, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7706C7[];
extern void _ZN7S7706C7D1Ev();
extern void _ZN7S7706C7D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void ABISELECT(_ZThn32_N7S7706C7D1Ev,_ZThn16_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn32_N7S7706C7D0Ev,_ZThn16_N7S7706C7D0Ev)();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn80_N7S7706C7D1Ev,_ZThn48_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn80_N7S7706C7D0Ev,_ZThn48_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY vtc_S7706C7[] = {
  ABISELECT(128,76),
  ABISELECT(80,48),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&_ZN7S7706C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7706C7D1Ev,_ZThn16_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7706C7D0Ev,_ZThn16_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(48,28),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
  0,
  ABISELECT(-128,-76),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S7706C7[];
extern void _ZN7S7706C6D1Ev();
extern void _ZN7S7706C6D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C7[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&_ZN7S7706C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__7S7706C6__7S7706C7[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
static  VTT_ENTRY vtt_S7706C7[] = {
  {&(_ZTV7S7706C7[4]),  4,46},
  {&(_ZTV7S7706C7[29]),  29,46},
  {&(_ZTV7S7706C7[43]),  43,46},
  {&(_tg__ZTV7S7706C6__7S7706C7[3]),  3,13},
  {&(_tg__ZTV7S7706C5__7S7706C6__7S7706C7[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7706C7[];
extern  VTBL_ENTRY _ZTV7S7706C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C7[];
static VTBL_ENTRY alt_thunk_names140[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C7D0Ev,_ZThn48_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C7D1Ev,_ZThn48_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7706C7 = {  "S7706C7", // class name
  bases_S7706C7, 7,
  &(vtc_S7706C7[0]), // expected_vtbl_contents
  &(vtt_S7706C7[0]), // expected_vtt_contents
  ABISELECT(160,92), // object size
  NSPAIRA(_ZTI7S7706C7),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7706C7),46, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7706C7),5, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names140,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7706C3  : virtual S7706C4 , virtual S7706C6 , S7706C7 {
  virtual  ~S7706C3(); // _ZN7S7706C3D2Ev
  virtual void  v13(); // _ZN7S7706C33v13Ev
  virtual void  v14(); // _ZN7S7706C33v14Ev
  S7706C3(); // tgen
};
//SIG(-1 S7706C3) C1{ VBC2{ BC3{ vd v3 FD} v4 v5 v6 Fi[3]} VBC4{ VBC3 BC2 vd v7 v8 v9 v10} BC5{ BC3 BC2 VBC4 vd v11 v12 Fi} vd v1 v2}


 S7706C3 ::~S7706C3(){ note_dtor("S7706C3", this);}
void  S7706C3 ::v13(){vfunc_called(this, "_ZN7S7706C33v13Ev");}
void  S7706C3 ::v14(){vfunc_called(this, "_ZN7S7706C33v14Ev");}
S7706C3 ::S7706C3(){ note_ctor("S7706C3", this);} // tgen

static void Test_S7706C3()
{
  extern Class_Descriptor cd_S7706C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,31)];
    init_test(&cd_S7706C3, buf);
    S7706C3 *dp, &lv = *(dp=new (buf) S7706C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,120), "sizeof(S7706C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C3)");
    /*is_ambiguous_... S7706C3::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*), ABISELECT(80,48), "S7706C3");
    /*is_ambiguous_... S7706C3::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*), ABISELECT(80,48), "S7706C3");
    /*is_ambiguous_... S7706C6::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C6*), ABISELECT(176,104), "S7706C3");
    check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C6*), ABISELECT(128,76), "S7706C3");
    check_base_class_offset(lv, (S7706C4*)(S7706C6*), ABISELECT(128,76), "S7706C3");
    check_base_class_offset(lv, (S7706C6*), ABISELECT(128,76), "S7706C3");
    check_base_class_offset(lv, (S7706C6*)(S7706C7*), ABISELECT(128,76), "S7706C3");
    /*is_ambiguous_... S7706C7::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C7*), 0, "S7706C3");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C7*), ABISELECT(32,16), "S7706C3");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*)(S7706C7*), ABISELECT(32,16), "S7706C3");
    check_base_class_offset(lv, (S7706C7*), 0, "S7706C3");
    test_class_info(&lv, &cd_S7706C3);
    dp->~S7706C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C3(Test_S7706C3, "S7706C3", ABISELECT(208,120));

#else // __cplusplus

extern void _ZN7S7706C3C1Ev();
extern void _ZN7S7706C3D2Ev();
Name_Map name_map_S7706C3[] = {
  NSPAIR(_ZN7S7706C3C1Ev),
  NSPAIR(_ZN7S7706C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C6;
extern VTBL_ENTRY _ZTI7S7706C6[];
extern  VTBL_ENTRY _ZTV7S7706C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C6[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C7;
extern VTBL_ENTRY _ZTI7S7706C7[];
extern  VTBL_ENTRY _ZTV7S7706C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C7[];
static Base_Class bases_S7706C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7706C5,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(80,48), //bcp->offset
    20, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7706C5,    ABISELECT(176,104), //bcp->offset
    55, //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_S7706C5,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(128,76), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7706C6,    ABISELECT(128,76), //bcp->offset
    33, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7706C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7706C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(32,16), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7706C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7706C3[];
extern void _ZN7S7706C3D1Ev();
extern void _ZN7S7706C3D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void _ZN7S7706C33v13Ev();
extern void _ZN7S7706C33v14Ev();
extern void ABISELECT(_ZThn32_N7S7706C3D1Ev,_ZThn16_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn32_N7S7706C3D0Ev,_ZThn16_N7S7706C3D0Ev)();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7706C3D1Ev,_ZThn48_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7706C3D0Ev,_ZThn48_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C3D1Ev,_ZThn76_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C3D0Ev,_ZThn76_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S7706C3D1Ev,_ZThn104_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S7706C3D0Ev,_ZThn104_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY vtc_S7706C3[] = {
  ABISELECT(80,48),
  ABISELECT(176,104),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&_ZN7S7706C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v14Ev,
  ABISELECT(-32,-16),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7706C3D1Ev,_ZThn16_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn32_N7S7706C3D0Ev,_ZThn16_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(48,28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
  0,
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S7706C3[];
extern void _ZN7S7706C7D1Ev();
extern void _ZN7S7706C7D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C7__7S7706C3[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&_ZN7S7706C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C7__7S7706C3[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(48,28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn176_N7S7706C7D1Ev,_ZThn104_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn176_N7S7706C7D0Ev,_ZThn104_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__A2__7S7706C7__7S7706C3[] = {
  0,
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern void _ZN7S7706C6D1Ev();
extern void _ZN7S7706C6D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C3[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&_ZN7S7706C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__7S7706C6__7S7706C3[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
static  VTT_ENTRY vtt_S7706C3[] = {
  {&(_ZTV7S7706C3[5]),  5,62},
  {&(_tg__ZTV7S7706C7__7S7706C3[4]),  4,9},
  {&(_tg__ZTV7S7706C6__7S7706C7__7S7706C3[12]),  12,22},
  {&(_tg__ZTV7S7706C5__A2__7S7706C7__7S7706C3[4]),  4,7},
  {&(_ZTV7S7706C3[27]),  27,62},
  {&(_ZTV7S7706C3[45]),  45,62},
  {&(_ZTV7S7706C3[59]),  59,62},
  {&(_tg__ZTV7S7706C6__7S7706C3[3]),  3,13},
  {&(_tg__ZTV7S7706C5__7S7706C6__7S7706C3[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7706C3[];
extern  VTBL_ENTRY _ZTV7S7706C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C3[];
static VTBL_ENTRY alt_thunk_names141[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C7D0Ev,_ZThn104_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C7D1Ev,_ZThn104_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C3D0Ev,_ZThn76_N7S7706C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C3D1Ev,_ZThn76_N7S7706C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C3D0Ev,_ZThn104_N7S7706C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C3D0Ev,_ZThn48_N7S7706C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C3D1Ev,_ZThn104_N7S7706C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C3D1Ev,_ZThn48_N7S7706C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7706C3 = {  "S7706C3", // class name
  bases_S7706C3, 10,
  &(vtc_S7706C3[0]), // expected_vtbl_contents
  &(vtt_S7706C3[0]), // expected_vtt_contents
  ABISELECT(208,120), // object size
  NSPAIRA(_ZTI7S7706C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S7706C3),62, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7706C3),9, //virtual table table var
  10, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names141,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7706C2  : virtual S7706C3 {
  int s7706c2f0[2];
  virtual  ~S7706C2(); // _ZN7S7706C2D2Ev
  virtual void  v15(); // _ZN7S7706C23v15Ev
  virtual void  v16(); // _ZN7S7706C23v16Ev
  virtual void  v17(); // _ZN7S7706C23v17Ev
  S7706C2(); // tgen
};
//SIG(-1 S7706C2) C1{ VBC2{ VBC3{ BC4{ vd v4 FD} v5 v6 v7 Fi[3]} VBC5{ VBC4 BC3 vd v8 v9 v10 v11} BC6{ BC4 BC3 VBC5 vd v12 v13 Fi} vd v14 v15} vd v1 v2 v3 Fi[2]}


 S7706C2 ::~S7706C2(){ note_dtor("S7706C2", this);}
void  S7706C2 ::v15(){vfunc_called(this, "_ZN7S7706C23v15Ev");}
void  S7706C2 ::v16(){vfunc_called(this, "_ZN7S7706C23v16Ev");}
void  S7706C2 ::v17(){vfunc_called(this, "_ZN7S7706C23v17Ev");}
S7706C2 ::S7706C2(){ note_ctor("S7706C2", this);} // tgen

static void Test_S7706C2()
{
  extern Class_Descriptor cd_S7706C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S7706C2, buf);
    S7706C2 *dp, &lv = *(dp=new (buf) S7706C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S7706C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C2)");
    /*is_ambiguous_... S7706C2::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*), ABISELECT(96,60), "S7706C2");
    /*is_ambiguous_... S7706C3::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*)(S7706C3*), ABISELECT(96,60), "S7706C2");
    /*is_ambiguous_... S7706C6::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C6*), ABISELECT(192,116), "S7706C2");
    check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C6*), ABISELECT(144,88), "S7706C2");
    check_base_class_offset(lv, (S7706C4*)(S7706C6*), ABISELECT(144,88), "S7706C2");
    check_base_class_offset(lv, (S7706C6*)(S7706C3*), ABISELECT(144,88), "S7706C2");
    check_base_class_offset(lv, (S7706C6*)(S7706C7*)(S7706C3*), ABISELECT(144,88), "S7706C2");
    /*is_ambiguous_... S7706C7::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C7*)(S7706C3*), ABISELECT(16,12), "S7706C2");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C7*)(S7706C3*), ABISELECT(48,28), "S7706C2");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*)(S7706C7*)(S7706C3*), ABISELECT(48,28), "S7706C2");
    check_base_class_offset(lv, (S7706C7*)(S7706C3*), ABISELECT(16,12), "S7706C2");
    check_base_class_offset(lv, (S7706C3*), ABISELECT(16,12), "S7706C2");
    check_field_offset(lv, s7706c2f0, ABISELECT(8,4), "S7706C2.s7706c2f0");
    test_class_info(&lv, &cd_S7706C2);
    dp->~S7706C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C2(Test_S7706C2, "S7706C2", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S7706C2C1Ev();
extern void _ZN7S7706C2D2Ev();
Name_Map name_map_S7706C2[] = {
  NSPAIR(_ZN7S7706C2C1Ev),
  NSPAIR(_ZN7S7706C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C6;
extern VTBL_ENTRY _ZTI7S7706C6[];
extern  VTBL_ENTRY _ZTV7S7706C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C6[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C7;
extern VTBL_ENTRY _ZTI7S7706C7[];
extern  VTBL_ENTRY _ZTV7S7706C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C7[];
extern Class_Descriptor cd_S7706C3;
extern VTBL_ENTRY _ZTI7S7706C3[];
extern  VTBL_ENTRY _ZTV7S7706C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C3[];
static Base_Class bases_S7706C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7706C5,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(96,60), //bcp->offset
    40, //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
    10, //immediately_derived
  0, 1},
  {&cd_S7706C5,    ABISELECT(192,116), //bcp->offset
    75, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S7706C5,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7706C6,    ABISELECT(144,88), //bcp->offset
    53, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7706C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7706C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(48,28), //bcp->offset
    32, //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
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7706C7,    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
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7706C3,    ABISELECT(16,12), //bcp->offset
    11, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7706C2[];
extern void _ZN7S7706C2D1Ev();
extern void _ZN7S7706C2D0Ev();
extern void _ZN7S7706C23v15Ev();
extern void _ZN7S7706C23v16Ev();
extern void _ZN7S7706C23v17Ev();
extern void ABISELECT(_ZTv0_n48_N7S7706C2D1Ev,_ZTv0_n24_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7706C2D1Ev,_ZThn12_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7706C2D0Ev,_ZTv0_n24_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7706C2D0Ev,_ZThn12_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void _ZN7S7706C33v13Ev();
extern void _ZN7S7706C33v14Ev();
extern void ABISELECT(_ZTvn32_n48_N7S7706C2D1Ev,_ZTvn16_n24_N7S7706C2D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7706C2D0Ev,_ZTvn16_n24_N7S7706C2D0Ev)();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7706C2D1Ev,_ZThn60_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7706C2D0Ev,_ZThn60_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7706C2D1Ev,_ZTv0_n16_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7706C2D1Ev,_ZThn88_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C2D0Ev,_ZTv0_n16_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7706C2D0Ev,_ZThn88_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7706C2D1Ev,_ZThn116_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7706C2D0Ev,_ZThn116_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY vtc_S7706C2[] = {
  ABISELECT(192,116),
  ABISELECT(144,88),
  ABISELECT(96,60),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&_ZN7S7706C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v17Ev,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(80,48),
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7706C2D1Ev,_ZTv0_n24_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7706C2D0Ev,_ZTv0_n24_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v14Ev,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7706C2D1Ev,_ZTvn16_n24_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7706C2D0Ev,_ZTvn16_n24_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  ABISELECT(48,28),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C2D1Ev,_ZTv0_n16_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C2D0Ev,_ZTv0_n16_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
  0,
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S7706C2[];
extern void _ZN7S7706C3D1Ev();
extern void _ZN7S7706C3D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void _ZN7S7706C33v13Ev();
extern void _ZN7S7706C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C3__7S7706C2[] = {
  ABISELECT(80,48),
  ABISELECT(176,104),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&_ZN7S7706C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v14Ev,
};
extern void _ZN7S7706C7D1Ev();
extern void _ZN7S7706C7D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C77S7706C3__7S7706C2[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&_ZN7S7706C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C77S7706C3__7S7706C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(48,28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn176_N7S7706C7D1Ev,_ZThn104_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn176_N7S7706C7D0Ev,_ZThn104_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__A2__7S7706C77S7706C3__7S7706C2[] = {
  0,
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7706C3D1Ev,_ZThn48_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7706C3D0Ev,_ZThn48_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C4__7S7706C3__7S7706C2[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C3D1Ev,_ZThn76_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C3D0Ev,_ZThn76_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C3__7S7706C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(48,28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S7706C3D1Ev,_ZThn104_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S7706C3D0Ev,_ZThn104_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__A1__7S7706C3__7S7706C2[] = {
  0,
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern void _ZN7S7706C6D1Ev();
extern void _ZN7S7706C6D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C2[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&_ZN7S7706C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__7S7706C6__7S7706C2[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
static  VTT_ENTRY vtt_S7706C2[] = {
  {&(_ZTV7S7706C2[6]),  6,82},
  {&(_ZTV7S7706C2[25]),  25,82},
  {&(_ZTV7S7706C2[47]),  47,82},
  {&(_ZTV7S7706C2[65]),  65,82},
  {&(_ZTV7S7706C2[79]),  79,82},
  {&(_ZTV7S7706C2[34]),  34,82},
  {&(_tg__ZTV7S7706C3__7S7706C2[5]),  5,12},
  {&(_tg__ZTV7S7706C77S7706C3__7S7706C2[4]),  4,9},
  {&(_tg__ZTV7S7706C6__7S7706C77S7706C3__7S7706C2[12]),  12,22},
  {&(_tg__ZTV7S7706C5__A2__7S7706C77S7706C3__7S7706C2[4]),  4,7},
  {&(_tg__ZTV7S7706C4__7S7706C3__7S7706C2[7]),  7,13},
  {&(_tg__ZTV7S7706C6__7S7706C3__7S7706C2[12]),  12,22},
  {&(_tg__ZTV7S7706C5__A1__7S7706C3__7S7706C2[4]),  4,7},
  {&(_tg__ZTV7S7706C6__7S7706C2[3]),  3,13},
  {&(_tg__ZTV7S7706C5__7S7706C6__7S7706C2[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7706C2[];
extern  VTBL_ENTRY _ZTV7S7706C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C2[];
static VTBL_ENTRY alt_thunk_names142[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C3D0Ev,_ZThn76_N7S7706C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C3D1Ev,_ZThn76_N7S7706C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C3D0Ev,_ZThn104_N7S7706C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C3D0Ev,_ZThn48_N7S7706C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C3D1Ev,_ZThn104_N7S7706C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C3D1Ev,_ZThn48_N7S7706C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C7D0Ev,_ZThn104_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C7D1Ev,_ZThn104_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C2D0Ev,_ZTv0_n16_N7S7706C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7706C2D0Ev,_ZThn88_N7S7706C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C2D1Ev,_ZTv0_n16_N7S7706C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7706C2D1Ev,_ZThn88_N7S7706C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7706C2D0Ev,_ZThn116_N7S7706C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7706C2D0Ev,_ZThn60_N7S7706C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7706C2D1Ev,_ZThn116_N7S7706C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7706C2D1Ev,_ZThn60_N7S7706C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7706C2D0Ev,_ZTv0_n24_N7S7706C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7706C2D0Ev,_ZThn12_N7S7706C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7706C2D1Ev,_ZTv0_n24_N7S7706C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7706C2D1Ev,_ZThn12_N7S7706C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7706C2 = {  "S7706C2", // class name
  bases_S7706C2, 11,
  &(vtc_S7706C2[0]), // expected_vtbl_contents
  &(vtt_S7706C2[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S7706C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7706C2),82, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7706C2),15, //virtual table table var
  11, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names142,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7706C1  : S7706C2 {
  virtual  ~S7706C1(); // _ZN7S7706C1D2Ev
  virtual void  v1(); // _ZN7S7706C12v1Ev
  virtual void  v2(); // _ZN7S7706C12v2Ev
  S7706C1(); // tgen
};
//SIG(1 S7706C1) C1{ BC2{ VBC3{ VBC4{ BC5{ vd v3 FD} v4 v5 v6 Fi[3]} VBC6{ VBC5 BC4 vd v7 v8 v9 v10} BC7{ BC5 BC4 VBC6 vd v11 v12 Fi} vd v13 v14} vd v15 v16 v17 Fi[2]} vd v1 v2}


 S7706C1 ::~S7706C1(){ note_dtor("S7706C1", this);}
void  S7706C1 ::v1(){vfunc_called(this, "_ZN7S7706C12v1Ev");}
void  S7706C1 ::v2(){vfunc_called(this, "_ZN7S7706C12v2Ev");}
S7706C1 ::S7706C1(){ note_ctor("S7706C1", this);} // tgen

static void Test_S7706C1()
{
  extern Class_Descriptor cd_S7706C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(15,34)];
    init_test(&cd_S7706C1, buf);
    S7706C1 *dp, &lv = *(dp=new (buf) S7706C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(224,132), "sizeof(S7706C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7706C1)");
    /*is_ambiguous_... S7706C1::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*), ABISELECT(96,60), "S7706C1");
    /*is_ambiguous_... S7706C3::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*)(S7706C3*), ABISELECT(96,60), "S7706C1");
    /*is_ambiguous_... S7706C6::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C6*), ABISELECT(192,116), "S7706C1");
    check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C6*), ABISELECT(144,88), "S7706C1");
    check_base_class_offset(lv, (S7706C4*)(S7706C6*), ABISELECT(144,88), "S7706C1");
    check_base_class_offset(lv, (S7706C6*)(S7706C3*), ABISELECT(144,88), "S7706C1");
    check_base_class_offset(lv, (S7706C6*)(S7706C7*)(S7706C3*), ABISELECT(144,88), "S7706C1");
    /*is_ambiguous_... S7706C7::S7706C5 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C7*)(S7706C3*), ABISELECT(16,12), "S7706C1");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C5*)(S7706C4*)(S7706C7*)(S7706C3*), ABISELECT(48,28), "S7706C1");
    /*is_ambiguous_... S7706C7::S7706C4 */ AMB_check_base_class_offset(lv, (S7706C4*)(S7706C7*)(S7706C3*), ABISELECT(48,28), "S7706C1");
    check_base_class_offset(lv, (S7706C7*)(S7706C3*), ABISELECT(16,12), "S7706C1");
    check_base_class_offset(lv, (S7706C3*)(S7706C2*), ABISELECT(16,12), "S7706C1");
    check_base_class_offset(lv, (S7706C2*), 0, "S7706C1");
    test_class_info(&lv, &cd_S7706C1);
    dp->~S7706C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7706C1(Test_S7706C1, "S7706C1", ABISELECT(224,132));

#else // __cplusplus

extern void _ZN7S7706C1C1Ev();
extern void _ZN7S7706C1D2Ev();
Name_Map name_map_S7706C1[] = {
  NSPAIR(_ZN7S7706C1C1Ev),
  NSPAIR(_ZN7S7706C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C6;
extern VTBL_ENTRY _ZTI7S7706C6[];
extern  VTBL_ENTRY _ZTV7S7706C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C6[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C5;
extern VTBL_ENTRY _ZTI7S7706C5[];
extern  VTBL_ENTRY _ZTV7S7706C5[];
extern Class_Descriptor cd_S7706C4;
extern VTBL_ENTRY _ZTI7S7706C4[];
extern  VTBL_ENTRY _ZTV7S7706C4[];
extern Class_Descriptor cd_S7706C7;
extern VTBL_ENTRY _ZTI7S7706C7[];
extern  VTBL_ENTRY _ZTV7S7706C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C7[];
extern Class_Descriptor cd_S7706C3;
extern VTBL_ENTRY _ZTI7S7706C3[];
extern  VTBL_ENTRY _ZTV7S7706C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C3[];
extern Class_Descriptor cd_S7706C2;
extern VTBL_ENTRY _ZTI7S7706C2[];
extern  VTBL_ENTRY _ZTV7S7706C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C2[];
static Base_Class bases_S7706C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7706C5,    ABISELECT(96,60), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(96,60), //bcp->offset
    42, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S7706C5,    ABISELECT(192,116), //bcp->offset
    77, //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_S7706C5,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(144,88), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S7706C6,    ABISELECT(144,88), //bcp->offset
    55, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    20, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S7706C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7706C5,    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
    8, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S7706C4,    ABISELECT(48,28), //bcp->offset
    34, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    12, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    9, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S7706C7,    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
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    10, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S7706C3,    ABISELECT(16,12), //bcp->offset
    13, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    11, //init_seq
    11, //immediately_derived
  0, 1},
  {&cd_S7706C2,    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
    12, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7706C1[];
extern void _ZN7S7706C1D1Ev();
extern void _ZN7S7706C1D0Ev();
extern void _ZN7S7706C23v15Ev();
extern void _ZN7S7706C23v16Ev();
extern void _ZN7S7706C23v17Ev();
extern void _ZN7S7706C12v1Ev();
extern void _ZN7S7706C12v2Ev();
extern void ABISELECT(_ZTv0_n48_N7S7706C1D1Ev,_ZTv0_n24_N7S7706C1D1Ev)();
extern void ABISELECT(_ZThn16_N7S7706C1D1Ev,_ZThn12_N7S7706C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7706C1D0Ev,_ZTv0_n24_N7S7706C1D0Ev)();
extern void ABISELECT(_ZThn16_N7S7706C1D0Ev,_ZThn12_N7S7706C1D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void _ZN7S7706C33v13Ev();
extern void _ZN7S7706C33v14Ev();
extern void ABISELECT(_ZTvn32_n48_N7S7706C1D1Ev,_ZTvn16_n24_N7S7706C1D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7706C1D0Ev,_ZTvn16_n24_N7S7706C1D0Ev)();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C1D1Ev,_ZTv0_n12_N7S7706C1D1Ev)();
extern void ABISELECT(_ZThn96_N7S7706C1D1Ev,_ZThn60_N7S7706C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C1D0Ev,_ZTv0_n12_N7S7706C1D0Ev)();
extern void ABISELECT(_ZThn96_N7S7706C1D0Ev,_ZThn60_N7S7706C1D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void ABISELECT(_ZTv0_n32_N7S7706C1D1Ev,_ZTv0_n16_N7S7706C1D1Ev)();
extern void ABISELECT(_ZThn144_N7S7706C1D1Ev,_ZThn88_N7S7706C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C1D0Ev,_ZTv0_n16_N7S7706C1D0Ev)();
extern void ABISELECT(_ZThn144_N7S7706C1D0Ev,_ZThn88_N7S7706C1D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
extern void ABISELECT(_ZTv0_n24_N7S7706C1D1Ev,_ZTv0_n12_N7S7706C1D1Ev)();
extern void ABISELECT(_ZThn192_N7S7706C1D1Ev,_ZThn116_N7S7706C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C1D0Ev,_ZTv0_n12_N7S7706C1D0Ev)();
extern void ABISELECT(_ZThn192_N7S7706C1D0Ev,_ZThn116_N7S7706C1D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY vtc_S7706C1[] = {
  ABISELECT(192,116),
  ABISELECT(144,88),
  ABISELECT(96,60),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C1[0]),
  (VTBL_ENTRY)&_ZN7S7706C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7706C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7706C12v2Ev,
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(80,48),
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7706C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7706C1D1Ev,_ZTv0_n24_N7S7706C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7706C1D0Ev,_ZTv0_n24_N7S7706C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v14Ev,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7706C1D1Ev,_ZTvn16_n24_N7S7706C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7706C1D0Ev,_ZTvn16_n24_N7S7706C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7706C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C1D1Ev,_ZTv0_n12_N7S7706C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C1D0Ev,_ZTv0_n12_N7S7706C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  ABISELECT(48,28),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7706C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C1D1Ev,_ZTv0_n16_N7S7706C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C1D0Ev,_ZTv0_n16_N7S7706C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
  0,
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI7S7706C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C1D1Ev,_ZTv0_n12_N7S7706C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C1D0Ev,_ZTv0_n12_N7S7706C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern VTBL_ENTRY _ZTV7S7706C1[];
extern void _ZN7S7706C2D1Ev();
extern void _ZN7S7706C2D0Ev();
extern void _ZN7S7706C23v15Ev();
extern void _ZN7S7706C23v16Ev();
extern void _ZN7S7706C23v17Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C2__7S7706C1[] = {
  ABISELECT(192,116),
  ABISELECT(144,88),
  ABISELECT(96,60),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&_ZN7S7706C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C2D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v15Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v16Ev,
  (VTBL_ENTRY)&_ZN7S7706C23v17Ev,
};
extern void ABISELECT(_ZTv0_n48_N7S7706C2D1Ev,_ZTv0_n24_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn16_N7S7706C2D1Ev,_ZThn12_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N7S7706C2D0Ev,_ZTv0_n24_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn16_N7S7706C2D0Ev,_ZThn12_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void _ZN7S7706C33v13Ev();
extern void _ZN7S7706C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C3__7S7706C2__7S7706C1[] = {
  0,
  0,
  ABISELECT(32,16),
  ABISELECT(32,16),
  ABISELECT(32,16),
  0,
  0,
  0,
  ABISELECT(-16,-12),
  ABISELECT(80,48),
  ABISELECT(176,104),
  ABISELECT(128,76),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7706C2D1Ev,_ZTv0_n24_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N7S7706C2D0Ev,_ZTv0_n24_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn96_N7S7706C2D1Ev,_ZThn60_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn96_N7S7706C2D0Ev,_ZThn60_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C4__7S7706C2__7S7706C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7706C2D1Ev,_ZTv0_n16_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn144_N7S7706C2D1Ev,_ZThn88_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C2D0Ev,_ZTv0_n16_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn144_N7S7706C2D0Ev,_ZThn88_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C2__7S7706C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-144,-88),
  ABISELECT(48,28),
  ABISELECT(-144,-88),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C2D1Ev,_ZTv0_n16_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C2D0Ev,_ZTv0_n16_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev)();
extern void ABISELECT(_ZThn192_N7S7706C2D1Ev,_ZThn116_N7S7706C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev)();
extern void ABISELECT(_ZThn192_N7S7706C2D0Ev,_ZThn116_N7S7706C2D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__A1__7S7706C2__7S7706C1[] = {
  0,
  ABISELECT(-192,-116),
  ABISELECT(-192,-116),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern void ABISELECT(_ZTvn32_n48_N7S7706C2D1Ev,_ZTvn16_n24_N7S7706C2D1Ev)();
extern void ABISELECT(_ZTvn32_n48_N7S7706C2D0Ev,_ZTvn16_n24_N7S7706C2D0Ev)();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C47S7706C77S7706C3__A2__7S7706C2__7S7706C1[] = {
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7706C2D1Ev,_ZTvn16_n24_N7S7706C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn32_n48_N7S7706C2D0Ev,_ZTvn16_n24_N7S7706C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
};
extern void _ZN7S7706C3D1Ev();
extern void _ZN7S7706C3D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
extern void _ZN7S7706C33v13Ev();
extern void _ZN7S7706C33v14Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C3__7S7706C1[] = {
  ABISELECT(80,48),
  ABISELECT(176,104),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&_ZN7S7706C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v13Ev,
  (VTBL_ENTRY)&_ZN7S7706C33v14Ev,
};
extern void _ZN7S7706C7D1Ev();
extern void _ZN7S7706C7D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C73v11Ev();
extern void _ZN7S7706C73v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C77S7706C3__7S7706C1[] = {
  ABISELECT(176,104),
  ABISELECT(128,76),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&_ZN7S7706C7D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C7D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v11Ev,
  (VTBL_ENTRY)&_ZN7S7706C73v12Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C77S7706C3__7S7706C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(48,28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev)();
extern void ABISELECT(_ZThn176_N7S7706C7D1Ev,_ZThn104_N7S7706C7D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev)();
extern void ABISELECT(_ZThn176_N7S7706C7D0Ev,_ZThn104_N7S7706C7D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__A2__7S7706C77S7706C3__7S7706C1[] = {
  0,
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7706C7[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn80_N7S7706C3D1Ev,_ZThn48_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn80_N7S7706C3D0Ev,_ZThn48_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C4__7S7706C3__7S7706C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-80,-48),
  ABISELECT(-80,-48),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
};
extern void ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn128_N7S7706C3D1Ev,_ZThn76_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn128_N7S7706C3D0Ev,_ZThn76_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C3__7S7706C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-76),
  ABISELECT(48,28),
  ABISELECT(-128,-76),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev)();
extern void ABISELECT(_ZThn176_N7S7706C3D1Ev,_ZThn104_N7S7706C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev)();
extern void ABISELECT(_ZThn176_N7S7706C3D0Ev,_ZThn104_N7S7706C3D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__A1__7S7706C3__7S7706C1[] = {
  0,
  ABISELECT(-176,-104),
  ABISELECT(-176,-104),
  (VTBL_ENTRY)&(_ZTI7S7706C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
extern void _ZN7S7706C6D1Ev();
extern void _ZN7S7706C6D0Ev();
extern void _ZN7S7706C52v3Ev();
extern void _ZN7S7706C42v4Ev();
extern void _ZN7S7706C42v5Ev();
extern void _ZN7S7706C42v6Ev();
extern void _ZN7S7706C62v7Ev();
extern void _ZN7S7706C62v8Ev();
extern void _ZN7S7706C62v9Ev();
extern void _ZN7S7706C63v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C6__7S7706C1[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&_ZN7S7706C6D1Ev,
  (VTBL_ENTRY)&_ZN7S7706C6D0Ev,
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v4Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7706C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v7Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v8Ev,
  (VTBL_ENTRY)&_ZN7S7706C62v9Ev,
  (VTBL_ENTRY)&_ZN7S7706C63v10Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev)();
extern void ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev)() __attribute__((weak));
extern void _ZN7S7706C52v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7706C5__7S7706C6__7S7706C1[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S7706C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev),
  (VTBL_ENTRY)&_ZN7S7706C52v3Ev,
};
static  VTT_ENTRY vtt_S7706C1[] = {
  {&(_ZTV7S7706C1[6]),  6,84},
  {&(_tg__ZTV7S7706C2__7S7706C1[6]),  6,11},
  {&(_tg__ZTV7S7706C3__7S7706C2__7S7706C1[14]),  14,21},
  {&(_tg__ZTV7S7706C4__7S7706C2__7S7706C1[7]),  7,13},
  {&(_tg__ZTV7S7706C6__7S7706C2__7S7706C1[12]),  12,22},
  {&(_tg__ZTV7S7706C5__A1__7S7706C2__7S7706C1[4]),  4,7},
  {&(_tg__ZTV7S7706C47S7706C77S7706C3__A2__7S7706C2__7S7706C1[2]),  2,8},
  {&(_ZTV7S7706C1[27]),  27,84},
  {&(_ZTV7S7706C1[49]),  49,84},
  {&(_ZTV7S7706C1[67]),  67,84},
  {&(_ZTV7S7706C1[81]),  81,84},
  {&(_ZTV7S7706C1[36]),  36,84},
  {&(_tg__ZTV7S7706C3__7S7706C1[5]),  5,12},
  {&(_tg__ZTV7S7706C77S7706C3__7S7706C1[4]),  4,9},
  {&(_tg__ZTV7S7706C6__7S7706C77S7706C3__7S7706C1[12]),  12,22},
  {&(_tg__ZTV7S7706C5__A2__7S7706C77S7706C3__7S7706C1[4]),  4,7},
  {&(_tg__ZTV7S7706C4__7S7706C3__7S7706C1[7]),  7,13},
  {&(_tg__ZTV7S7706C6__7S7706C3__7S7706C1[12]),  12,22},
  {&(_tg__ZTV7S7706C5__A1__7S7706C3__7S7706C1[4]),  4,7},
  {&(_tg__ZTV7S7706C6__7S7706C1[3]),  3,13},
  {&(_tg__ZTV7S7706C5__7S7706C6__7S7706C1[4]),  4,7},
};
extern VTBL_ENTRY _ZTI7S7706C1[];
extern  VTBL_ENTRY _ZTV7S7706C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7706C1[];
static VTBL_ENTRY alt_thunk_names143[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D0Ev,_ZTv0_n12_N7S7706C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D0Ev,_ZThn28_N7S7706C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C6D1Ev,_ZTv0_n12_N7S7706C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7706C6D1Ev,_ZThn28_N7S7706C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C3D0Ev,_ZTv0_n16_N7S7706C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C3D0Ev,_ZThn76_N7S7706C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C3D1Ev,_ZTv0_n16_N7S7706C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C3D1Ev,_ZThn76_N7S7706C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C3D0Ev,_ZTv0_n12_N7S7706C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C3D0Ev,_ZThn104_N7S7706C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C3D0Ev,_ZThn48_N7S7706C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C3D1Ev,_ZTv0_n12_N7S7706C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C3D1Ev,_ZThn104_N7S7706C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N7S7706C3D1Ev,_ZThn48_N7S7706C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D0Ev,_ZTv0_n12_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C7D0Ev,_ZThn104_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C7D1Ev,_ZTv0_n12_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn176_N7S7706C7D1Ev,_ZThn104_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D0Ev,_ZTv0_n16_N7S7706C7D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D0Ev,_ZThn76_N7S7706C7D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C7D1Ev,_ZTv0_n16_N7S7706C7D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N7S7706C7D1Ev,_ZThn76_N7S7706C7D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C2D0Ev,_ZTv0_n16_N7S7706C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7706C2D0Ev,_ZThn88_N7S7706C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C2D1Ev,_ZTv0_n16_N7S7706C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7706C2D1Ev,_ZThn88_N7S7706C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C2D0Ev,_ZTv0_n12_N7S7706C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7706C2D0Ev,_ZThn116_N7S7706C2D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7706C2D0Ev,_ZThn60_N7S7706C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C2D1Ev,_ZTv0_n12_N7S7706C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7706C2D1Ev,_ZThn116_N7S7706C2D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7706C2D1Ev,_ZThn60_N7S7706C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7706C2D0Ev,_ZTv0_n24_N7S7706C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7706C2D0Ev,_ZThn12_N7S7706C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7706C2D1Ev,_ZTv0_n24_N7S7706C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7706C2D1Ev,_ZThn12_N7S7706C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C1D0Ev,_ZTv0_n16_N7S7706C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7706C1D0Ev,_ZThn88_N7S7706C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S7706C1D1Ev,_ZTv0_n16_N7S7706C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn144_N7S7706C1D1Ev,_ZThn88_N7S7706C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C1D0Ev,_ZTv0_n12_N7S7706C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7706C1D0Ev,_ZThn116_N7S7706C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7706C1D0Ev,_ZThn60_N7S7706C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7706C1D1Ev,_ZTv0_n12_N7S7706C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn192_N7S7706C1D1Ev,_ZThn116_N7S7706C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N7S7706C1D1Ev,_ZThn60_N7S7706C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7706C1D0Ev,_ZTv0_n24_N7S7706C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7706C1D0Ev,_ZThn12_N7S7706C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N7S7706C1D1Ev,_ZTv0_n24_N7S7706C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N7S7706C1D1Ev,_ZThn12_N7S7706C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7706C1 = {  "S7706C1", // class name
  bases_S7706C1, 12,
  &(vtc_S7706C1[0]), // expected_vtbl_contents
  &(vtt_S7706C1[0]), // expected_vtt_contents
  ABISELECT(224,132), // object size
  NSPAIRA(_ZTI7S7706C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7706C1),84, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7706C1),21, //virtual table table var
  12, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names143,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19618C4  : virtual S20948C8 {
  ~S19618C4(); // tgen
  S19618C4(); // tgen
};
//SIG(-1 S19618C4) C1{ VBC2{ m Fc[7]}}


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

static void Test_S19618C4()
{
  extern Class_Descriptor cd_S19618C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19618C4, buf);
    S19618C4 *dp, &lv = *(dp=new (buf) S19618C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19618C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19618C4)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S19618C4");
    test_class_info(&lv, &cd_S19618C4);
    dp->~S19618C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19618C4(Test_S19618C4, "S19618C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19618C4C1Ev();
extern void _ZN8S19618C4D1Ev();
Name_Map name_map_S19618C4[] = {
  NSPAIR(_ZN8S19618C4C1Ev),
  NSPAIR(_ZN8S19618C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S19618C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19618C4[];
static  VTBL_ENTRY vtc_S19618C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C4[0]),
};
extern VTBL_ENTRY _ZTV8S19618C4[];
static  VTT_ENTRY vtt_S19618C4[] = {
  {&(_ZTV8S19618C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19618C4[];
extern  VTBL_ENTRY _ZTV8S19618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C4[];
Class_Descriptor cd_S19618C4 = {  "S19618C4", // class name
  bases_S19618C4, 1,
  &(vtc_S19618C4[0]), // expected_vtbl_contents
  &(vtt_S19618C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19618C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19618C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19618C4),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  S19618C6  : S9624C48 {
  ::S9624C39 s19618c6f0;
  ::S9624C48 s19618c6f1;
};
//SIG(-1 S19618C6) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S19618C6()
{
  extern Class_Descriptor cd_S19618C6;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S19618C6, buf);
    S19618C6 &lv = *(new (buf) S19618C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S19618C6)");
    check2(__alignof__(lv), 1, "__alignof__(S19618C6)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19618C6");
    check_field_offset(lv, s19618c6f0, 0, "S19618C6.s19618c6f0");
    check_field_offset(lv, s19618c6f1, 1, "S19618C6.s19618c6f1");
    test_class_info(&lv, &cd_S19618C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19618C6(Test_S19618C6, "S19618C6", 2);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19618C2  : S19861C23_nt , S19618C4 , virtual S19618C6 {
  ~S19618C2(); // tgen
  S19618C2(); // tgen
};
//SIG(-1 S19618C2) C1{ BC2{ vd m Fi} BC3{ VBC4{ m Fc[7]}} VBC5{ BC6{ m} FC7{ m} FC6}}


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

static void Test_S19618C2()
{
  extern Class_Descriptor cd_S19618C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S19618C2, buf);
    S19618C2 *dp, &lv = *(dp=new (buf) S19618C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S19618C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19618C2)");
    check_base_class_offset(lv, (S19861C23_nt*), 0, "S19618C2");
    check_base_class_offset(lv, (S20948C8*)(S19618C4*), ABISELECT(24,12), "S19618C2");
    check_base_class_offset(lv, (S19618C4*), ABISELECT(16,8), "S19618C2");
    check_base_class_offset(lv, (S9624C48*)(S19618C6*), ABISELECT(31,19), "S19618C2");
    check_base_class_offset(lv, (S19618C6*), ABISELECT(31,19), "S19618C2");
    test_class_info(&lv, &cd_S19618C2);
    dp->~S19618C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19618C2(Test_S19618C2, "S19618C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S19618C2C1Ev();
extern void _ZN8S19618C2D1Ev();
Name_Map name_map_S19618C2[] = {
  NSPAIR(_ZN8S19618C2C1Ev),
  NSPAIR(_ZN8S19618C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19618C4;
extern VTBL_ENTRY _ZTI8S19618C4[];
extern  VTBL_ENTRY _ZTV8S19618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19618C6;
extern VTBL_ENTRY _ZTI8S19618C6[];
static Base_Class bases_S19618C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S19618C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(31,19), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19618C6,    ABISELECT(31,19), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19618C2[];
extern void _ZN8S19618C2D1Ev();
extern void _ZN8S19618C2D0Ev();
static  VTBL_ENTRY vtc_S19618C2[] = {
  ABISELECT(31,19),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C2[0]),
  (VTBL_ENTRY)&_ZN8S19618C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19618C2D0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19618C2[0]),
};
extern VTBL_ENTRY _ZTV8S19618C2[];
static  VTBL_ENTRY _tg__ZTV8S19618C4__8S19618C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C4[0]),
};
static  VTT_ENTRY vtt_S19618C2[] = {
  {&(_ZTV8S19618C2[4]),  4,9},
  {&(_tg__ZTV8S19618C4__8S19618C2[3]),  3,3},
  {&(_ZTV8S19618C2[9]),  9,9},
};
extern VTBL_ENTRY _ZTI8S19618C2[];
extern  VTBL_ENTRY _ZTV8S19618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C2[];
Class_Descriptor cd_S19618C2 = {  "S19618C2", // class name
  bases_S19618C2, 5,
  &(vtc_S19618C2[0]), // expected_vtbl_contents
  &(vtt_S19618C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S19618C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S19618C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19618C2),3, //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  S19618C11  {
  virtual void  v1(); // _ZN9S19618C112v1Ev
  ~S19618C11(); // tgen
  S19618C11(); // tgen
};
//SIG(-1 S19618C11) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN9S19618C11C1Ev();
extern void _ZN9S19618C11D1Ev();
Name_Map name_map_S19618C11[] = {
  NSPAIR(_ZN9S19618C11C1Ev),
  NSPAIR(_ZN9S19618C11D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI9S19618C11[];
extern void _ZN9S19618C112v1Ev();
static  VTBL_ENTRY vtc_S19618C11[] = {
  0,
  (VTBL_ENTRY)&(_ZTI9S19618C11[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
};
extern VTBL_ENTRY _ZTI9S19618C11[];
extern  VTBL_ENTRY _ZTV9S19618C11[];
Class_Descriptor cd_S19618C11 = {  "S19618C11", // class name
  0,0,//no base classes
  &(vtc_S19618C11[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S19618C11),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV9S19618C11),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  S19618C10  : virtual S19618C11 , S20948C7_nt , virtual S9624C48 {
  int s19618c10f0;
  virtual  ~S19618C10(); // _ZN9S19618C10D2Ev
  S19618C10(); // tgen
};
//SIG(-1 S19618C10) C1{ VBC2{ v1} BC3{ vd m FD} VBC4{ m} vd Fi}


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

static void Test_S19618C10()
{
  extern Class_Descriptor cd_S19618C10;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S19618C10, buf);
    S19618C10 *dp, &lv = *(dp=new (buf) S19618C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S19618C10)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19618C10)");
    check_base_class_offset(lv, (S19618C11*), ABISELECT(40,20), "S19618C10");
    check_base_class_offset(lv, (S20948C7_nt*), 0, "S19618C10");
    check_base_class_offset(lv, (S9624C48*), 0, "S19618C10");
    check_field_offset(lv, s19618c10f0, ABISELECT(32,16), "S19618C10.s19618c10f0");
    test_class_info(&lv, &cd_S19618C10);
    dp->~S19618C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19618C10(Test_S19618C10, "S19618C10", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN9S19618C10C1Ev();
extern void _ZN9S19618C10D2Ev();
Name_Map name_map_S19618C10[] = {
  NSPAIR(_ZN9S19618C10C1Ev),
  NSPAIR(_ZN9S19618C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19618C11;
extern VTBL_ENTRY _ZTI9S19618C11[];
extern  VTBL_ENTRY _ZTV9S19618C11[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19618C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19618C11,    ABISELECT(40,20), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI9S19618C10[];
extern void _ZN9S19618C10D1Ev();
extern void _ZN9S19618C10D0Ev();
extern void _ZN9S19618C112v1Ev();
static  VTBL_ENTRY vtc_S19618C10[] = {
  0,
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI9S19618C10[0]),
  (VTBL_ENTRY)&_ZN9S19618C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19618C10D0Ev,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI9S19618C10[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
};
extern VTBL_ENTRY _ZTV9S19618C10[];
static  VTT_ENTRY vtt_S19618C10[] = {
  {&(_ZTV9S19618C10[4]),  4,10},
  {&(_ZTV9S19618C10[9]),  9,10},
};
extern VTBL_ENTRY _ZTI9S19618C10[];
extern  VTBL_ENTRY _ZTV9S19618C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19618C10[];
Class_Descriptor cd_S19618C10 = {  "S19618C10", // class name
  bases_S19618C10, 3,
  &(vtc_S19618C10[0]), // expected_vtbl_contents
  &(vtt_S19618C10[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI9S19618C10),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S19618C10),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S19618C10),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19618C9  : virtual S19618C10 {
  ~S19618C9(); // tgen
  S19618C9(); // tgen
};
//SIG(-1 S19618C9) C1{ VBC2{ VBC3{ v1} BC4{ vd m FD} VBC5{ m} vd Fi}}


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

static void Test_S19618C9()
{
  extern Class_Descriptor cd_S19618C9;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(5,7)];
    init_test(&cd_S19618C9, buf);
    S19618C9 *dp, &lv = *(dp=new (buf) S19618C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,24), "sizeof(S19618C9)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19618C9)");
    check_base_class_offset(lv, (S19618C11*)(S19618C10*), 0, "S19618C9");
    check_base_class_offset(lv, (S20948C7_nt*)(S19618C10*), ABISELECT(16,4), "S19618C9");
    check_base_class_offset(lv, (S9624C48*)(S19618C10*), 0, "S19618C9");
    check_base_class_offset(lv, (S19618C10*), ABISELECT(16,4), "S19618C9");
    test_class_info(&lv, &cd_S19618C9);
    dp->~S19618C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19618C9(Test_S19618C9, "S19618C9", ABISELECT(64,24));

#else // __cplusplus

extern void _ZN8S19618C9C1Ev();
extern void _ZN8S19618C9D1Ev();
Name_Map name_map_S19618C9[] = {
  NSPAIR(_ZN8S19618C9C1Ev),
  NSPAIR(_ZN8S19618C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19618C11;
extern VTBL_ENTRY _ZTI9S19618C11[];
extern  VTBL_ENTRY _ZTV9S19618C11[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19618C10;
extern VTBL_ENTRY _ZTI9S19618C10[];
extern  VTBL_ENTRY _ZTV9S19618C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19618C10[];
static Base_Class bases_S19618C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19618C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20948C7_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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19618C10,    ABISELECT(16,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19618C9[];
extern void _ZN9S19618C112v1Ev();
extern void _ZN8S19618C9D1Ev();
extern void _ZN8S19618C9D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S19618C9D1Ev,_ZTv0_n20_N8S19618C9D1Ev)();
extern void ABISELECT(_ZThn16_N8S19618C9D1Ev,_ZThn4_N8S19618C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19618C9D0Ev,_ZTv0_n20_N8S19618C9D0Ev)();
extern void ABISELECT(_ZThn16_N8S19618C9D0Ev,_ZThn4_N8S19618C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19618C9[] = {
  0,
  0,
  ABISELECT(16,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C9[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
  (VTBL_ENTRY)&_ZN8S19618C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19618C9D0Ev,
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S19618C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C9D1Ev,_ZTv0_n20_N8S19618C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C9D0Ev,_ZTv0_n20_N8S19618C9D0Ev),
};
extern VTBL_ENTRY _ZTV8S19618C9[];
extern void _ZN9S19618C10D1Ev();
extern void _ZN9S19618C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19618C10__8S19618C9[] = {
  ABISELECT(-16,-4),
  ABISELECT(-16,-4),
  0,
  (VTBL_ENTRY)&(_ZTI9S19618C10[0]),
  (VTBL_ENTRY)&_ZN9S19618C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19618C10D0Ev,
};
extern void _ZN9S19618C112v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19618C11__9S19618C10__8S19618C9[] = {
  0,
  ABISELECT(16,4),
  (VTBL_ENTRY)&(_ZTI9S19618C10[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
};
static  VTT_ENTRY vtt_S19618C9[] = {
  {&(_ZTV8S19618C9[6]),  6,16},
  {&(_ZTV8S19618C9[14]),  14,16},
  {&(_ZTV8S19618C9[6]),  6,16},
  {&(_tg__ZTV9S19618C10__8S19618C9[4]),  4,6},
  {&(_tg__ZTV9S19618C11__9S19618C10__8S19618C9[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19618C9[];
extern  VTBL_ENTRY _ZTV8S19618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C9[];
static VTBL_ENTRY alt_thunk_names144[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19618C9D0Ev,_ZTv0_n20_N8S19618C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19618C9D0Ev,_ZThn4_N8S19618C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19618C9D1Ev,_ZTv0_n20_N8S19618C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S19618C9D1Ev,_ZThn4_N8S19618C9D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19618C9 = {  "S19618C9", // class name
  bases_S19618C9, 4,
  &(vtc_S19618C9[0]), // expected_vtbl_contents
  &(vtt_S19618C9[0]), // expected_vtt_contents
  ABISELECT(64,24), // object size
  NSPAIRA(_ZTI8S19618C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19618C9),16, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19618C9),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names144,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19618C1  : virtual S19618C2 , S19618C9 , virtual S9624C19_nt , virtual S662C14 , S19618C4 {
  ::S10296C5_nt s19618c1f0[7];
  int s19618c1f1;
  virtual  ~S19618C1(); // _ZN8S19618C1D2Ev
  S19618C1(); // tgen
};
//SIG(1 S19618C1) C1{ VBC2{ BC3{ vd m Fi} BC4{ VBC5{ m Fc[7]}} VBC6{ BC7{ m} FC8{ m} FC7}} BC9{ VBC10{ VBC11{ v1} BC12{ vd m FD} VBC7 vd Fi}} VBC13{ m} VBC14{ m} BC4 vd FC15{ m Fp}[7] Fi}


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

static void Test_S19618C1()
{
  extern Class_Descriptor cd_S19618C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,22)];
    init_test(&cd_S19618C1, buf);
    S19618C1 *dp, &lv = *(dp=new (buf) S19618C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,84), "sizeof(S19618C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19618C1)");
    check_base_class_offset(lv, (S19861C23_nt*)(S19618C2*), ABISELECT(80,40), "S19618C1");
    check_base_class_offset(lv, (S20948C8*)(S19618C4*)(S19618C2*), ABISELECT(104,52), "S19618C1");
    /*is_ambiguous_... S19618C1::S19618C4 */ AMB_check_base_class_offset(lv, (S20948C8*)(S19618C4*), ABISELECT(104,52), "S19618C1");
    check_base_class_offset(lv, (S19618C4*)(S19618C2*), ABISELECT(96,48), "S19618C1");
    check_base_class_offset(lv, (S9624C48*)(S19618C6*), ABISELECT(111,59), "S19618C1");
    check_base_class_offset(lv, (S19618C6*)(S19618C2*), ABISELECT(111,59), "S19618C1");
    check_base_class_offset(lv, (S19618C2*), ABISELECT(80,40), "S19618C1");
    check_base_class_offset(lv, (S19618C11*)(S19618C10*), 0, "S19618C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S19618C10*), ABISELECT(128,64), "S19618C1");
    check_base_class_offset(lv, (S9624C48*)(S19618C10*), 0, "S19618C1");
    check_base_class_offset(lv, (S19618C10*)(S19618C9*), ABISELECT(128,64), "S19618C1");
    check_base_class_offset(lv, (S19618C9*), 0, "S19618C1");
    check_base_class_offset(lv, (S9624C19_nt*), 0, "S19618C1");
    check_base_class_offset(lv, (S662C14*), 0, "S19618C1");
    /*is_ambiguous_... S19618C1::S19618C4 */ AMB_check_base_class_offset(lv, (S19618C4*), ABISELECT(8,4), "S19618C1");
    check_field_offset(lv, s19618c1f0, ABISELECT(16,8), "S19618C1.s19618c1f0");
    check_field_offset(lv, s19618c1f1, ABISELECT(72,36), "S19618C1.s19618c1f1");
    test_class_info(&lv, &cd_S19618C1);
    dp->~S19618C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19618C1(Test_S19618C1, "S19618C1", ABISELECT(176,84));

#else // __cplusplus

extern void _ZN8S19618C1C1Ev();
extern void _ZN8S19618C1D2Ev();
Name_Map name_map_S19618C1[] = {
  NSPAIR(_ZN8S19618C1C1Ev),
  NSPAIR(_ZN8S19618C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S19618C4;
extern VTBL_ENTRY _ZTI8S19618C4[];
extern  VTBL_ENTRY _ZTV8S19618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19618C6;
extern VTBL_ENTRY _ZTI8S19618C6[];
extern Class_Descriptor cd_S19618C2;
extern VTBL_ENTRY _ZTI8S19618C2[];
extern  VTBL_ENTRY _ZTV8S19618C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C2[];
extern Class_Descriptor cd_S19618C11;
extern VTBL_ENTRY _ZTI9S19618C11[];
extern  VTBL_ENTRY _ZTV9S19618C11[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19618C10;
extern VTBL_ENTRY _ZTI9S19618C10[];
extern  VTBL_ENTRY _ZTV9S19618C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S19618C10[];
extern Class_Descriptor cd_S19618C9;
extern VTBL_ENTRY _ZTI8S19618C9[];
extern  VTBL_ENTRY _ZTV8S19618C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C9[];
extern Class_Descriptor cd_S9624C19_nt;
extern VTBL_ENTRY _ZTI11S9624C19_nt[];
extern Class_Descriptor cd_S662C14;
extern VTBL_ENTRY _ZTI7S662C14[];
extern Class_Descriptor cd_S19618C4;
extern VTBL_ENTRY _ZTI8S19618C4[];
extern  VTBL_ENTRY _ZTV8S19618C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C4[];
static Base_Class bases_S19618C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_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
    5, //immediately_derived
  0, 0},
  {&cd_S20948C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S19618C4,    ABISELECT(96,48), //bcp->offset
    24, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(111,59), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19618C6,    ABISELECT(111,59), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19618C2,    ABISELECT(80,40), //bcp->offset
    17, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19618C11,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S20948C7_nt,    ABISELECT(128,64), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19618C10,    ABISELECT(128,64), //bcp->offset
    27, //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
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S19618C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C19_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S662C14,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19618C4,    ABISELECT(8,4), //bcp->offset
    14, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19618C1[];
extern void _ZN9S19618C112v1Ev();
extern void _ZN8S19618C1D1Ev();
extern void _ZN8S19618C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S19618C1D1Ev,_ZTv0_n20_N8S19618C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S19618C1D1Ev,_ZThn40_N8S19618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19618C1D0Ev,_ZTv0_n20_N8S19618C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S19618C1D0Ev,_ZThn40_N8S19618C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19618C1D1Ev,_ZTv0_n20_N8S19618C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S19618C1D1Ev,_ZThn64_N8S19618C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19618C1D0Ev,_ZTv0_n20_N8S19618C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S19618C1D0Ev,_ZThn64_N8S19618C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19618C1[] = {
  0,
  0,
  ABISELECT(111,59),
  ABISELECT(104,52),
  ABISELECT(80,40),
  0,
  0,
  ABISELECT(128,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C1[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
  (VTBL_ENTRY)&_ZN8S19618C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19618C1D0Ev,
  ABISELECT(96,48),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19618C1[0]),
  ABISELECT(-80,-40),
  ABISELECT(31,19),
  ABISELECT(24,12),
  ABISELECT(-80,-40),
  (VTBL_ENTRY)&(_ZTI8S19618C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C1D1Ev,_ZTv0_n20_N8S19618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C1D0Ev,_ZTv0_n20_N8S19618C1D0Ev),
  ABISELECT(8,4),
  ABISELECT(-96,-48),
  (VTBL_ENTRY)&(_ZTI8S19618C1[0]),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19618C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C1D1Ev,_ZTv0_n20_N8S19618C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C1D0Ev,_ZTv0_n20_N8S19618C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19618C1[];
extern void _ZN9S19618C112v1Ev();
extern void _ZN8S19618C9D1Ev();
extern void _ZN8S19618C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19618C9__8S19618C1[] = {
  0,
  0,
  ABISELECT(128,64),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C9[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
  (VTBL_ENTRY)&_ZN8S19618C9D1Ev,
  (VTBL_ENTRY)&_ZN8S19618C9D0Ev,
};
extern void ABISELECT(_ZTv0_n40_N8S19618C9D1Ev,_ZTv0_n20_N8S19618C9D1Ev)();
extern void ABISELECT(_ZThn128_N8S19618C9D1Ev,_ZThn64_N8S19618C9D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S19618C9D0Ev,_ZTv0_n20_N8S19618C9D0Ev)();
extern void ABISELECT(_ZThn128_N8S19618C9D0Ev,_ZThn64_N8S19618C9D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV9S19618C10__8S19618C9__8S19618C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S19618C9[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C9D1Ev,_ZTv0_n20_N8S19618C9D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S19618C9D0Ev,_ZTv0_n20_N8S19618C9D0Ev),
};
static  VTBL_ENTRY _tg__ZTV8S19618C4__A1__8S19618C1[] = {
  ABISELECT(96,48),
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C4[0]),
};
extern void _ZN8S19618C2D1Ev();
extern void _ZN8S19618C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19618C2__8S19618C1[] = {
  ABISELECT(31,19),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C2[0]),
  (VTBL_ENTRY)&_ZN8S19618C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19618C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV8S19618C48S19618C2__8S19618C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19618C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19618C4__8S19618C2__8S19618C1[] = {
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19618C2[0]),
};
extern void _ZN9S19618C10D1Ev();
extern void _ZN9S19618C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S19618C10__8S19618C1[] = {
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  0,
  (VTBL_ENTRY)&(_ZTI9S19618C10[0]),
  (VTBL_ENTRY)&_ZN9S19618C10D1Ev,
  (VTBL_ENTRY)&_ZN9S19618C10D0Ev,
};
extern void _ZN9S19618C112v1Ev();
static  VTBL_ENTRY _tg__ZTV9S19618C11__9S19618C10__8S19618C1[] = {
  0,
  ABISELECT(128,64),
  (VTBL_ENTRY)&(_ZTI9S19618C10[0]),
  (VTBL_ENTRY)&_ZN9S19618C112v1Ev,
};
static  VTT_ENTRY vtt_S19618C1[] = {
  {&(_ZTV8S19618C1[11]),  11,34},
  {&(_tg__ZTV8S19618C9__8S19618C1[6]),  6,9},
  {&(_tg__ZTV9S19618C10__8S19618C9__8S19618C1[5]),  5,7},
  {&(_tg__ZTV8S19618C9__8S19618C1[6]),  6,9},
  {&(_tg__ZTV8S19618C4__A1__8S19618C1[3]),  3,3},
  {&(_ZTV8S19618C1[22]),  22,34},
  {&(_ZTV8S19618C1[27]),  27,34},
  {&(_ZTV8S19618C1[32]),  32,34},
  {&(_ZTV8S19618C1[11]),  11,34},
  {&(_ZTV8S19618C1[17]),  17,34},
  {&(_tg__ZTV8S19618C2__8S19618C1[4]),  4,6},
  {&(_tg__ZTV8S19618C48S19618C2__8S19618C1[3]),  3,3},
  {&(_tg__ZTV8S19618C4__8S19618C2__8S19618C1[3]),  3,3},
  {&(_tg__ZTV9S19618C10__8S19618C1[4]),  4,6},
  {&(_tg__ZTV9S19618C11__9S19618C10__8S19618C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19618C1[];
extern  VTBL_ENTRY _ZTV8S19618C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19618C1[];
static VTBL_ENTRY alt_thunk_names145[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19618C9D0Ev,_ZTv0_n20_N8S19618C9D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19618C9D0Ev,_ZThn64_N8S19618C9D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19618C9D1Ev,_ZTv0_n20_N8S19618C9D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19618C9D1Ev,_ZThn64_N8S19618C9D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19618C1D0Ev,_ZTv0_n20_N8S19618C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19618C1D0Ev,_ZThn64_N8S19618C1D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19618C1D0Ev,_ZThn40_N8S19618C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S19618C1D1Ev,_ZTv0_n20_N8S19618C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S19618C1D1Ev,_ZThn64_N8S19618C1D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S19618C1D1Ev,_ZThn40_N8S19618C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19618C1 = {  "S19618C1", // class name
  bases_S19618C1, 14,
  &(vtc_S19618C1[0]), // expected_vtbl_contents
  &(vtt_S19618C1[0]), // expected_vtt_contents
  ABISELECT(176,84), // object size
  NSPAIRA(_ZTI8S19618C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19618C1),34, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19618C1),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names145,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21086C4  {
  virtual void  v5(); // _ZN8S21086C42v5Ev
  ~S21086C4(); // tgen
  S21086C4(); // tgen
};
//SIG(-1 S21086C4) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S21086C4C1Ev();
extern void _ZN8S21086C4D1Ev();
Name_Map name_map_S21086C4[] = {
  NSPAIR(_ZN8S21086C4C1Ev),
  NSPAIR(_ZN8S21086C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21086C4[];
extern void _ZN8S21086C42v5Ev();
static  VTBL_ENTRY vtc_S21086C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C4[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
};
extern VTBL_ENTRY _ZTI8S21086C4[];
extern  VTBL_ENTRY _ZTV8S21086C4[];
Class_Descriptor cd_S21086C4 = {  "S21086C4", // class name
  0,0,//no base classes
  &(vtc_S21086C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21086C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21086C4),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  S21086C5  : virtual S21086C4 {
  virtual void  v6(); // _ZN8S21086C52v6Ev
  ~S21086C5(); // tgen
  S21086C5(); // tgen
};
//SIG(-1 S21086C5) C1{ VBC2{ v2} v1}


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

static void Test_S21086C5()
{
  extern Class_Descriptor cd_S21086C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21086C5, buf);
    S21086C5 *dp, &lv = *(dp=new (buf) S21086C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21086C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21086C5)");
    check_base_class_offset(lv, (S21086C4*), 0, "S21086C5");
    test_class_info(&lv, &cd_S21086C5);
    dp->~S21086C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21086C5(Test_S21086C5, "S21086C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21086C5C1Ev();
extern void _ZN8S21086C5D1Ev();
Name_Map name_map_S21086C5[] = {
  NSPAIR(_ZN8S21086C5C1Ev),
  NSPAIR(_ZN8S21086C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21086C4;
extern VTBL_ENTRY _ZTI8S21086C4[];
extern  VTBL_ENTRY _ZTV8S21086C4[];
static Base_Class bases_S21086C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21086C4,    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 _ZTI8S21086C5[];
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
static  VTBL_ENTRY vtc_S21086C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C5[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
};
extern VTBL_ENTRY _ZTV8S21086C5[];
static  VTT_ENTRY vtt_S21086C5[] = {
  {&(_ZTV8S21086C5[4]),  4,6},
  {&(_ZTV8S21086C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21086C5[];
extern  VTBL_ENTRY _ZTV8S21086C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C5[];
Class_Descriptor cd_S21086C5 = {  "S21086C5", // class name
  bases_S21086C5, 1,
  &(vtc_S21086C5[0]), // expected_vtbl_contents
  &(vtt_S21086C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21086C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21086C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21086C5),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  S21086C3  : virtual S21086C4 , S21086C5 {
  int s21086c3f0;
  virtual  ~S21086C3(); // _ZN8S21086C3D2Ev
  virtual void  v7(); // _ZN8S21086C32v7Ev
  virtual void  v8(); // _ZN8S21086C32v8Ev
  S21086C3(); // tgen
};
//SIG(-1 S21086C3) C1{ VBC2{ v3} BC3{ VBC2 v4} vd v1 v2 Fi}


 S21086C3 ::~S21086C3(){ note_dtor("S21086C3", this);}
void  S21086C3 ::v7(){vfunc_called(this, "_ZN8S21086C32v7Ev");}
void  S21086C3 ::v8(){vfunc_called(this, "_ZN8S21086C32v8Ev");}
S21086C3 ::S21086C3(){ note_ctor("S21086C3", this);} // tgen

static void Test_S21086C3()
{
  extern Class_Descriptor cd_S21086C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21086C3, buf);
    S21086C3 *dp, &lv = *(dp=new (buf) S21086C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21086C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21086C3)");
    check_base_class_offset(lv, (S21086C4*), 0, "S21086C3");
    check_base_class_offset(lv, (S21086C4*)(S21086C5*), 0, "S21086C3");
    check_base_class_offset(lv, (S21086C5*), 0, "S21086C3");
    check_field_offset(lv, s21086c3f0, ABISELECT(8,4), "S21086C3.s21086c3f0");
    test_class_info(&lv, &cd_S21086C3);
    dp->~S21086C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21086C3(Test_S21086C3, "S21086C3", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21086C3C1Ev();
extern void _ZN8S21086C3D2Ev();
Name_Map name_map_S21086C3[] = {
  NSPAIR(_ZN8S21086C3C1Ev),
  NSPAIR(_ZN8S21086C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21086C4;
extern VTBL_ENTRY _ZTI8S21086C4[];
extern  VTBL_ENTRY _ZTV8S21086C4[];
extern Class_Descriptor cd_S21086C5;
extern VTBL_ENTRY _ZTI8S21086C5[];
extern  VTBL_ENTRY _ZTV8S21086C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C5[];
static Base_Class bases_S21086C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21086C4,    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
  1, 1},
  {&cd_S21086C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S21086C3[];
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
extern void _ZN8S21086C3D1Ev();
extern void _ZN8S21086C3D0Ev();
extern void _ZN8S21086C32v7Ev();
extern void _ZN8S21086C32v8Ev();
static  VTBL_ENTRY vtc_S21086C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C3[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
  (VTBL_ENTRY)&_ZN8S21086C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21086C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v8Ev,
};
extern VTBL_ENTRY _ZTV8S21086C3[];
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C5__8S21086C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C5[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
};
static  VTT_ENTRY vtt_S21086C3[] = {
  {&(_ZTV8S21086C3[4]),  4,10},
  {&(_tg__ZTV8S21086C5__8S21086C3[4]),  4,6},
  {&(_tg__ZTV8S21086C5__8S21086C3[4]),  4,6},
  {&(_ZTV8S21086C3[4]),  4,10},
};
extern VTBL_ENTRY _ZTI8S21086C3[];
extern  VTBL_ENTRY _ZTV8S21086C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C3[];
Class_Descriptor cd_S21086C3 = {  "S21086C3", // class name
  bases_S21086C3, 2,
  &(vtc_S21086C3[0]), // expected_vtbl_contents
  &(vtt_S21086C3[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21086C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21086C3),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21086C3),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  S21086C6  {
  char s21086c6f0;
  void *s21086c6f1;
  int s21086c6f2;
  __tsi64 s21086c6f3:8;
  virtual void  v9(); // _ZN8S21086C62v9Ev
  virtual void  v10(); // _ZN8S21086C63v10Ev
  virtual void  v11(); // _ZN8S21086C63v11Ev
  virtual void  v12(); // _ZN8S21086C63v12Ev
  ~S21086C6(); // tgen
  S21086C6(); // tgen
};
//SIG(-1 S21086C6) C1{ v1 v2 v3 v4 Fc Fp Fi FL:8}


void  S21086C6 ::v9(){vfunc_called(this, "_ZN8S21086C62v9Ev");}
void  S21086C6 ::v10(){vfunc_called(this, "_ZN8S21086C63v10Ev");}
void  S21086C6 ::v11(){vfunc_called(this, "_ZN8S21086C63v11Ev");}
void  S21086C6 ::v12(){vfunc_called(this, "_ZN8S21086C63v12Ev");}
S21086C6 ::~S21086C6(){ note_dtor("S21086C6", this);} // tgen
S21086C6 ::S21086C6(){ note_ctor("S21086C6", this);} // tgen

static void Test_S21086C6()
{
  extern Class_Descriptor cd_S21086C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S21086C6, buf);
    S21086C6 *dp, &lv = *(dp=new (buf) S21086C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S21086C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21086C6)");
    check_field_offset(lv, s21086c6f0, ABISELECT(8,4), "S21086C6.s21086c6f0");
    check_field_offset(lv, s21086c6f1, ABISELECT(16,8), "S21086C6.s21086c6f1");
    check_field_offset(lv, s21086c6f2, ABISELECT(24,12), "S21086C6.s21086c6f2");
    set_bf_and_test(lv, s21086c6f3, ABISELECT(28,16), 0, 8, 1, "S21086C6");
    set_bf_and_test(lv, s21086c6f3, ABISELECT(28,16), 0, 8, hide_sll(1LL<<7), "S21086C6");
    test_class_info(&lv, &cd_S21086C6);
    dp->~S21086C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21086C6(Test_S21086C6, "S21086C6", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S21086C6C1Ev();
extern void _ZN8S21086C6D1Ev();
Name_Map name_map_S21086C6[] = {
  NSPAIR(_ZN8S21086C6C1Ev),
  NSPAIR(_ZN8S21086C6D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21086C6[];
extern void _ZN8S21086C62v9Ev();
extern void _ZN8S21086C63v10Ev();
extern void _ZN8S21086C63v11Ev();
extern void _ZN8S21086C63v12Ev();
static  VTBL_ENTRY vtc_S21086C6[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C6[0]),
  (VTBL_ENTRY)&_ZN8S21086C62v9Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v10Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v12Ev,
};
extern VTBL_ENTRY _ZTI8S21086C6[];
extern  VTBL_ENTRY _ZTV8S21086C6[];
Class_Descriptor cd_S21086C6 = {  "S21086C6", // class name
  0,0,//no base classes
  &(vtc_S21086C6[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S21086C6),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21086C6),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  S21086C2  : virtual S21086C3 , S21086C6 {
  char s21086c2f0;
  virtual void  v13(); // _ZN8S21086C23v13Ev
  virtual void  v14(); // _ZN8S21086C23v14Ev
  virtual void  v15(); // _ZN8S21086C23v15Ev
  virtual void  v16(); // _ZN8S21086C23v16Ev
  virtual void  v17(); // _ZN8S21086C23v17Ev
  ~S21086C2(); // tgen
  S21086C2(); // tgen
};
//SIG(-1 S21086C2) C1{ VBC2{ VBC3{ v6} BC4{ VBC3 v7} vd v8 v9 Fi} BC5{ v10 v11 v12 v13 Fc Fp Fi FL:8} v1 v2 v3 v4 v5 Fc}


void  S21086C2 ::v13(){vfunc_called(this, "_ZN8S21086C23v13Ev");}
void  S21086C2 ::v14(){vfunc_called(this, "_ZN8S21086C23v14Ev");}
void  S21086C2 ::v15(){vfunc_called(this, "_ZN8S21086C23v15Ev");}
void  S21086C2 ::v16(){vfunc_called(this, "_ZN8S21086C23v16Ev");}
void  S21086C2 ::v17(){vfunc_called(this, "_ZN8S21086C23v17Ev");}
S21086C2 ::~S21086C2(){ note_dtor("S21086C2", this);} // tgen
S21086C2 ::S21086C2(){ note_ctor("S21086C2", this);} // tgen

static void Test_S21086C2()
{
  extern Class_Descriptor cd_S21086C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S21086C2, buf);
    S21086C2 *dp, &lv = *(dp=new (buf) S21086C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S21086C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21086C2)");
    check_base_class_offset(lv, (S21086C4*)(S21086C3*), ABISELECT(32,20), "S21086C2");
    check_base_class_offset(lv, (S21086C4*)(S21086C5*)(S21086C3*), ABISELECT(32,20), "S21086C2");
    check_base_class_offset(lv, (S21086C5*)(S21086C3*), ABISELECT(32,20), "S21086C2");
    check_base_class_offset(lv, (S21086C3*), ABISELECT(32,20), "S21086C2");
    check_base_class_offset(lv, (S21086C6*), 0, "S21086C2");
    check_field_offset(lv, s21086c2f0, ABISELECT(29,17), "S21086C2.s21086c2f0");
    test_class_info(&lv, &cd_S21086C2);
    dp->~S21086C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21086C2(Test_S21086C2, "S21086C2", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S21086C2C1Ev();
extern void _ZN8S21086C2D1Ev();
Name_Map name_map_S21086C2[] = {
  NSPAIR(_ZN8S21086C2C1Ev),
  NSPAIR(_ZN8S21086C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21086C4;
extern VTBL_ENTRY _ZTI8S21086C4[];
extern  VTBL_ENTRY _ZTV8S21086C4[];
extern Class_Descriptor cd_S21086C5;
extern VTBL_ENTRY _ZTI8S21086C5[];
extern  VTBL_ENTRY _ZTV8S21086C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C5[];
extern Class_Descriptor cd_S21086C3;
extern VTBL_ENTRY _ZTI8S21086C3[];
extern  VTBL_ENTRY _ZTV8S21086C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C3[];
extern Class_Descriptor cd_S21086C6;
extern VTBL_ENTRY _ZTI8S21086C6[];
extern  VTBL_ENTRY _ZTV8S21086C6[];
static Base_Class bases_S21086C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21086C4,    ABISELECT(32,20), //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_S21086C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21086C3,    ABISELECT(32,20), //bcp->offset
    15, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21086C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S21086C2[];
extern void _ZN8S21086C62v9Ev();
extern void _ZN8S21086C63v10Ev();
extern void _ZN8S21086C63v11Ev();
extern void _ZN8S21086C63v12Ev();
extern void _ZN8S21086C23v13Ev();
extern void _ZN8S21086C23v14Ev();
extern void _ZN8S21086C23v15Ev();
extern void _ZN8S21086C23v16Ev();
extern void _ZN8S21086C23v17Ev();
extern void _ZN8S21086C2D1Ev();
extern void _ZN8S21086C2D0Ev();
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
extern void ABISELECT(_ZTv0_n48_N8S21086C2D1Ev,_ZTv0_n24_N8S21086C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21086C2D1Ev,_ZThn20_N8S21086C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21086C2D0Ev,_ZTv0_n24_N8S21086C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21086C2D0Ev,_ZThn20_N8S21086C2D0Ev)() __attribute__((weak));
extern void _ZN8S21086C32v7Ev();
extern void _ZN8S21086C32v8Ev();
static  VTBL_ENTRY vtc_S21086C2[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C2[0]),
  (VTBL_ENTRY)&_ZN8S21086C62v9Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v10Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v13Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v14Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v15Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v16Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v17Ev,
  (VTBL_ENTRY)&_ZN8S21086C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21086C2D0Ev,
  0,
  0,
  ABISELECT(-32,-20),
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21086C2[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21086C2D1Ev,_ZTv0_n24_N8S21086C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21086C2D0Ev,_ZTv0_n24_N8S21086C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21086C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v8Ev,
};
extern VTBL_ENTRY _ZTV8S21086C2[];
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
extern void _ZN8S21086C3D1Ev();
extern void _ZN8S21086C3D0Ev();
extern void _ZN8S21086C32v7Ev();
extern void _ZN8S21086C32v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C3__8S21086C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C3[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
  (VTBL_ENTRY)&_ZN8S21086C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21086C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v8Ev,
};
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C58S21086C3__8S21086C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C5[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
};
static  VTT_ENTRY vtt_S21086C2[] = {
  {&(_ZTV8S21086C2[4]),  4,29},
  {&(_ZTV8S21086C2[23]),  23,29},
  {&(_ZTV8S21086C2[23]),  23,29},
  {&(_tg__ZTV8S21086C3__8S21086C2[4]),  4,10},
  {&(_tg__ZTV8S21086C58S21086C3__8S21086C2[4]),  4,6},
  {&(_tg__ZTV8S21086C58S21086C3__8S21086C2[4]),  4,6},
  {&(_tg__ZTV8S21086C3__8S21086C2[4]),  4,10},
};
extern VTBL_ENTRY _ZTI8S21086C2[];
extern  VTBL_ENTRY _ZTV8S21086C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C2[];
static VTBL_ENTRY alt_thunk_names146[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21086C2D0Ev,_ZTv0_n24_N8S21086C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21086C2D0Ev,_ZThn20_N8S21086C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21086C2D1Ev,_ZTv0_n24_N8S21086C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21086C2D1Ev,_ZThn20_N8S21086C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21086C2 = {  "S21086C2", // class name
  bases_S21086C2, 4,
  &(vtc_S21086C2[0]), // expected_vtbl_contents
  &(vtt_S21086C2[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S21086C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21086C2),29, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21086C2),7, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names146,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21086C7_nt  {
  int s21086c7f0;
  virtual void  v18(); // _ZN11S21086C7_nt3v18Ev
  virtual void  v19(); // _ZN11S21086C7_nt3v19Ev
  virtual void  v20(); // _ZN11S21086C7_nt3v20Ev
  ~S21086C7_nt(); // tgen
  S21086C7_nt(); // tgen
};
//SIG(-1 S21086C7_nt) C1{ v1 v2 v3 Fi}


void  S21086C7_nt ::v18(){vfunc_called(this, "_ZN11S21086C7_nt3v18Ev");}
void  S21086C7_nt ::v19(){vfunc_called(this, "_ZN11S21086C7_nt3v19Ev");}
void  S21086C7_nt ::v20(){vfunc_called(this, "_ZN11S21086C7_nt3v20Ev");}
S21086C7_nt ::~S21086C7_nt(){ note_dtor("S21086C7_nt", this);} // tgen
S21086C7_nt ::S21086C7_nt(){ note_ctor("S21086C7_nt", this);} // tgen

//skip512 S21086C7_nt

#else // __cplusplus

extern void _ZN11S21086C7_ntC1Ev();
extern void _ZN11S21086C7_ntD1Ev();
Name_Map name_map_S21086C7_nt[] = {
  NSPAIR(_ZN11S21086C7_ntC1Ev),
  NSPAIR(_ZN11S21086C7_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S21086C7_nt[];
extern void _ZN11S21086C7_nt3v18Ev();
extern void _ZN11S21086C7_nt3v19Ev();
extern void _ZN11S21086C7_nt3v20Ev();
static  VTBL_ENTRY vtc_S21086C7_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S21086C7_nt[0]),
  (VTBL_ENTRY)&_ZN11S21086C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S21086C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN11S21086C7_nt3v20Ev,
};
extern VTBL_ENTRY _ZTI11S21086C7_nt[];
VTBL_ENTRY *P__ZTI11S21086C7_nt = _ZTI11S21086C7_nt; 
extern  VTBL_ENTRY _ZTV11S21086C7_nt[];
Class_Descriptor cd_S21086C7_nt = {  "S21086C7_nt", // class name
  0,0,//no base classes
  &(vtc_S21086C7_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI11S21086C7_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S21086C7_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  S21086C1  : virtual S21086C2 , S21086C7_nt {
  int s21086c1f0;
  virtual  ~S21086C1(); // _ZN8S21086C1D2Ev
  virtual void  v1(); // _ZN8S21086C12v1Ev
  virtual void  v2(); // _ZN8S21086C12v2Ev
  virtual void  v3(); // _ZN8S21086C12v3Ev
  virtual void  v4(); // _ZN8S21086C12v4Ev
  S21086C1(); // tgen
};
//SIG(1 S21086C1) C1{ VBC2{ VBC3{ VBC4{ v5} BC5{ VBC4 v6} vd v7 v8 Fi} BC6{ v9 v10 v11 v12 Fc Fp Fi FL:8} v13 v14 v15 v16 v17 Fc} BC7{ v18 v19 v20 Fi} vd v1 v2 v3 v4 Fi}


 S21086C1 ::~S21086C1(){ note_dtor("S21086C1", this);}
void  S21086C1 ::v1(){vfunc_called(this, "_ZN8S21086C12v1Ev");}
void  S21086C1 ::v2(){vfunc_called(this, "_ZN8S21086C12v2Ev");}
void  S21086C1 ::v3(){vfunc_called(this, "_ZN8S21086C12v3Ev");}
void  S21086C1 ::v4(){vfunc_called(this, "_ZN8S21086C12v4Ev");}
S21086C1 ::S21086C1(){ note_ctor("S21086C1", this);} // tgen

static void Test_S21086C1()
{
  extern Class_Descriptor cd_S21086C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(9,11)];
    init_test(&cd_S21086C1, buf);
    S21086C1 *dp, &lv = *(dp=new (buf) S21086C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S21086C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21086C1)");
    check_base_class_offset(lv, (S21086C4*)(S21086C3*), ABISELECT(48,32), "S21086C1");
    check_base_class_offset(lv, (S21086C4*)(S21086C5*)(S21086C3*), ABISELECT(48,32), "S21086C1");
    check_base_class_offset(lv, (S21086C5*)(S21086C3*), ABISELECT(48,32), "S21086C1");
    check_base_class_offset(lv, (S21086C3*)(S21086C2*), ABISELECT(48,32), "S21086C1");
    check_base_class_offset(lv, (S21086C6*)(S21086C2*), ABISELECT(16,12), "S21086C1");
    check_base_class_offset(lv, (S21086C2*), ABISELECT(16,12), "S21086C1");
    check_base_class_offset(lv, (S21086C7_nt*), 0, "S21086C1");
    check_field_offset(lv, s21086c1f0, ABISELECT(12,8), "S21086C1.s21086c1f0");
    test_class_info(&lv, &cd_S21086C1);
    dp->~S21086C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21086C1(Test_S21086C1, "S21086C1", ABISELECT(64,40));

#else // __cplusplus

extern void _ZN8S21086C1C1Ev();
extern void _ZN8S21086C1D2Ev();
Name_Map name_map_S21086C1[] = {
  NSPAIR(_ZN8S21086C1C1Ev),
  NSPAIR(_ZN8S21086C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S21086C4;
extern VTBL_ENTRY _ZTI8S21086C4[];
extern  VTBL_ENTRY _ZTV8S21086C4[];
extern Class_Descriptor cd_S21086C5;
extern VTBL_ENTRY _ZTI8S21086C5[];
extern  VTBL_ENTRY _ZTV8S21086C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C5[];
extern Class_Descriptor cd_S21086C3;
extern VTBL_ENTRY _ZTI8S21086C3[];
extern  VTBL_ENTRY _ZTV8S21086C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C3[];
extern Class_Descriptor cd_S21086C6;
extern VTBL_ENTRY _ZTI8S21086C6[];
extern  VTBL_ENTRY _ZTV8S21086C6[];
extern Class_Descriptor cd_S21086C2;
extern VTBL_ENTRY _ZTI8S21086C2[];
extern  VTBL_ENTRY _ZTV8S21086C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C2[];
extern Class_Descriptor cd_S21086C7_nt;
extern VTBL_ENTRY _ZTI11S21086C7_nt[];
extern  VTBL_ENTRY _ZTV11S21086C7_nt[];
static Base_Class bases_S21086C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21086C4,    ABISELECT(48,32), //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_S21086C5,    ABISELECT(48,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    9, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S21086C3,    ABISELECT(48,32), //bcp->offset
    39, //bcp->virtual_function_table_offset
    8, //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
    4, //immediately_derived
  0, 1},
  {&cd_S21086C6,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S21086C2,    ABISELECT(16,12), //bcp->offset
    14, //bcp->virtual_function_table_offset
    14, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21086C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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 _ZTI8S21086C1[];
extern void _ZN11S21086C7_nt3v18Ev();
extern void _ZN11S21086C7_nt3v19Ev();
extern void _ZN11S21086C7_nt3v20Ev();
extern void _ZN8S21086C1D1Ev();
extern void _ZN8S21086C1D0Ev();
extern void _ZN8S21086C12v1Ev();
extern void _ZN8S21086C12v2Ev();
extern void _ZN8S21086C12v3Ev();
extern void _ZN8S21086C12v4Ev();
extern void _ZN8S21086C62v9Ev();
extern void _ZN8S21086C63v10Ev();
extern void _ZN8S21086C63v11Ev();
extern void _ZN8S21086C63v12Ev();
extern void _ZN8S21086C23v13Ev();
extern void _ZN8S21086C23v14Ev();
extern void _ZN8S21086C23v15Ev();
extern void _ZN8S21086C23v16Ev();
extern void _ZN8S21086C23v17Ev();
extern void ABISELECT(_ZTv0_n112_N8S21086C1D1Ev,_ZTv0_n56_N8S21086C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S21086C1D1Ev,_ZThn12_N8S21086C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n112_N8S21086C1D0Ev,_ZTv0_n56_N8S21086C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S21086C1D0Ev,_ZThn12_N8S21086C1D0Ev)() __attribute__((weak));
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
extern void ABISELECT(_ZTv0_n48_N8S21086C1D1Ev,_ZTv0_n24_N8S21086C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S21086C1D1Ev,_ZThn32_N8S21086C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21086C1D0Ev,_ZTv0_n24_N8S21086C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S21086C1D0Ev,_ZThn32_N8S21086C1D0Ev)() __attribute__((weak));
extern void _ZN8S21086C32v7Ev();
extern void _ZN8S21086C32v8Ev();
static  VTBL_ENTRY vtc_S21086C1[] = {
  ABISELECT(48,32),
  ABISELECT(48,32),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C1[0]),
  (VTBL_ENTRY)&_ZN11S21086C7_nt3v18Ev,
  (VTBL_ENTRY)&_ZN11S21086C7_nt3v19Ev,
  (VTBL_ENTRY)&_ZN11S21086C7_nt3v20Ev,
  (VTBL_ENTRY)&_ZN8S21086C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21086C1D0Ev,
  (VTBL_ENTRY)&_ZN8S21086C12v1Ev,
  (VTBL_ENTRY)&_ZN8S21086C12v2Ev,
  (VTBL_ENTRY)&_ZN8S21086C12v3Ev,
  (VTBL_ENTRY)&_ZN8S21086C12v4Ev,
  ABISELECT(-16,-12),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(32,20),
  ABISELECT(32,20),
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S21086C1[0]),
  (VTBL_ENTRY)&_ZN8S21086C62v9Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v10Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v13Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v14Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v15Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v16Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v17Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21086C1D1Ev,_ZTv0_n56_N8S21086C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n112_N8S21086C1D0Ev,_ZTv0_n56_N8S21086C1D0Ev),
  0,
  0,
  ABISELECT(-48,-32),
  0,
  0,
  0,
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S21086C1[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21086C1D1Ev,_ZTv0_n24_N8S21086C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21086C1D0Ev,_ZTv0_n24_N8S21086C1D0Ev),
  (VTBL_ENTRY)&_ZN8S21086C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v8Ev,
};
extern VTBL_ENTRY _ZTV8S21086C1[];
extern void _ZN8S21086C62v9Ev();
extern void _ZN8S21086C63v10Ev();
extern void _ZN8S21086C63v11Ev();
extern void _ZN8S21086C63v12Ev();
extern void _ZN8S21086C23v13Ev();
extern void _ZN8S21086C23v14Ev();
extern void _ZN8S21086C23v15Ev();
extern void _ZN8S21086C23v16Ev();
extern void _ZN8S21086C23v17Ev();
extern void _ZN8S21086C2D1Ev();
extern void _ZN8S21086C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C2__8S21086C1[] = {
  ABISELECT(32,20),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C2[0]),
  (VTBL_ENTRY)&_ZN8S21086C62v9Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v10Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v11Ev,
  (VTBL_ENTRY)&_ZN8S21086C63v12Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v13Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v14Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v15Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v16Ev,
  (VTBL_ENTRY)&_ZN8S21086C23v17Ev,
  (VTBL_ENTRY)&_ZN8S21086C2D1Ev,
  (VTBL_ENTRY)&_ZN8S21086C2D0Ev,
};
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
extern void ABISELECT(_ZTv0_n48_N8S21086C2D1Ev,_ZTv0_n24_N8S21086C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S21086C2D1Ev,_ZThn20_N8S21086C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n48_N8S21086C2D0Ev,_ZTv0_n24_N8S21086C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S21086C2D0Ev,_ZThn20_N8S21086C2D0Ev)() __attribute__((weak));
extern void _ZN8S21086C32v7Ev();
extern void _ZN8S21086C32v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C3__8S21086C2__8S21086C1[] = {
  0,
  0,
  ABISELECT(-32,-20),
  0,
  0,
  0,
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S21086C2[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21086C2D1Ev,_ZTv0_n24_N8S21086C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n48_N8S21086C2D0Ev,_ZTv0_n24_N8S21086C2D0Ev),
  (VTBL_ENTRY)&_ZN8S21086C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v8Ev,
};
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
extern void _ZN8S21086C3D1Ev();
extern void _ZN8S21086C3D0Ev();
extern void _ZN8S21086C32v7Ev();
extern void _ZN8S21086C32v8Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C3__8S21086C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C3[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
  (VTBL_ENTRY)&_ZN8S21086C3D1Ev,
  (VTBL_ENTRY)&_ZN8S21086C3D0Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v7Ev,
  (VTBL_ENTRY)&_ZN8S21086C32v8Ev,
};
extern void _ZN8S21086C42v5Ev();
extern void _ZN8S21086C52v6Ev();
static  VTBL_ENTRY _tg__ZTV8S21086C58S21086C3__8S21086C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21086C5[0]),
  (VTBL_ENTRY)&_ZN8S21086C42v5Ev,
  (VTBL_ENTRY)&_ZN8S21086C52v6Ev,
};
static  VTT_ENTRY vtt_S21086C1[] = {
  {&(_ZTV8S21086C1[5]),  5,53},
  {&(_ZTV8S21086C1[28]),  28,53},
  {&(_ZTV8S21086C1[47]),  47,53},
  {&(_ZTV8S21086C1[47]),  47,53},
  {&(_tg__ZTV8S21086C2__8S21086C1[4]),  4,15},
  {&(_tg__ZTV8S21086C3__8S21086C2__8S21086C1[8]),  8,14},
  {&(_tg__ZTV8S21086C3__8S21086C2__8S21086C1[8]),  8,14},
  {&(_tg__ZTV8S21086C3__8S21086C1[4]),  4,10},
  {&(_tg__ZTV8S21086C58S21086C3__8S21086C1[4]),  4,6},
  {&(_tg__ZTV8S21086C58S21086C3__8S21086C1[4]),  4,6},
  {&(_tg__ZTV8S21086C3__8S21086C1[4]),  4,10},
};
extern VTBL_ENTRY _ZTI8S21086C1[];
extern  VTBL_ENTRY _ZTV8S21086C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21086C1[];
static VTBL_ENTRY alt_thunk_names147[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21086C2D0Ev,_ZTv0_n24_N8S21086C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21086C2D0Ev,_ZThn20_N8S21086C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21086C2D1Ev,_ZTv0_n24_N8S21086C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S21086C2D1Ev,_ZThn20_N8S21086C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21086C1D0Ev,_ZTv0_n24_N8S21086C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21086C1D0Ev,_ZThn32_N8S21086C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n48_N8S21086C1D1Ev,_ZTv0_n24_N8S21086C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S21086C1D1Ev,_ZThn32_N8S21086C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21086C1D0Ev,_ZTv0_n56_N8S21086C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21086C1D0Ev,_ZThn12_N8S21086C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n112_N8S21086C1D1Ev,_ZTv0_n56_N8S21086C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S21086C1D1Ev,_ZThn12_N8S21086C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S21086C1 = {  "S21086C1", // class name
  bases_S21086C1, 6,
  &(vtc_S21086C1[0]), // expected_vtbl_contents
  &(vtt_S21086C1[0]), // expected_vtt_contents
  ABISELECT(64,40), // object size
  NSPAIRA(_ZTI8S21086C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21086C1),53, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21086C1),11, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names147,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5081C3  {
  ::S9624C14_nt s5081c3f0;
  int s5081c3f1[2];
  char s5081c3f2;
  virtual  ~S5081C3(); // _ZN7S5081C3D1Ev
  virtual void  v4(); // _ZN7S5081C32v4Ev
  virtual void  v5(); // _ZN7S5081C32v5Ev
  virtual void  v6(); // _ZN7S5081C32v6Ev
  S5081C3(); // tgen
};
//SIG(-1 S5081C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S5081C3 ::~S5081C3(){ note_dtor("S5081C3", this);}
void  S5081C3 ::v4(){vfunc_called(this, "_ZN7S5081C32v4Ev");}
void  S5081C3 ::v5(){vfunc_called(this, "_ZN7S5081C32v5Ev");}
void  S5081C3 ::v6(){vfunc_called(this, "_ZN7S5081C32v6Ev");}
S5081C3 ::S5081C3(){ note_ctor("S5081C3", this);} // tgen

static void Test_S5081C3()
{
  extern Class_Descriptor cd_S5081C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S5081C3, buf);
    S5081C3 *dp, &lv = *(dp=new (buf) S5081C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S5081C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5081C3)");
    check_field_offset(lv, s5081c3f0, ABISELECT(8,4), "S5081C3.s5081c3f0");
    check_field_offset(lv, s5081c3f1, ABISELECT(24,16), "S5081C3.s5081c3f1");
    check_field_offset(lv, s5081c3f2, ABISELECT(32,24), "S5081C3.s5081c3f2");
    test_class_info(&lv, &cd_S5081C3);
    dp->~S5081C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5081C3(Test_S5081C3, "S5081C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S5081C3C1Ev();
extern void _ZN7S5081C3D1Ev();
Name_Map name_map_S5081C3[] = {
  NSPAIR(_ZN7S5081C3C1Ev),
  NSPAIR(_ZN7S5081C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5081C3[];
extern void _ZN7S5081C3D1Ev();
extern void _ZN7S5081C3D0Ev();
extern void _ZN7S5081C32v4Ev();
extern void _ZN7S5081C32v5Ev();
extern void _ZN7S5081C32v6Ev();
static  VTBL_ENTRY vtc_S5081C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5081C3[0]),
  (VTBL_ENTRY)&_ZN7S5081C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5081C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v6Ev,
};
extern VTBL_ENTRY _ZTI7S5081C3[];
extern  VTBL_ENTRY _ZTV7S5081C3[];
Class_Descriptor cd_S5081C3 = {  "S5081C3", // class name
  0,0,//no base classes
  &(vtc_S5081C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S5081C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5081C3),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  S5081C2_nt  : S5081C3 {
  void *s5081c2f0;
  virtual void  v7(); // _ZN10S5081C2_nt2v7Ev
  virtual void  v8(); // _ZN10S5081C2_nt2v8Ev
  ~S5081C2_nt(); // tgen
  S5081C2_nt(); // tgen
};
//SIG(-1 S5081C2_nt) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S5081C2_nt ::v7(){vfunc_called(this, "_ZN10S5081C2_nt2v7Ev");}
void  S5081C2_nt ::v8(){vfunc_called(this, "_ZN10S5081C2_nt2v8Ev");}
S5081C2_nt ::~S5081C2_nt(){ note_dtor("S5081C2_nt", this);} // tgen
S5081C2_nt ::S5081C2_nt(){ note_ctor("S5081C2_nt", this);} // tgen

//skip512 S5081C2_nt

#else // __cplusplus

extern void _ZN10S5081C2_ntC1Ev();
extern void _ZN10S5081C2_ntD1Ev();
Name_Map name_map_S5081C2_nt[] = {
  NSPAIR(_ZN10S5081C2_ntC1Ev),
  NSPAIR(_ZN10S5081C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5081C3;
extern VTBL_ENTRY _ZTI7S5081C3[];
extern  VTBL_ENTRY _ZTV7S5081C3[];
static Base_Class bases_S5081C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5081C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S5081C2_nt[];
extern void _ZN10S5081C2_ntD1Ev();
extern void _ZN10S5081C2_ntD0Ev();
extern void _ZN7S5081C32v4Ev();
extern void _ZN7S5081C32v5Ev();
extern void _ZN7S5081C32v6Ev();
extern void _ZN10S5081C2_nt2v7Ev();
extern void _ZN10S5081C2_nt2v8Ev();
static  VTBL_ENTRY vtc_S5081C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S5081C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S5081C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S5081C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v6Ev,
  (VTBL_ENTRY)&_ZN10S5081C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5081C2_nt2v8Ev,
};
extern VTBL_ENTRY _ZTI10S5081C2_nt[];
VTBL_ENTRY *P__ZTI10S5081C2_nt = _ZTI10S5081C2_nt; 
extern  VTBL_ENTRY _ZTV10S5081C2_nt[];
Class_Descriptor cd_S5081C2_nt = {  "S5081C2_nt", // class name
  bases_S5081C2_nt, 1,
  &(vtc_S5081C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI10S5081C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S5081C2_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  S5081C10_nt  {
  char s5081c10f0[20];
};
//SIG(-1 S5081C10_nt) C1{ Fc[20]}



//skip512 S5081C10_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5081C9_nt  {
  ::S5081C10_nt s5081c9f0;
  char s5081c9f1[16];
};
//SIG(-1 S5081C9_nt) C1{ FC2{ Fc[20]} Fc[16]}



//skip512 S5081C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S5081C1  : S5081C2_nt {
  ::S9856C33_nt s5081c1f0;
  int s5081c1f1[2];
  void *s5081c1f2;
  ::S10296C5_nt s5081c1f3;
  void *s5081c1f4;
  ::S5081C9_nt s5081c1f5;
  virtual  ~S5081C1(); // _ZN7S5081C1D1Ev
  virtual void  v1(); // _ZN7S5081C12v1Ev
  virtual void  v2(); // _ZN7S5081C12v2Ev
  virtual void  v3(); // _ZN7S5081C12v3Ev
  S5081C1(); // tgen
};
//SIG(1 S5081C1) C1{ BC2{ BC3{ vd v4 v5 v6 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v7 v8 Fp} vd v1 v2 v3 FC6{ m FC7{ Fl[4]}} Fi[2] Fp FC8{ m Fp} Fp FC9{ FC10{ Fc[20]} Fc[16]}}


 S5081C1 ::~S5081C1(){ note_dtor("S5081C1", this);}
void  S5081C1 ::v1(){vfunc_called(this, "_ZN7S5081C12v1Ev");}
void  S5081C1 ::v2(){vfunc_called(this, "_ZN7S5081C12v2Ev");}
void  S5081C1 ::v3(){vfunc_called(this, "_ZN7S5081C12v3Ev");}
S5081C1 ::S5081C1(){ note_ctor("S5081C1", this);} // tgen

static void Test_S5081C1()
{
  extern Class_Descriptor cd_S5081C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,27)];
    init_test(&cd_S5081C1, buf);
    S5081C1 *dp, &lv = *(dp=new (buf) S5081C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,104), "sizeof(S5081C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5081C1)");
    check_base_class_offset(lv, (S5081C3*)(S5081C2_nt*), 0, "S5081C1");
    check_base_class_offset(lv, (S5081C2_nt*), 0, "S5081C1");
    check_field_offset(lv, s5081c1f0, ABISELECT(48,32), "S5081C1.s5081c1f0");
    check_field_offset(lv, s5081c1f1, ABISELECT(80,48), "S5081C1.s5081c1f1");
    check_field_offset(lv, s5081c1f2, ABISELECT(88,56), "S5081C1.s5081c1f2");
    check_field_offset(lv, s5081c1f3, ABISELECT(96,60), "S5081C1.s5081c1f3");
    check_field_offset(lv, s5081c1f4, ABISELECT(104,64), "S5081C1.s5081c1f4");
    check_field_offset(lv, s5081c1f5, ABISELECT(112,68), "S5081C1.s5081c1f5");
    test_class_info(&lv, &cd_S5081C1);
    dp->~S5081C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5081C1(Test_S5081C1, "S5081C1", ABISELECT(152,104));

#else // __cplusplus

extern void _ZN7S5081C1C1Ev();
extern void _ZN7S5081C1D1Ev();
Name_Map name_map_S5081C1[] = {
  NSPAIR(_ZN7S5081C1C1Ev),
  NSPAIR(_ZN7S5081C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5081C3;
extern VTBL_ENTRY _ZTI7S5081C3[];
extern  VTBL_ENTRY _ZTV7S5081C3[];
extern Class_Descriptor cd_S5081C2_nt;
extern VTBL_ENTRY _ZTI10S5081C2_nt[];
extern  VTBL_ENTRY _ZTV10S5081C2_nt[];
static Base_Class bases_S5081C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5081C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5081C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S5081C1[];
extern void _ZN7S5081C1D1Ev();
extern void _ZN7S5081C1D0Ev();
extern void _ZN7S5081C32v4Ev();
extern void _ZN7S5081C32v5Ev();
extern void _ZN7S5081C32v6Ev();
extern void _ZN10S5081C2_nt2v7Ev();
extern void _ZN10S5081C2_nt2v8Ev();
extern void _ZN7S5081C12v1Ev();
extern void _ZN7S5081C12v2Ev();
extern void _ZN7S5081C12v3Ev();
static  VTBL_ENTRY vtc_S5081C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5081C1[0]),
  (VTBL_ENTRY)&_ZN7S5081C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5081C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5081C32v6Ev,
  (VTBL_ENTRY)&_ZN10S5081C2_nt2v7Ev,
  (VTBL_ENTRY)&_ZN10S5081C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN7S5081C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5081C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5081C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5081C1[];
extern  VTBL_ENTRY _ZTV7S5081C1[];
Class_Descriptor cd_S5081C1 = {  "S5081C1", // class name
  bases_S5081C1, 2,
  &(vtc_S5081C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,104), // object size
  NSPAIRA(_ZTI7S5081C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5081C1),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  S21708C2_nt  {
  short s21708c2f0[4];
  char s21708c2f1[124];
};
//SIG(-1 S21708C2_nt) C1{ Fs[4] Fc[124]}



//skip512 S21708C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21708C3_nt  {
  int s21708c3f0;
  char s21708c3f1[108];
};
//SIG(-1 S21708C3_nt) C1{ Fi Fc[108]}



//skip512 S21708C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21708C5_nt  {
  int s21708c5f0;
};
//SIG(-1 S21708C5_nt) C1{ Fi}



//skip512 S21708C5_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI11S21708C5_nt[];
VTBL_ENTRY *P__ZTI11S21708C5_nt = _ZTI11S21708C5_nt; 
Class_Descriptor cd_S21708C5_nt = {  "S21708C5_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI11S21708C5_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  S21708C4_nt  {
  ::S21708C5_nt s21708c4f0;
  char s21708c4f1[140];
};
//SIG(-1 S21708C4_nt) C1{ FC2{ Fi} Fc[140]}



//skip512 S21708C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21708C6_nt  {
  char s21708c6f0[12];
};
//SIG(-1 S21708C6_nt) C1{ Fc[12]}



//skip512 S21708C6_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21708C7_nt  {
  char s21708c7f0[8];
};
//SIG(-1 S21708C7_nt) C1{ Fc[8]}



//skip512 S21708C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S21708C1  {
  void *s21708c1f0;
  char s21708c1f1[8];
  int s21708c1f2;
  ::S21708C2_nt s21708c1f3;
  ::S21708C3_nt s21708c1f4;
  ::S21708C4_nt s21708c1f5;
  ::S21708C6_nt s21708c1f6;
  void *s21708c1f7[3];
  int s21708c1f8[2];
  ::S21708C7_nt s21708c1f9;
  int s21708c1f10;
  char s21708c1f11;
  int s21708c1f12;
  void *s21708c1f13;
  char s21708c1f14;
  int s21708c1f15;
  char s21708c1f16;
  void *s21708c1f17[2];
  void  mf21708c1(); // _ZN8S21708C19mf21708c1Ev
  virtual  ~S21708C1(); // _ZN8S21708C1D1Ev
  S21708C1(); // tgen
};
//SIG(1 S21708C1) C1{ vd m Fp Fc[8] Fi FC2{ Fs[4] Fc[124]} FC3{ Fi Fc[108]} FC4{ FC5{ Fi} Fc[140]} FC6{ Fc[12]} Fp[3] Fi[2] FC7{ Fc[8]} Fi Fc Fi Fp Fc Fi Fc Fp[2]}


void  S21708C1 ::mf21708c1(){}
 S21708C1 ::~S21708C1(){ note_dtor("S21708C1", this);}
S21708C1 ::S21708C1(){ note_ctor("S21708C1", this);} // tgen

static void Test_S21708C1()
{
  extern Class_Descriptor cd_S21708C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(67,122)];
    init_test(&cd_S21708C1, buf);
    S21708C1 *dp, &lv = *(dp=new (buf) S21708C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(528,484), "sizeof(S21708C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21708C1)");
    check_field_offset(lv, s21708c1f0, ABISELECT(8,4), "S21708C1.s21708c1f0");
    check_field_offset(lv, s21708c1f1, ABISELECT(16,8), "S21708C1.s21708c1f1");
    check_field_offset(lv, s21708c1f2, ABISELECT(24,16), "S21708C1.s21708c1f2");
    check_field_offset(lv, s21708c1f3, ABISELECT(28,20), "S21708C1.s21708c1f3");
    check_field_offset(lv, s21708c1f4, ABISELECT(160,152), "S21708C1.s21708c1f4");
    check_field_offset(lv, s21708c1f5, ABISELECT(272,264), "S21708C1.s21708c1f5");
    check_field_offset(lv, s21708c1f6, ABISELECT(416,408), "S21708C1.s21708c1f6");
    check_field_offset(lv, s21708c1f7, ABISELECT(432,420), "S21708C1.s21708c1f7");
    check_field_offset(lv, s21708c1f8, ABISELECT(456,432), "S21708C1.s21708c1f8");
    check_field_offset(lv, s21708c1f9, ABISELECT(464,440), "S21708C1.s21708c1f9");
    check_field_offset(lv, s21708c1f10, ABISELECT(472,448), "S21708C1.s21708c1f10");
    check_field_offset(lv, s21708c1f11, ABISELECT(476,452), "S21708C1.s21708c1f11");
    check_field_offset(lv, s21708c1f12, ABISELECT(480,456), "S21708C1.s21708c1f12");
    check_field_offset(lv, s21708c1f13, ABISELECT(488,460), "S21708C1.s21708c1f13");
    check_field_offset(lv, s21708c1f14, ABISELECT(496,464), "S21708C1.s21708c1f14");
    check_field_offset(lv, s21708c1f15, ABISELECT(500,468), "S21708C1.s21708c1f15");
    check_field_offset(lv, s21708c1f16, ABISELECT(504,472), "S21708C1.s21708c1f16");
    check_field_offset(lv, s21708c1f17, ABISELECT(512,476), "S21708C1.s21708c1f17");
    test_class_info(&lv, &cd_S21708C1);
    dp->~S21708C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21708C1(Test_S21708C1, "S21708C1", ABISELECT(528,484));

#else // __cplusplus

extern void _ZN8S21708C1C1Ev();
extern void _ZN8S21708C1D1Ev();
Name_Map name_map_S21708C1[] = {
  NSPAIR(_ZN8S21708C1C1Ev),
  NSPAIR(_ZN8S21708C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21708C1[];
extern void _ZN8S21708C1D1Ev();
extern void _ZN8S21708C1D0Ev();
static  VTBL_ENTRY vtc_S21708C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21708C1[0]),
  (VTBL_ENTRY)&_ZN8S21708C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21708C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21708C1[];
extern  VTBL_ENTRY _ZTV8S21708C1[];
Class_Descriptor cd_S21708C1 = {  "S21708C1", // class name
  0,0,//no base classes
  &(vtc_S21708C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(528,484), // object size
  NSPAIRA(_ZTI8S21708C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21708C1),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  S6921C3  {
  short s6921c3f0;
  virtual  ~S6921C3(); // _ZN7S6921C3D1Ev
  virtual void  v12(); // _ZN7S6921C33v12Ev
  virtual void  v13(); // _ZN7S6921C33v13Ev
  virtual void  v14(); // _ZN7S6921C33v14Ev
  virtual void  v15(); // _ZN7S6921C33v15Ev
  virtual void  v16(); // _ZN7S6921C33v16Ev
  virtual void  v17(); // _ZN7S6921C33v17Ev
  S6921C3(); // tgen
};
//SIG(-1 S6921C3) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S6921C3 ::~S6921C3(){ note_dtor("S6921C3", this);}
void  S6921C3 ::v12(){vfunc_called(this, "_ZN7S6921C33v12Ev");}
void  S6921C3 ::v13(){vfunc_called(this, "_ZN7S6921C33v13Ev");}
void  S6921C3 ::v14(){vfunc_called(this, "_ZN7S6921C33v14Ev");}
void  S6921C3 ::v15(){vfunc_called(this, "_ZN7S6921C33v15Ev");}
void  S6921C3 ::v16(){vfunc_called(this, "_ZN7S6921C33v16Ev");}
void  S6921C3 ::v17(){vfunc_called(this, "_ZN7S6921C33v17Ev");}
S6921C3 ::S6921C3(){ note_ctor("S6921C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6921C3C1Ev();
extern void _ZN7S6921C3D1Ev();
Name_Map name_map_S6921C3[] = {
  NSPAIR(_ZN7S6921C3C1Ev),
  NSPAIR(_ZN7S6921C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6921C3[];
extern void _ZN7S6921C3D1Ev();
extern void _ZN7S6921C3D0Ev();
extern void _ZN7S6921C33v12Ev();
extern void _ZN7S6921C33v13Ev();
extern void _ZN7S6921C33v14Ev();
extern void _ZN7S6921C33v15Ev();
extern void _ZN7S6921C33v16Ev();
extern void _ZN7S6921C33v17Ev();
static  VTBL_ENTRY vtc_S6921C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6921C3[0]),
  (VTBL_ENTRY)&_ZN7S6921C3D1Ev,
  (VTBL_ENTRY)&_ZN7S6921C3D0Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v17Ev,
};
extern VTBL_ENTRY _ZTI7S6921C3[];
extern  VTBL_ENTRY _ZTV7S6921C3[];
Class_Descriptor cd_S6921C3 = {  "S6921C3", // class name
  0,0,//no base classes
  &(vtc_S6921C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6921C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6921C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6921C2  {
  ::S6921C3 s6921c2f0[4];
  virtual  ~S6921C2(); // _ZN7S6921C2D1Ev
  virtual void  v5(); // _ZN7S6921C22v5Ev
  virtual void  v6(); // _ZN7S6921C22v6Ev
  virtual void  v7(); // _ZN7S6921C22v7Ev
  virtual void  v8(); // _ZN7S6921C22v8Ev
  virtual void  v9(); // _ZN7S6921C22v9Ev
  virtual void  v10(); // _ZN7S6921C23v10Ev
  virtual void  v11(); // _ZN7S6921C23v11Ev
  S6921C2(); // tgen
};
//SIG(-1 S6921C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ vd v8 v9 v10 v11 v12 v13 Fs}[4]}


 S6921C2 ::~S6921C2(){ note_dtor("S6921C2", this);}
void  S6921C2 ::v5(){vfunc_called(this, "_ZN7S6921C22v5Ev");}
void  S6921C2 ::v6(){vfunc_called(this, "_ZN7S6921C22v6Ev");}
void  S6921C2 ::v7(){vfunc_called(this, "_ZN7S6921C22v7Ev");}
void  S6921C2 ::v8(){vfunc_called(this, "_ZN7S6921C22v8Ev");}
void  S6921C2 ::v9(){vfunc_called(this, "_ZN7S6921C22v9Ev");}
void  S6921C2 ::v10(){vfunc_called(this, "_ZN7S6921C23v10Ev");}
void  S6921C2 ::v11(){vfunc_called(this, "_ZN7S6921C23v11Ev");}
S6921C2 ::S6921C2(){ note_ctor("S6921C2", this);} // tgen

static void Test_S6921C2()
{
  extern Class_Descriptor cd_S6921C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S6921C2, buf);
    S6921C2 *dp, &lv = *(dp=new (buf) S6921C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S6921C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6921C2)");
    check_field_offset(lv, s6921c2f0, ABISELECT(8,4), "S6921C2.s6921c2f0");
    test_class_info(&lv, &cd_S6921C2);
    dp->~S6921C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6921C2(Test_S6921C2, "S6921C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN7S6921C2C1Ev();
extern void _ZN7S6921C2D1Ev();
Name_Map name_map_S6921C2[] = {
  NSPAIR(_ZN7S6921C2C1Ev),
  NSPAIR(_ZN7S6921C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6921C2[];
extern void _ZN7S6921C2D1Ev();
extern void _ZN7S6921C2D0Ev();
extern void _ZN7S6921C22v5Ev();
extern void _ZN7S6921C22v6Ev();
extern void _ZN7S6921C22v7Ev();
extern void _ZN7S6921C22v8Ev();
extern void _ZN7S6921C22v9Ev();
extern void _ZN7S6921C23v10Ev();
extern void _ZN7S6921C23v11Ev();
static  VTBL_ENTRY vtc_S6921C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6921C2[0]),
  (VTBL_ENTRY)&_ZN7S6921C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6921C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6921C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6921C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S6921C2[];
extern  VTBL_ENTRY _ZTV7S6921C2[];
Class_Descriptor cd_S6921C2 = {  "S6921C2", // class name
  0,0,//no base classes
  &(vtc_S6921C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI7S6921C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6921C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6921C5  {
  long s6921c5f0;
  virtual void  v18(); // _ZN7S6921C53v18Ev
  virtual void  v19(); // _ZN7S6921C53v19Ev
  virtual void  v20(); // _ZN7S6921C53v20Ev
  virtual void  v21(); // _ZN7S6921C53v21Ev
  virtual void  v22(); // _ZN7S6921C53v22Ev
  ~S6921C5(); // tgen
  S6921C5(); // tgen
};
//SIG(-1 S6921C5) C1{ v1 v2 v3 v4 v5 Fl}


void  S6921C5 ::v18(){vfunc_called(this, "_ZN7S6921C53v18Ev");}
void  S6921C5 ::v19(){vfunc_called(this, "_ZN7S6921C53v19Ev");}
void  S6921C5 ::v20(){vfunc_called(this, "_ZN7S6921C53v20Ev");}
void  S6921C5 ::v21(){vfunc_called(this, "_ZN7S6921C53v21Ev");}
void  S6921C5 ::v22(){vfunc_called(this, "_ZN7S6921C53v22Ev");}
S6921C5 ::~S6921C5(){ note_dtor("S6921C5", this);} // tgen
S6921C5 ::S6921C5(){ note_ctor("S6921C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6921C5C1Ev();
extern void _ZN7S6921C5D1Ev();
Name_Map name_map_S6921C5[] = {
  NSPAIR(_ZN7S6921C5C1Ev),
  NSPAIR(_ZN7S6921C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6921C5[];
extern void _ZN7S6921C53v18Ev();
extern void _ZN7S6921C53v19Ev();
extern void _ZN7S6921C53v20Ev();
extern void _ZN7S6921C53v21Ev();
extern void _ZN7S6921C53v22Ev();
static  VTBL_ENTRY vtc_S6921C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6921C5[0]),
  (VTBL_ENTRY)&_ZN7S6921C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v20Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v21Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v22Ev,
};
extern VTBL_ENTRY _ZTI7S6921C5[];
extern  VTBL_ENTRY _ZTV7S6921C5[];
Class_Descriptor cd_S6921C5 = {  "S6921C5", // class name
  0,0,//no base classes
  &(vtc_S6921C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6921C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6921C5),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  S6921C4  : virtual S6921C3 , S6921C5 {
  char s6921c4f0;
  virtual  ~S6921C4(); // _ZN7S6921C4D2Ev
  S6921C4(); // tgen
};
//SIG(-1 S6921C4) C1{ VBC2{ vd v1 v2 v3 v4 v5 v6 Fs} BC3{ v7 v8 v9 v10 v11 Fl} vd Fc}


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

static void Test_S6921C4()
{
  extern Class_Descriptor cd_S6921C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S6921C4, buf);
    S6921C4 *dp, &lv = *(dp=new (buf) S6921C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S6921C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6921C4)");
    check_base_class_offset(lv, (S6921C3*), ABISELECT(24,12), "S6921C4");
    check_base_class_offset(lv, (S6921C5*), 0, "S6921C4");
    check_field_offset(lv, s6921c4f0, ABISELECT(16,8), "S6921C4.s6921c4f0");
    test_class_info(&lv, &cd_S6921C4);
    dp->~S6921C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6921C4(Test_S6921C4, "S6921C4", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S6921C4C1Ev();
extern void _ZN7S6921C4D2Ev();
Name_Map name_map_S6921C4[] = {
  NSPAIR(_ZN7S6921C4C1Ev),
  NSPAIR(_ZN7S6921C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S6921C3;
extern VTBL_ENTRY _ZTI7S6921C3[];
extern  VTBL_ENTRY _ZTV7S6921C3[];
extern Class_Descriptor cd_S6921C5;
extern VTBL_ENTRY _ZTI7S6921C5[];
extern  VTBL_ENTRY _ZTV7S6921C5[];
static Base_Class bases_S6921C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6921C3,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S6921C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S6921C4[];
extern void _ZN7S6921C53v18Ev();
extern void _ZN7S6921C53v19Ev();
extern void _ZN7S6921C53v20Ev();
extern void _ZN7S6921C53v21Ev();
extern void _ZN7S6921C53v22Ev();
extern void _ZN7S6921C4D1Ev();
extern void _ZN7S6921C4D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S6921C4D1Ev,_ZTv0_n12_N7S6921C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S6921C4D1Ev,_ZThn12_N7S6921C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6921C4D0Ev,_ZTv0_n12_N7S6921C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S6921C4D0Ev,_ZThn12_N7S6921C4D0Ev)() __attribute__((weak));
extern void _ZN7S6921C33v12Ev();
extern void _ZN7S6921C33v13Ev();
extern void _ZN7S6921C33v14Ev();
extern void _ZN7S6921C33v15Ev();
extern void _ZN7S6921C33v16Ev();
extern void _ZN7S6921C33v17Ev();
static  VTBL_ENTRY vtc_S6921C4[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6921C4[0]),
  (VTBL_ENTRY)&_ZN7S6921C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v20Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v21Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v22Ev,
  (VTBL_ENTRY)&_ZN7S6921C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6921C4D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6921C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6921C4D1Ev,_ZTv0_n12_N7S6921C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6921C4D0Ev,_ZTv0_n12_N7S6921C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6921C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v17Ev,
};
extern VTBL_ENTRY _ZTV7S6921C4[];
static  VTT_ENTRY vtt_S6921C4[] = {
  {&(_ZTV7S6921C4[3]),  3,27},
  {&(_ZTV7S6921C4[19]),  19,27},
};
extern VTBL_ENTRY _ZTI7S6921C4[];
extern  VTBL_ENTRY _ZTV7S6921C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6921C4[];
static VTBL_ENTRY alt_thunk_names148[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6921C4D0Ev,_ZTv0_n12_N7S6921C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6921C4D0Ev,_ZThn12_N7S6921C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6921C4D1Ev,_ZTv0_n12_N7S6921C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6921C4D1Ev,_ZThn12_N7S6921C4D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6921C4 = {  "S6921C4", // class name
  bases_S6921C4, 2,
  &(vtc_S6921C4[0]), // expected_vtbl_contents
  &(vtt_S6921C4[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S6921C4),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6921C4),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6921C4),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names148,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6921C1  : S6921C2 , virtual S6921C4 {
  void *s6921c1f0[2];
  virtual void  v1(); // _ZN7S6921C12v1Ev
  virtual void  v2(); // _ZN7S6921C12v2Ev
  virtual void  v3(); // _ZN7S6921C12v3Ev
  virtual void  v4(); // _ZN7S6921C12v4Ev
  ~S6921C1(); // tgen
  S6921C1(); // tgen
};
//SIG(1 S6921C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 FC3{ vd v12 v13 v14 v15 v16 v17 Fs}[4]} VBC4{ VBC3 BC5{ v18 v19 v20 v21 v22 Fl} vd Fc} v1 v2 v3 v4 Fp[2]}


void  S6921C1 ::v1(){vfunc_called(this, "_ZN7S6921C12v1Ev");}
void  S6921C1 ::v2(){vfunc_called(this, "_ZN7S6921C12v2Ev");}
void  S6921C1 ::v3(){vfunc_called(this, "_ZN7S6921C12v3Ev");}
void  S6921C1 ::v4(){vfunc_called(this, "_ZN7S6921C12v4Ev");}
S6921C1 ::~S6921C1(){ note_dtor("S6921C1", this);} // tgen
S6921C1 ::S6921C1(){ note_ctor("S6921C1", this);} // tgen

static void Test_S6921C1()
{
  extern Class_Descriptor cd_S6921C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[17];
    init_test(&cd_S6921C1, buf);
    S6921C1 *dp, &lv = *(dp=new (buf) S6921C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,64), "sizeof(S6921C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6921C1)");
    check_base_class_offset(lv, (S6921C2*), 0, "S6921C1");
    check_base_class_offset(lv, (S6921C3*)(S6921C4*), ABISELECT(112,56), "S6921C1");
    check_base_class_offset(lv, (S6921C5*)(S6921C4*), ABISELECT(88,44), "S6921C1");
    check_base_class_offset(lv, (S6921C4*), ABISELECT(88,44), "S6921C1");
    check_field_offset(lv, s6921c1f0, ABISELECT(72,36), "S6921C1.s6921c1f0");
    test_class_info(&lv, &cd_S6921C1);
    dp->~S6921C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6921C1(Test_S6921C1, "S6921C1", ABISELECT(128,64));

#else // __cplusplus

extern void _ZN7S6921C1C1Ev();
extern void _ZN7S6921C1D1Ev();
Name_Map name_map_S6921C1[] = {
  NSPAIR(_ZN7S6921C1C1Ev),
  NSPAIR(_ZN7S6921C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6921C2;
extern VTBL_ENTRY _ZTI7S6921C2[];
extern  VTBL_ENTRY _ZTV7S6921C2[];
extern Class_Descriptor cd_S6921C3;
extern VTBL_ENTRY _ZTI7S6921C3[];
extern  VTBL_ENTRY _ZTV7S6921C3[];
extern Class_Descriptor cd_S6921C5;
extern VTBL_ENTRY _ZTI7S6921C5[];
extern  VTBL_ENTRY _ZTV7S6921C5[];
extern Class_Descriptor cd_S6921C4;
extern VTBL_ENTRY _ZTI7S6921C4[];
extern  VTBL_ENTRY _ZTV7S6921C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6921C4[];
static Base_Class bases_S6921C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6921C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S6921C3,    ABISELECT(112,56), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S6921C5,    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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S6921C4,    ABISELECT(88,44), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6921C1[];
extern void _ZN7S6921C1D1Ev();
extern void _ZN7S6921C1D0Ev();
extern void _ZN7S6921C22v5Ev();
extern void _ZN7S6921C22v6Ev();
extern void _ZN7S6921C22v7Ev();
extern void _ZN7S6921C22v8Ev();
extern void _ZN7S6921C22v9Ev();
extern void _ZN7S6921C23v10Ev();
extern void _ZN7S6921C23v11Ev();
extern void _ZN7S6921C12v1Ev();
extern void _ZN7S6921C12v2Ev();
extern void _ZN7S6921C12v3Ev();
extern void _ZN7S6921C12v4Ev();
extern void _ZN7S6921C53v18Ev();
extern void _ZN7S6921C53v19Ev();
extern void _ZN7S6921C53v20Ev();
extern void _ZN7S6921C53v21Ev();
extern void _ZN7S6921C53v22Ev();
extern void ABISELECT(_ZTv0_n72_N7S6921C1D1Ev,_ZTv0_n36_N7S6921C1D1Ev)();
extern void ABISELECT(_ZThn88_N7S6921C1D1Ev,_ZThn44_N7S6921C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S6921C1D0Ev,_ZTv0_n36_N7S6921C1D0Ev)();
extern void ABISELECT(_ZThn88_N7S6921C1D0Ev,_ZThn44_N7S6921C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6921C1D1Ev,_ZTv0_n12_N7S6921C1D1Ev)();
extern void ABISELECT(_ZThn112_N7S6921C1D1Ev,_ZThn56_N7S6921C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6921C1D0Ev,_ZTv0_n12_N7S6921C1D0Ev)();
extern void ABISELECT(_ZThn112_N7S6921C1D0Ev,_ZThn56_N7S6921C1D0Ev)() __attribute__((weak));
extern void _ZN7S6921C33v12Ev();
extern void _ZN7S6921C33v13Ev();
extern void _ZN7S6921C33v14Ev();
extern void _ZN7S6921C33v15Ev();
extern void _ZN7S6921C33v16Ev();
extern void _ZN7S6921C33v17Ev();
static  VTBL_ENTRY vtc_S6921C1[] = {
  ABISELECT(112,56),
  ABISELECT(88,44),
  0,
  (VTBL_ENTRY)&(_ZTI7S6921C1[0]),
  (VTBL_ENTRY)&_ZN7S6921C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6921C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6921C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6921C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6921C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6921C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6921C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6921C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6921C12v4Ev,
  ABISELECT(-88,-44),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-88,-44),
  (VTBL_ENTRY)&(_ZTI7S6921C1[0]),
  (VTBL_ENTRY)&_ZN7S6921C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v20Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v21Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v22Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6921C1D1Ev,_ZTv0_n36_N7S6921C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S6921C1D0Ev,_ZTv0_n36_N7S6921C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-112,-56),
  ABISELECT(-112,-56),
  (VTBL_ENTRY)&(_ZTI7S6921C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6921C1D1Ev,_ZTv0_n12_N7S6921C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6921C1D0Ev,_ZTv0_n12_N7S6921C1D0Ev),
  (VTBL_ENTRY)&_ZN7S6921C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v17Ev,
};
extern VTBL_ENTRY _ZTV7S6921C1[];
extern void _ZN7S6921C53v18Ev();
extern void _ZN7S6921C53v19Ev();
extern void _ZN7S6921C53v20Ev();
extern void _ZN7S6921C53v21Ev();
extern void _ZN7S6921C53v22Ev();
extern void _ZN7S6921C4D1Ev();
extern void _ZN7S6921C4D0Ev();
static  VTBL_ENTRY _tg__ZTV7S6921C4__7S6921C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S6921C4[0]),
  (VTBL_ENTRY)&_ZN7S6921C53v18Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v19Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v20Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v21Ev,
  (VTBL_ENTRY)&_ZN7S6921C53v22Ev,
  (VTBL_ENTRY)&_ZN7S6921C4D1Ev,
  (VTBL_ENTRY)&_ZN7S6921C4D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S6921C4D1Ev,_ZTv0_n12_N7S6921C4D1Ev)();
extern void ABISELECT(_ZThn24_N7S6921C4D1Ev,_ZThn12_N7S6921C4D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S6921C4D0Ev,_ZTv0_n12_N7S6921C4D0Ev)();
extern void ABISELECT(_ZThn24_N7S6921C4D0Ev,_ZThn12_N7S6921C4D0Ev)() __attribute__((weak));
extern void _ZN7S6921C33v12Ev();
extern void _ZN7S6921C33v13Ev();
extern void _ZN7S6921C33v14Ev();
extern void _ZN7S6921C33v15Ev();
extern void _ZN7S6921C33v16Ev();
extern void _ZN7S6921C33v17Ev();
static  VTBL_ENTRY _tg__ZTV7S6921C3__7S6921C4__7S6921C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S6921C4[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6921C4D1Ev,_ZTv0_n12_N7S6921C4D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S6921C4D0Ev,_ZTv0_n12_N7S6921C4D0Ev),
  (VTBL_ENTRY)&_ZN7S6921C33v12Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v13Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v14Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v15Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v16Ev,
  (VTBL_ENTRY)&_ZN7S6921C33v17Ev,
};
static  VTT_ENTRY vtt_S6921C1[] = {
  {&(_ZTV7S6921C1[4]),  4,50},
  {&(_ZTV7S6921C1[26]),  26,50},
  {&(_ZTV7S6921C1[42]),  42,50},
  {&(_tg__ZTV7S6921C4__7S6921C1[3]),  3,10},
  {&(_tg__ZTV7S6921C3__7S6921C4__7S6921C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S6921C1[];
extern  VTBL_ENTRY _ZTV7S6921C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6921C1[];
static VTBL_ENTRY alt_thunk_names149[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6921C4D0Ev,_ZTv0_n12_N7S6921C4D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6921C4D0Ev,_ZThn12_N7S6921C4D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6921C4D1Ev,_ZTv0_n12_N7S6921C4D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S6921C4D1Ev,_ZThn12_N7S6921C4D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6921C1D0Ev,_ZTv0_n12_N7S6921C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6921C1D0Ev,_ZThn56_N7S6921C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S6921C1D1Ev,_ZTv0_n12_N7S6921C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn112_N7S6921C1D1Ev,_ZThn56_N7S6921C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6921C1D0Ev,_ZTv0_n36_N7S6921C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6921C1D0Ev,_ZThn44_N7S6921C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S6921C1D1Ev,_ZTv0_n36_N7S6921C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn88_N7S6921C1D1Ev,_ZThn44_N7S6921C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S6921C1 = {  "S6921C1", // class name
  bases_S6921C1, 4,
  &(vtc_S6921C1[0]), // expected_vtbl_contents
  &(vtt_S6921C1[0]), // expected_vtt_contents
  ABISELECT(128,64), // object size
  NSPAIRA(_ZTI7S6921C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6921C1),50, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6921C1),5, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names149,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7810C4  {
  short s7810c4f0;
  virtual  ~S7810C4(); // _ZN7S7810C4D1Ev
  virtual void  v6(); // _ZN7S7810C42v6Ev
  virtual void  v7(); // _ZN7S7810C42v7Ev
  virtual void  v8(); // _ZN7S7810C42v8Ev
  virtual void  v9(); // _ZN7S7810C42v9Ev
  virtual void  v10(); // _ZN7S7810C43v10Ev
  virtual void  v11(); // _ZN7S7810C43v11Ev
  S7810C4(); // tgen
};
//SIG(-1 S7810C4) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S7810C4 ::~S7810C4(){ note_dtor("S7810C4", this);}
void  S7810C4 ::v6(){vfunc_called(this, "_ZN7S7810C42v6Ev");}
void  S7810C4 ::v7(){vfunc_called(this, "_ZN7S7810C42v7Ev");}
void  S7810C4 ::v8(){vfunc_called(this, "_ZN7S7810C42v8Ev");}
void  S7810C4 ::v9(){vfunc_called(this, "_ZN7S7810C42v9Ev");}
void  S7810C4 ::v10(){vfunc_called(this, "_ZN7S7810C43v10Ev");}
void  S7810C4 ::v11(){vfunc_called(this, "_ZN7S7810C43v11Ev");}
S7810C4 ::S7810C4(){ note_ctor("S7810C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7810C4C1Ev();
extern void _ZN7S7810C4D1Ev();
Name_Map name_map_S7810C4[] = {
  NSPAIR(_ZN7S7810C4C1Ev),
  NSPAIR(_ZN7S7810C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7810C4[];
extern void _ZN7S7810C4D1Ev();
extern void _ZN7S7810C4D0Ev();
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY vtc_S7810C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C4[0]),
  (VTBL_ENTRY)&_ZN7S7810C4D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C4D0Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
extern VTBL_ENTRY _ZTI7S7810C4[];
extern  VTBL_ENTRY _ZTV7S7810C4[];
Class_Descriptor cd_S7810C4 = {  "S7810C4", // class name
  0,0,//no base classes
  &(vtc_S7810C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7810C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7810C4),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7810C5  {
  long s7810c5f0;
  virtual void  v12(); // _ZN7S7810C53v12Ev
  virtual void  v13(); // _ZN7S7810C53v13Ev
  virtual void  v14(); // _ZN7S7810C53v14Ev
  virtual void  v15(); // _ZN7S7810C53v15Ev
  virtual void  v16(); // _ZN7S7810C53v16Ev
  ~S7810C5(); // tgen
  S7810C5(); // tgen
};
//SIG(-1 S7810C5) C1{ v1 v2 v3 v4 v5 Fl}


void  S7810C5 ::v12(){vfunc_called(this, "_ZN7S7810C53v12Ev");}
void  S7810C5 ::v13(){vfunc_called(this, "_ZN7S7810C53v13Ev");}
void  S7810C5 ::v14(){vfunc_called(this, "_ZN7S7810C53v14Ev");}
void  S7810C5 ::v15(){vfunc_called(this, "_ZN7S7810C53v15Ev");}
void  S7810C5 ::v16(){vfunc_called(this, "_ZN7S7810C53v16Ev");}
S7810C5 ::~S7810C5(){ note_dtor("S7810C5", this);} // tgen
S7810C5 ::S7810C5(){ note_ctor("S7810C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7810C5C1Ev();
extern void _ZN7S7810C5D1Ev();
Name_Map name_map_S7810C5[] = {
  NSPAIR(_ZN7S7810C5C1Ev),
  NSPAIR(_ZN7S7810C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7810C5[];
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
static  VTBL_ENTRY vtc_S7810C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C5[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
};
extern VTBL_ENTRY _ZTI7S7810C5[];
extern  VTBL_ENTRY _ZTV7S7810C5[];
Class_Descriptor cd_S7810C5 = {  "S7810C5", // class name
  0,0,//no base classes
  &(vtc_S7810C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7810C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7810C5),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  S7810C3  : virtual S7810C4 , S7810C5 {
  char s7810c3f0;
  virtual  ~S7810C3(); // _ZN7S7810C3D2Ev
  S7810C3(); // tgen
};
//SIG(-1 S7810C3) C1{ VBC2{ vd v1 v2 v3 v4 v5 v6 Fs} BC3{ v7 v8 v9 v10 v11 Fl} vd Fc}


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

static void Test_S7810C3()
{
  extern Class_Descriptor cd_S7810C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7810C3, buf);
    S7810C3 *dp, &lv = *(dp=new (buf) S7810C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7810C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7810C3)");
    check_base_class_offset(lv, (S7810C4*), ABISELECT(24,12), "S7810C3");
    check_base_class_offset(lv, (S7810C5*), 0, "S7810C3");
    check_field_offset(lv, s7810c3f0, ABISELECT(16,8), "S7810C3.s7810c3f0");
    test_class_info(&lv, &cd_S7810C3);
    dp->~S7810C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7810C3(Test_S7810C3, "S7810C3", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7810C3C1Ev();
extern void _ZN7S7810C3D2Ev();
Name_Map name_map_S7810C3[] = {
  NSPAIR(_ZN7S7810C3C1Ev),
  NSPAIR(_ZN7S7810C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7810C4;
extern VTBL_ENTRY _ZTI7S7810C4[];
extern  VTBL_ENTRY _ZTV7S7810C4[];
extern Class_Descriptor cd_S7810C5;
extern VTBL_ENTRY _ZTI7S7810C5[];
extern  VTBL_ENTRY _ZTV7S7810C5[];
static Base_Class bases_S7810C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7810C4,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7810C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7810C3[];
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
extern void _ZN7S7810C3D1Ev();
extern void _ZN7S7810C3D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7810C3D1Ev,_ZThn12_N7S7810C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7810C3D0Ev,_ZThn12_N7S7810C3D0Ev)() __attribute__((weak));
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY vtc_S7810C3[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C3[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7810C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C3D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7810C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S7810C3[];
static  VTT_ENTRY vtt_S7810C3[] = {
  {&(_ZTV7S7810C3[3]),  3,27},
  {&(_ZTV7S7810C3[19]),  19,27},
};
extern VTBL_ENTRY _ZTI7S7810C3[];
extern  VTBL_ENTRY _ZTV7S7810C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7810C3[];
static VTBL_ENTRY alt_thunk_names150[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C3D0Ev,_ZThn12_N7S7810C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C3D1Ev,_ZThn12_N7S7810C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7810C3 = {  "S7810C3", // class name
  bases_S7810C3, 2,
  &(vtc_S7810C3[0]), // expected_vtbl_contents
  &(vtt_S7810C3[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7810C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7810C3),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7810C3),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names150,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7810C2  : virtual S7810C3 {
  ::S7810C4 s7810c2f0;
  virtual void  v17(); // _ZN7S7810C23v17Ev
  virtual void  v18(); // _ZN7S7810C23v18Ev
  virtual void  v19(); // _ZN7S7810C23v19Ev
  virtual void  v20(); // _ZN7S7810C23v20Ev
  virtual void  v21(); // _ZN7S7810C23v21Ev
  virtual void  v22(); // _ZN7S7810C23v22Ev
  ~S7810C2(); // tgen
  S7810C2(); // tgen
};
//SIG(-1 S7810C2) C1{ VBC2{ VBC3{ vd v7 v8 v9 v10 v11 v12 Fs} BC4{ v13 v14 v15 v16 v17 Fl} vd Fc} v1 v2 v3 v4 v5 v6 FC3}


void  S7810C2 ::v17(){vfunc_called(this, "_ZN7S7810C23v17Ev");}
void  S7810C2 ::v18(){vfunc_called(this, "_ZN7S7810C23v18Ev");}
void  S7810C2 ::v19(){vfunc_called(this, "_ZN7S7810C23v19Ev");}
void  S7810C2 ::v20(){vfunc_called(this, "_ZN7S7810C23v20Ev");}
void  S7810C2 ::v21(){vfunc_called(this, "_ZN7S7810C23v21Ev");}
void  S7810C2 ::v22(){vfunc_called(this, "_ZN7S7810C23v22Ev");}
S7810C2 ::~S7810C2(){ note_dtor("S7810C2", this);} // tgen
S7810C2 ::S7810C2(){ note_ctor("S7810C2", this);} // tgen

static void Test_S7810C2()
{
  extern Class_Descriptor cd_S7810C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S7810C2, buf);
    S7810C2 *dp, &lv = *(dp=new (buf) S7810C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S7810C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7810C2)");
    check_base_class_offset(lv, (S7810C4*)(S7810C3*), ABISELECT(48,24), "S7810C2");
    check_base_class_offset(lv, (S7810C5*)(S7810C3*), ABISELECT(24,12), "S7810C2");
    check_base_class_offset(lv, (S7810C3*), ABISELECT(24,12), "S7810C2");
    check_field_offset(lv, s7810c2f0, ABISELECT(8,4), "S7810C2.s7810c2f0");
    test_class_info(&lv, &cd_S7810C2);
    dp->~S7810C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7810C2(Test_S7810C2, "S7810C2", ABISELECT(64,32));

#else // __cplusplus

extern void _ZN7S7810C2C1Ev();
extern void _ZN7S7810C2D1Ev();
Name_Map name_map_S7810C2[] = {
  NSPAIR(_ZN7S7810C2C1Ev),
  NSPAIR(_ZN7S7810C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7810C4;
extern VTBL_ENTRY _ZTI7S7810C4[];
extern  VTBL_ENTRY _ZTV7S7810C4[];
extern Class_Descriptor cd_S7810C5;
extern VTBL_ENTRY _ZTI7S7810C5[];
extern  VTBL_ENTRY _ZTV7S7810C5[];
extern Class_Descriptor cd_S7810C3;
extern VTBL_ENTRY _ZTI7S7810C3[];
extern  VTBL_ENTRY _ZTV7S7810C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7810C3[];
static Base_Class bases_S7810C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7810C4,    ABISELECT(48,24), //bcp->offset
    28, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7810C5,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7810C3,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7810C2[];
extern void _ZN7S7810C23v17Ev();
extern void _ZN7S7810C23v18Ev();
extern void _ZN7S7810C23v19Ev();
extern void _ZN7S7810C23v20Ev();
extern void _ZN7S7810C23v21Ev();
extern void _ZN7S7810C23v22Ev();
extern void _ZN7S7810C2D1Ev();
extern void _ZN7S7810C2D0Ev();
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
extern void ABISELECT(_ZTv0_n72_N7S7810C2D1Ev,_ZTv0_n36_N7S7810C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7810C2D1Ev,_ZThn12_N7S7810C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7810C2D0Ev,_ZTv0_n36_N7S7810C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7810C2D0Ev,_ZThn12_N7S7810C2D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C2D1Ev,_ZTv0_n12_N7S7810C2D1Ev)();
extern void ABISELECT(_ZThn48_N7S7810C2D1Ev,_ZThn24_N7S7810C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C2D0Ev,_ZTv0_n12_N7S7810C2D0Ev)();
extern void ABISELECT(_ZThn48_N7S7810C2D0Ev,_ZThn24_N7S7810C2D0Ev)() __attribute__((weak));
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY vtc_S7810C2[] = {
  ABISELECT(48,24),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C2[0]),
  (VTBL_ENTRY)&_ZN7S7810C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7810C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C2D0Ev,
  ABISELECT(-24,-12),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7810C2[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7810C2D1Ev,_ZTv0_n36_N7S7810C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7810C2D0Ev,_ZTv0_n36_N7S7810C2D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI7S7810C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C2D1Ev,_ZTv0_n12_N7S7810C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C2D0Ev,_ZTv0_n12_N7S7810C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S7810C2[];
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
extern void _ZN7S7810C3D1Ev();
extern void _ZN7S7810C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7810C3__7S7810C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C3[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7810C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7810C3D1Ev,_ZThn12_N7S7810C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7810C3D0Ev,_ZThn12_N7S7810C3D0Ev)() __attribute__((weak));
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7810C4__7S7810C3__7S7810C2[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7810C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
static  VTT_ENTRY vtt_S7810C2[] = {
  {&(_ZTV7S7810C2[4]),  4,45},
  {&(_ZTV7S7810C2[21]),  21,45},
  {&(_ZTV7S7810C2[37]),  37,45},
  {&(_tg__ZTV7S7810C3__7S7810C2[3]),  3,10},
  {&(_tg__ZTV7S7810C4__7S7810C3__7S7810C2[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7810C2[];
extern  VTBL_ENTRY _ZTV7S7810C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7810C2[];
static VTBL_ENTRY alt_thunk_names151[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C3D0Ev,_ZThn12_N7S7810C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C3D1Ev,_ZThn12_N7S7810C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C2D0Ev,_ZTv0_n12_N7S7810C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7810C2D0Ev,_ZThn24_N7S7810C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C2D1Ev,_ZTv0_n12_N7S7810C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N7S7810C2D1Ev,_ZThn24_N7S7810C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7810C2D0Ev,_ZTv0_n36_N7S7810C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C2D0Ev,_ZThn12_N7S7810C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7810C2D1Ev,_ZTv0_n36_N7S7810C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C2D1Ev,_ZThn12_N7S7810C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7810C2 = {  "S7810C2", // class name
  bases_S7810C2, 3,
  &(vtc_S7810C2[0]), // expected_vtbl_contents
  &(vtt_S7810C2[0]), // expected_vtt_contents
  ABISELECT(64,32), // object size
  NSPAIRA(_ZTI7S7810C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7810C2),45, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7810C2),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names151,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7810C1  : S7810C2 {
  int s7810c1f0[2];
  virtual  ~S7810C1(); // _ZN7S7810C1D2Ev
  virtual void  v1(); // _ZN7S7810C12v1Ev
  virtual void  v2(); // _ZN7S7810C12v2Ev
  virtual void  v3(); // _ZN7S7810C12v3Ev
  virtual void  v4(); // _ZN7S7810C12v4Ev
  virtual void  v5(); // _ZN7S7810C12v5Ev
  S7810C1(); // tgen
};
//SIG(1 S7810C1) C1{ BC2{ VBC3{ VBC4{ vd v6 v7 v8 v9 v10 v11 Fs} BC5{ v12 v13 v14 v15 v16 Fl} vd Fc} v17 v18 v19 v20 v21 v22 FC4} vd v1 v2 v3 v4 v5 Fi[2]}


 S7810C1 ::~S7810C1(){ note_dtor("S7810C1", this);}
void  S7810C1 ::v1(){vfunc_called(this, "_ZN7S7810C12v1Ev");}
void  S7810C1 ::v2(){vfunc_called(this, "_ZN7S7810C12v2Ev");}
void  S7810C1 ::v3(){vfunc_called(this, "_ZN7S7810C12v3Ev");}
void  S7810C1 ::v4(){vfunc_called(this, "_ZN7S7810C12v4Ev");}
void  S7810C1 ::v5(){vfunc_called(this, "_ZN7S7810C12v5Ev");}
S7810C1 ::S7810C1(){ note_ctor("S7810C1", this);} // tgen

static void Test_S7810C1()
{
  extern Class_Descriptor cd_S7810C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(10,11)];
    init_test(&cd_S7810C1, buf);
    S7810C1 *dp, &lv = *(dp=new (buf) S7810C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,40), "sizeof(S7810C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7810C1)");
    check_base_class_offset(lv, (S7810C4*)(S7810C3*), ABISELECT(56,32), "S7810C1");
    check_base_class_offset(lv, (S7810C5*)(S7810C3*), ABISELECT(32,20), "S7810C1");
    check_base_class_offset(lv, (S7810C3*)(S7810C2*), ABISELECT(32,20), "S7810C1");
    check_base_class_offset(lv, (S7810C2*), 0, "S7810C1");
    check_field_offset(lv, s7810c1f0, ABISELECT(24,12), "S7810C1.s7810c1f0");
    test_class_info(&lv, &cd_S7810C1);
    dp->~S7810C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7810C1(Test_S7810C1, "S7810C1", ABISELECT(72,40));

#else // __cplusplus

extern void _ZN7S7810C1C1Ev();
extern void _ZN7S7810C1D2Ev();
Name_Map name_map_S7810C1[] = {
  NSPAIR(_ZN7S7810C1C1Ev),
  NSPAIR(_ZN7S7810C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7810C4;
extern VTBL_ENTRY _ZTI7S7810C4[];
extern  VTBL_ENTRY _ZTV7S7810C4[];
extern Class_Descriptor cd_S7810C5;
extern VTBL_ENTRY _ZTI7S7810C5[];
extern  VTBL_ENTRY _ZTV7S7810C5[];
extern Class_Descriptor cd_S7810C3;
extern VTBL_ENTRY _ZTI7S7810C3[];
extern  VTBL_ENTRY _ZTV7S7810C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7810C3[];
extern Class_Descriptor cd_S7810C2;
extern VTBL_ENTRY _ZTI7S7810C2[];
extern  VTBL_ENTRY _ZTV7S7810C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7810C2[];
static Base_Class bases_S7810C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7810C4,    ABISELECT(56,32), //bcp->offset
    33, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7810C5,    ABISELECT(32,20), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S7810C3,    ABISELECT(32,20), //bcp->offset
    17, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S7810C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7810C1[];
extern void _ZN7S7810C23v17Ev();
extern void _ZN7S7810C23v18Ev();
extern void _ZN7S7810C23v19Ev();
extern void _ZN7S7810C23v20Ev();
extern void _ZN7S7810C23v21Ev();
extern void _ZN7S7810C23v22Ev();
extern void _ZN7S7810C1D1Ev();
extern void _ZN7S7810C1D0Ev();
extern void _ZN7S7810C12v1Ev();
extern void _ZN7S7810C12v2Ev();
extern void _ZN7S7810C12v3Ev();
extern void _ZN7S7810C12v4Ev();
extern void _ZN7S7810C12v5Ev();
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
extern void ABISELECT(_ZTv0_n72_N7S7810C1D1Ev,_ZTv0_n36_N7S7810C1D1Ev)();
extern void ABISELECT(_ZThn32_N7S7810C1D1Ev,_ZThn20_N7S7810C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7810C1D0Ev,_ZTv0_n36_N7S7810C1D0Ev)();
extern void ABISELECT(_ZThn32_N7S7810C1D0Ev,_ZThn20_N7S7810C1D0Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C1D1Ev,_ZTv0_n12_N7S7810C1D1Ev)();
extern void ABISELECT(_ZThn56_N7S7810C1D1Ev,_ZThn32_N7S7810C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C1D0Ev,_ZTv0_n12_N7S7810C1D0Ev)();
extern void ABISELECT(_ZThn56_N7S7810C1D0Ev,_ZThn32_N7S7810C1D0Ev)() __attribute__((weak));
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY vtc_S7810C1[] = {
  ABISELECT(56,32),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C1[0]),
  (VTBL_ENTRY)&_ZN7S7810C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7810C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7810C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7810C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7810C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7810C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7810C12v5Ev,
  ABISELECT(-32,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7810C1[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7810C1D1Ev,_ZTv0_n36_N7S7810C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7810C1D0Ev,_ZTv0_n36_N7S7810C1D0Ev),
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7810C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C1D1Ev,_ZTv0_n12_N7S7810C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C1D0Ev,_ZTv0_n12_N7S7810C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S7810C1[];
extern void _ZN7S7810C23v17Ev();
extern void _ZN7S7810C23v18Ev();
extern void _ZN7S7810C23v19Ev();
extern void _ZN7S7810C23v20Ev();
extern void _ZN7S7810C23v21Ev();
extern void _ZN7S7810C23v22Ev();
extern void _ZN7S7810C2D1Ev();
extern void _ZN7S7810C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7810C2__7S7810C1[] = {
  ABISELECT(56,32),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C2[0]),
  (VTBL_ENTRY)&_ZN7S7810C23v17Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v18Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v19Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v20Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v21Ev,
  (VTBL_ENTRY)&_ZN7S7810C23v22Ev,
  (VTBL_ENTRY)&_ZN7S7810C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C2D0Ev,
};
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
extern void ABISELECT(_ZTv0_n72_N7S7810C2D1Ev,_ZTv0_n36_N7S7810C2D1Ev)();
extern void ABISELECT(_ZThn32_N7S7810C2D1Ev,_ZThn20_N7S7810C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n72_N7S7810C2D0Ev,_ZTv0_n36_N7S7810C2D0Ev)();
extern void ABISELECT(_ZThn32_N7S7810C2D0Ev,_ZThn20_N7S7810C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV7S7810C3__7S7810C2__7S7810C1[] = {
  ABISELECT(-32,-20),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(24,12),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI7S7810C2[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7810C2D1Ev,_ZTv0_n36_N7S7810C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n72_N7S7810C2D0Ev,_ZTv0_n36_N7S7810C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N7S7810C2D1Ev,_ZTv0_n12_N7S7810C2D1Ev)();
extern void ABISELECT(_ZThn56_N7S7810C2D1Ev,_ZThn32_N7S7810C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C2D0Ev,_ZTv0_n12_N7S7810C2D0Ev)();
extern void ABISELECT(_ZThn56_N7S7810C2D0Ev,_ZThn32_N7S7810C2D0Ev)() __attribute__((weak));
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7810C4__7S7810C2__7S7810C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-32),
  ABISELECT(-56,-32),
  (VTBL_ENTRY)&(_ZTI7S7810C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C2D1Ev,_ZTv0_n12_N7S7810C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C2D0Ev,_ZTv0_n12_N7S7810C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
extern void _ZN7S7810C53v12Ev();
extern void _ZN7S7810C53v13Ev();
extern void _ZN7S7810C53v14Ev();
extern void _ZN7S7810C53v15Ev();
extern void _ZN7S7810C53v16Ev();
extern void _ZN7S7810C3D1Ev();
extern void _ZN7S7810C3D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7810C3__7S7810C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7810C3[0]),
  (VTBL_ENTRY)&_ZN7S7810C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v13Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v14Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v15Ev,
  (VTBL_ENTRY)&_ZN7S7810C53v16Ev,
  (VTBL_ENTRY)&_ZN7S7810C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7810C3D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev)();
extern void ABISELECT(_ZThn24_N7S7810C3D1Ev,_ZThn12_N7S7810C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev)();
extern void ABISELECT(_ZThn24_N7S7810C3D0Ev,_ZThn12_N7S7810C3D0Ev)() __attribute__((weak));
extern void _ZN7S7810C42v6Ev();
extern void _ZN7S7810C42v7Ev();
extern void _ZN7S7810C42v8Ev();
extern void _ZN7S7810C42v9Ev();
extern void _ZN7S7810C43v10Ev();
extern void _ZN7S7810C43v11Ev();
static  VTBL_ENTRY _tg__ZTV7S7810C4__7S7810C3__7S7810C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7810C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev),
  (VTBL_ENTRY)&_ZN7S7810C42v6Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v7Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v8Ev,
  (VTBL_ENTRY)&_ZN7S7810C42v9Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7810C43v11Ev,
};
static  VTT_ENTRY vtt_S7810C1[] = {
  {&(_ZTV7S7810C1[4]),  4,50},
  {&(_tg__ZTV7S7810C2__7S7810C1[4]),  4,12},
  {&(_tg__ZTV7S7810C3__7S7810C2__7S7810C1[9]),  9,16},
  {&(_tg__ZTV7S7810C4__7S7810C2__7S7810C1[9]),  9,17},
  {&(_ZTV7S7810C1[26]),  26,50},
  {&(_ZTV7S7810C1[42]),  42,50},
  {&(_tg__ZTV7S7810C3__7S7810C1[3]),  3,10},
  {&(_tg__ZTV7S7810C4__7S7810C3__7S7810C1[9]),  9,17},
};
extern VTBL_ENTRY _ZTI7S7810C1[];
extern  VTBL_ENTRY _ZTV7S7810C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7810C1[];
static VTBL_ENTRY alt_thunk_names152[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C3D0Ev,_ZTv0_n12_N7S7810C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C3D0Ev,_ZThn12_N7S7810C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C3D1Ev,_ZTv0_n12_N7S7810C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7810C3D1Ev,_ZThn12_N7S7810C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C2D0Ev,_ZTv0_n12_N7S7810C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7810C2D0Ev,_ZThn32_N7S7810C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C2D1Ev,_ZTv0_n12_N7S7810C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7810C2D1Ev,_ZThn32_N7S7810C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7810C2D0Ev,_ZTv0_n36_N7S7810C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7810C2D0Ev,_ZThn20_N7S7810C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7810C2D1Ev,_ZTv0_n36_N7S7810C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7810C2D1Ev,_ZThn20_N7S7810C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C1D0Ev,_ZTv0_n12_N7S7810C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7810C1D0Ev,_ZThn32_N7S7810C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7810C1D1Ev,_ZTv0_n12_N7S7810C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn56_N7S7810C1D1Ev,_ZThn32_N7S7810C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7810C1D0Ev,_ZTv0_n36_N7S7810C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7810C1D0Ev,_ZThn20_N7S7810C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n72_N7S7810C1D1Ev,_ZTv0_n36_N7S7810C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N7S7810C1D1Ev,_ZThn20_N7S7810C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7810C1 = {  "S7810C1", // class name
  bases_S7810C1, 4,
  &(vtc_S7810C1[0]), // expected_vtbl_contents
  &(vtt_S7810C1[0]), // expected_vtt_contents
  ABISELECT(72,40), // object size
  NSPAIRA(_ZTI7S7810C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7810C1),50, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7810C1),8, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names152,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20709C4  : virtual S9624C48 {
  int s20709c4f0;
  ~S20709C4(); // tgen
  S20709C4(); // tgen
};
//SIG(-1 S20709C4) C1{ VBC2{ m} Fi}


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

static void Test_S20709C4()
{
  extern Class_Descriptor cd_S20709C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20709C4, buf);
    S20709C4 *dp, &lv = *(dp=new (buf) S20709C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20709C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20709C4)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20709C4");
    check_field_offset(lv, s20709c4f0, ABISELECT(8,4), "S20709C4.s20709c4f0");
    test_class_info(&lv, &cd_S20709C4);
    dp->~S20709C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C4(Test_S20709C4, "S20709C4", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20709C4C1Ev();
extern void _ZN8S20709C4D1Ev();
Name_Map name_map_S20709C4[] = {
  NSPAIR(_ZN8S20709C4C1Ev),
  NSPAIR(_ZN8S20709C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20709C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20709C4[];
static  VTBL_ENTRY vtc_S20709C4[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C4[0]),
};
extern VTBL_ENTRY _ZTV8S20709C4[];
static  VTT_ENTRY vtt_S20709C4[] = {
  {&(_ZTV8S20709C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20709C4[];
extern  VTBL_ENTRY _ZTV8S20709C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C4[];
Class_Descriptor cd_S20709C4 = {  "S20709C4", // class name
  bases_S20709C4, 1,
  &(vtc_S20709C4[0]), // expected_vtbl_contents
  &(vtt_S20709C4[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20709C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20709C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20709C4),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  S20709C5  : S9624C48 {
};
//SIG(-1 S20709C5) C1{ BC2{ m}}



static void Test_S20709C5()
{
  extern Class_Descriptor cd_S20709C5;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S20709C5, buf);
    S20709C5 &lv = *(new (buf) S20709C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S20709C5)");
    check2(__alignof__(lv), 1, "__alignof__(S20709C5)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20709C5");
    test_class_info(&lv, &cd_S20709C5);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C5(Test_S20709C5, "S20709C5", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S20709C2  : virtual S9624C48 , S20709C4 , virtual S20709C5 , S20489C10_nt {
  ~S20709C2(); // tgen
  S20709C2(); // tgen
};
//SIG(-1 S20709C2) C1{ VBC2{ m} BC3{ VBC2 Fi} VBC4{ BC2} BC5{ m Fi}}


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

static void Test_S20709C2()
{
  extern Class_Descriptor cd_S20709C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S20709C2, buf);
    S20709C2 *dp, &lv = *(dp=new (buf) S20709C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S20709C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20709C2)");
    /*is_ambiguous_... S20709C2::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20709C2");
    check_base_class_offset(lv, (S9624C48*)(S20709C4*), 0, "S20709C2");
    check_base_class_offset(lv, (S20709C4*), 0, "S20709C2");
    check_base_class_offset(lv, (S9624C48*)(S20709C5*), ABISELECT(16,12), "S20709C2");
    check_base_class_offset(lv, (S20709C5*), ABISELECT(16,12), "S20709C2");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(12,8), "S20709C2");
    test_class_info(&lv, &cd_S20709C2);
    dp->~S20709C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C2(Test_S20709C2, "S20709C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN8S20709C2C1Ev();
extern void _ZN8S20709C2D1Ev();
Name_Map name_map_S20709C2[] = {
  NSPAIR(_ZN8S20709C2C1Ev),
  NSPAIR(_ZN8S20709C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C4;
extern VTBL_ENTRY _ZTI8S20709C4[];
extern  VTBL_ENTRY _ZTV8S20709C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C5;
extern VTBL_ENTRY _ZTI8S20709C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S20709C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20709C4,    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_S9624C48,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20709C5,    ABISELECT(16,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20709C2[];
static  VTBL_ENTRY vtc_S20709C2[] = {
  ABISELECT(16,12),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C2[0]),
};
extern VTBL_ENTRY _ZTV8S20709C2[];
static  VTBL_ENTRY _tg__ZTV8S20709C4__8S20709C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C4[0]),
};
static  VTT_ENTRY vtt_S20709C2[] = {
  {&(_ZTV8S20709C2[4]),  4,4},
  {&(_tg__ZTV8S20709C4__8S20709C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20709C2[];
extern  VTBL_ENTRY _ZTV8S20709C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C2[];
Class_Descriptor cd_S20709C2 = {  "S20709C2", // class name
  bases_S20709C2, 5,
  &(vtc_S20709C2[0]), // expected_vtbl_contents
  &(vtt_S20709C2[0]), // expected_vtt_contents
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI8S20709C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S20709C2),4, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20709C2),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  S20709C8  : virtual S9624C39 , S9624C48 , S20489C10_nt , S20709C5 , S20489C8 {
  ~S20709C8(); // tgen
  S20709C8(); // tgen
};
//SIG(-1 S20709C8) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S20709C8()
{
  extern Class_Descriptor cd_S20709C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20709C8, buf);
    S20709C8 *dp, &lv = *(dp=new (buf) S20709C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20709C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20709C8)");
    check_base_class_offset(lv, (S9624C39*), 0, "S20709C8");
    /*is_ambiguous_... S20709C8::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S20709C8");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S20709C8");
    check_base_class_offset(lv, (S9624C48*)(S20709C5*), ABISELECT(12,8), "S20709C8");
    check_base_class_offset(lv, (S20709C5*), ABISELECT(12,8), "S20709C8");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20709C8");
    test_class_info(&lv, &cd_S20709C8);
    dp->~S20709C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C8(Test_S20709C8, "S20709C8", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20709C8C1Ev();
extern void _ZN8S20709C8D1Ev();
Name_Map name_map_S20709C8[] = {
  NSPAIR(_ZN8S20709C8C1Ev),
  NSPAIR(_ZN8S20709C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C5;
extern VTBL_ENTRY _ZTI8S20709C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S20709C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20709C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20709C8[];
static  VTBL_ENTRY vtc_S20709C8[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C8[0]),
};
extern VTBL_ENTRY _ZTV8S20709C8[];
static  VTT_ENTRY vtt_S20709C8[] = {
  {&(_ZTV8S20709C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20709C8[];
extern  VTBL_ENTRY _ZTV8S20709C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C8[];
Class_Descriptor cd_S20709C8 = {  "S20709C8", // class name
  bases_S20709C8, 6,
  &(vtc_S20709C8[0]), // expected_vtbl_contents
  &(vtt_S20709C8[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20709C8),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20709C8),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20709C8),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  S20709C7  : virtual S20709C8 {
  ~S20709C7(); // tgen
  S20709C7(); // tgen
};
//SIG(-1 S20709C7) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}}}


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

static void Test_S20709C7()
{
  extern Class_Descriptor cd_S20709C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20709C7, buf);
    S20709C7 *dp, &lv = *(dp=new (buf) S20709C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20709C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20709C7)");
    check_base_class_offset(lv, (S9624C39*)(S20709C8*), 0, "S20709C7");
    /*is_ambiguous_... S20709C8::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C8*), ABISELECT(8,4), "S20709C7");
    check_base_class_offset(lv, (S20489C10_nt*)(S20709C8*), ABISELECT(16,8), "S20709C7");
    check_base_class_offset(lv, (S9624C48*)(S20709C5*)(S20709C8*), ABISELECT(20,12), "S20709C7");
    check_base_class_offset(lv, (S20709C5*)(S20709C8*), ABISELECT(20,12), "S20709C7");
    check_base_class_offset(lv, (S20489C8*)(S20709C8*), ABISELECT(24,12), "S20709C7");
    check_base_class_offset(lv, (S20709C8*), ABISELECT(8,4), "S20709C7");
    test_class_info(&lv, &cd_S20709C7);
    dp->~S20709C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C7(Test_S20709C7, "S20709C7", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20709C7C1Ev();
extern void _ZN8S20709C7D1Ev();
Name_Map name_map_S20709C7[] = {
  NSPAIR(_ZN8S20709C7C1Ev),
  NSPAIR(_ZN8S20709C7D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C5;
extern VTBL_ENTRY _ZTI8S20709C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20709C8;
extern VTBL_ENTRY _ZTI8S20709C8[];
extern  VTBL_ENTRY _ZTV8S20709C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C8[];
static Base_Class bases_S20709C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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_S9624C48,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S20709C5,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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_S20709C8,    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 _ZTI8S20709C7[];
static  VTBL_ENTRY vtc_S20709C7[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C7[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20709C7[0]),
};
extern VTBL_ENTRY _ZTV8S20709C7[];
static  VTBL_ENTRY _tg__ZTV8S20709C8__8S20709C7[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C8[0]),
};
static  VTT_ENTRY vtt_S20709C7[] = {
  {&(_ZTV8S20709C7[4]),  4,7},
  {&(_ZTV8S20709C7[7]),  7,7},
  {&(_tg__ZTV8S20709C8__8S20709C7[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20709C7[];
extern  VTBL_ENTRY _ZTV8S20709C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C7[];
Class_Descriptor cd_S20709C7 = {  "S20709C7", // class name
  bases_S20709C7, 7,
  &(vtc_S20709C7[0]), // expected_vtbl_contents
  &(vtt_S20709C7[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20709C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20709C7),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20709C7),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  S20709C11  : virtual S20489C8 , virtual S9624C48 , S20709C4 {
  virtual void  v1(); // _ZN9S20709C112v1Ev
  ~S20709C11(); // tgen
  S20709C11(); // tgen
};
//SIG(-1 S20709C11) C1{ VBC2{ m Fi:0 Fp} VBC3{ m} BC4{ VBC3 Fi} v1}


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

static void Test_S20709C11()
{
  extern Class_Descriptor cd_S20709C11;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20709C11, buf);
    S20709C11 *dp, &lv = *(dp=new (buf) S20709C11());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20709C11)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20709C11)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S20709C11");
    check_base_class_offset(lv, (S9624C48*), 0, "S20709C11");
    check_base_class_offset(lv, (S9624C48*)(S20709C4*), 0, "S20709C11");
    check_base_class_offset(lv, (S20709C4*), 0, "S20709C11");
    test_class_info(&lv, &cd_S20709C11);
    dp->~S20709C11();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C11(Test_S20709C11, "S20709C11", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN9S20709C11C1Ev();
extern void _ZN9S20709C11D1Ev();
Name_Map name_map_S20709C11[] = {
  NSPAIR(_ZN9S20709C11C1Ev),
  NSPAIR(_ZN9S20709C11D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C4;
extern VTBL_ENTRY _ZTI8S20709C4[];
extern  VTBL_ENTRY _ZTV8S20709C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C4[];
static Base_Class bases_S20709C11[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20709C4,    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 _ZTI9S20709C11[];
extern void _ZN9S20709C112v1Ev();
static  VTBL_ENTRY vtc_S20709C11[] = {
  ABISELECT(16,8),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S20709C11[0]),
  (VTBL_ENTRY)&_ZN9S20709C112v1Ev,
};
extern VTBL_ENTRY _ZTV9S20709C11[];
static  VTBL_ENTRY _tg__ZTV8S20709C4__9S20709C11[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C4[0]),
};
static  VTT_ENTRY vtt_S20709C11[] = {
  {&(_ZTV9S20709C11[4]),  4,5},
  {&(_tg__ZTV8S20709C4__9S20709C11[3]),  3,3},
};
extern VTBL_ENTRY _ZTI9S20709C11[];
extern  VTBL_ENTRY _ZTV9S20709C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20709C11[];
Class_Descriptor cd_S20709C11 = {  "S20709C11", // class name
  bases_S20709C11, 3,
  &(vtc_S20709C11[0]), // expected_vtbl_contents
  &(vtt_S20709C11[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI9S20709C11),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV9S20709C11),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S20709C11),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  S20709C1  : virtual S20709C2 , virtual S20709C7 , S20709C8 , virtual S20709C4 , S20709C11 {
  int s20709c1f0;
  ~S20709C1(); // tgen
  S20709C1(); // tgen
};
//SIG(1 S20709C1) C1{ VBC2{ VBC3{ m} BC4{ VBC3 Fi} VBC5{ BC3} BC6{ m Fi}} VBC7{ VBC8{ VBC9{ m} BC3 BC6 BC5 BC10{ m Fi:0 Fp}}} BC8 VBC4 BC11{ VBC10 VBC3 BC4 v1} Fi}


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

static void Test_S20709C1()
{
  extern Class_Descriptor cd_S20709C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(15,17)];
    init_test(&cd_S20709C1, buf);
    S20709C1 *dp, &lv = *(dp=new (buf) S20709C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(112,64), "sizeof(S20709C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20709C1)");
    /*is_ambiguous_... S20709C2::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C2*), ABISELECT(56,36), "S20709C1");
    check_base_class_offset(lv, (S9624C48*)(S20709C4*)(S20709C2*), ABISELECT(56,36), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C4 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C4*), ABISELECT(56,36), "S20709C1");
    check_base_class_offset(lv, (S9624C48*)(S20709C11*), ABISELECT(56,36), "S20709C1");
    check_base_class_offset(lv, (S9624C48*)(S20709C4*)(S20709C11*), ABISELECT(56,36), "S20709C1");
    check_base_class_offset(lv, (S20709C4*)(S20709C2*), ABISELECT(40,24), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C5 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C5*), ABISELECT(57,37), "S20709C1");
    check_base_class_offset(lv, (S20709C5*)(S20709C2*), ABISELECT(57,37), "S20709C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S20709C2*), ABISELECT(52,32), "S20709C1");
    check_base_class_offset(lv, (S20709C2*), ABISELECT(40,24), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20709C8*), 0, "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S9624C39*)(S20709C8*), 0, "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C8*), ABISELECT(64,40), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20709C8*), ABISELECT(72,44), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C5*)(S20709C8*), ABISELECT(76,48), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20709C5*)(S20709C8*), ABISELECT(76,48), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20709C8*), ABISELECT(80,48), "S20709C1");
    check_base_class_offset(lv, (S20709C8*)(S20709C7*), ABISELECT(64,40), "S20709C1");
    check_base_class_offset(lv, (S20709C7*), ABISELECT(56,36), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C8*), 0, "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20489C10_nt*)(S20709C8*), ABISELECT(8,4), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S9624C48*)(S20709C5*)(S20709C8*), ABISELECT(12,8), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20709C5*)(S20709C8*), ABISELECT(12,8), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20489C8*)(S20709C8*), ABISELECT(16,8), "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C8 */ AMB_check_base_class_offset(lv, (S20709C8*), 0, "S20709C1");
    /*is_ambiguous_... S20709C1::S20709C4 */ AMB_check_base_class_offset(lv, (S20709C4*), ABISELECT(88,52), "S20709C1");
    check_base_class_offset(lv, (S20489C8*)(S20709C11*), ABISELECT(104,60), "S20709C1");
    check_base_class_offset(lv, (S20709C4*)(S20709C11*), ABISELECT(24,12), "S20709C1");
    check_base_class_offset(lv, (S20709C11*), ABISELECT(24,12), "S20709C1");
    check_field_offset(lv, s20709c1f0, ABISELECT(36,20), "S20709C1.s20709c1f0");
    test_class_info(&lv, &cd_S20709C1);
    dp->~S20709C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20709C1(Test_S20709C1, "S20709C1", ABISELECT(112,64));

#else // __cplusplus

extern void _ZN8S20709C1C1Ev();
extern void _ZN8S20709C1D1Ev();
Name_Map name_map_S20709C1[] = {
  NSPAIR(_ZN8S20709C1C1Ev),
  NSPAIR(_ZN8S20709C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C4;
extern VTBL_ENTRY _ZTI8S20709C4[];
extern  VTBL_ENTRY _ZTV8S20709C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C5;
extern VTBL_ENTRY _ZTI8S20709C5[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S20709C2;
extern VTBL_ENTRY _ZTI8S20709C2[];
extern  VTBL_ENTRY _ZTV8S20709C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C2[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C5;
extern VTBL_ENTRY _ZTI8S20709C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20709C8;
extern VTBL_ENTRY _ZTI8S20709C8[];
extern  VTBL_ENTRY _ZTV8S20709C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C8[];
extern Class_Descriptor cd_S20709C7;
extern VTBL_ENTRY _ZTI8S20709C7[];
extern  VTBL_ENTRY _ZTV8S20709C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20709C5;
extern VTBL_ENTRY _ZTI8S20709C5[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20709C8;
extern VTBL_ENTRY _ZTI8S20709C8[];
extern  VTBL_ENTRY _ZTV8S20709C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C8[];
extern Class_Descriptor cd_S20709C4;
extern VTBL_ENTRY _ZTI8S20709C4[];
extern  VTBL_ENTRY _ZTV8S20709C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C4[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S20709C4;
extern VTBL_ENTRY _ZTI8S20709C4[];
extern  VTBL_ENTRY _ZTV8S20709C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C4[];
extern Class_Descriptor cd_S20709C11;
extern VTBL_ENTRY _ZTI9S20709C11[];
extern  VTBL_ENTRY _ZTV9S20709C11[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S20709C11[];
static Base_Class bases_S20709C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    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
    1, //immediately_derived
  0, 1},
  {&cd_S20709C4,    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
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20709C5,    ABISELECT(57,37), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 1},
  {&cd_S20489C10_nt,    ABISELECT(52,32), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S20709C2,    ABISELECT(40,24), //bcp->offset
    15, //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
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(64,40), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20489C10_nt,    ABISELECT(72,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,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
    10, //immediately_derived
  0, 0},
  {&cd_S20709C5,    ABISELECT(76,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,48), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    12, //immediately_derived
  0, 0},
  {&cd_S20709C8,    ABISELECT(64,40), //bcp->offset
    23, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    14, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    13, //immediately_derived
  0, 1},
  {&cd_S20709C7,    ABISELECT(56,36), //bcp->offset
    19, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    12, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    17, //immediately_derived
  0, 0},
  {&cd_S20709C5,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    19, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20709C8,    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_S20709C4,    ABISELECT(88,52), //bcp->offset
    26, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C8,    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
    23, //immediately_derived
  0, 1},
  {&cd_S20709C4,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    23, //immediately_derived
  0, 0},
  {&cd_S20709C11,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    9, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20709C1[];
extern void _ZN9S20709C112v1Ev();
static  VTBL_ENTRY vtc_S20709C1[] = {
  ABISELECT(104,60),
  ABISELECT(88,52),
  ABISELECT(64,40),
  ABISELECT(56,36),
  ABISELECT(57,37),
  ABISELECT(56,36),
  ABISELECT(40,24),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C1[0]),
  ABISELECT(80,48),
  ABISELECT(32,24),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20709C1[0]),
  (VTBL_ENTRY)&_ZN9S20709C112v1Ev,
  ABISELECT(17,13),
  ABISELECT(16,12),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI8S20709C1[0]),
  ABISELECT(-56,-36),
  ABISELECT(8,4),
  ABISELECT(-56,-36),
  (VTBL_ENTRY)&(_ZTI8S20709C1[0]),
  ABISELECT(-64,-40),
  ABISELECT(-64,-40),
  (VTBL_ENTRY)&(_ZTI8S20709C1[0]),
  ABISELECT(-32,-16),
  ABISELECT(-88,-52),
  (VTBL_ENTRY)&(_ZTI8S20709C1[0]),
};
extern VTBL_ENTRY _ZTV8S20709C1[];
static  VTBL_ENTRY _tg__ZTV8S20709C8__A__8S20709C1[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C8[0]),
};
extern void _ZN9S20709C112v1Ev();
static  VTBL_ENTRY _tg__ZTV9S20709C11__8S20709C1[] = {
  ABISELECT(80,48),
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI9S20709C11[0]),
  (VTBL_ENTRY)&_ZN9S20709C112v1Ev,
};
static  VTBL_ENTRY _tg__ZTV8S20709C49S20709C11__A2__8S20709C1[] = {
  ABISELECT(32,24),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20709C2__8S20709C1[] = {
  ABISELECT(17,13),
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C2[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20709C48S20709C2__8S20709C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C4[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20709C7__8S20709C1[] = {
  ABISELECT(-56,-36),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20709C8__8S20709C7__8S20709C1[] = {
  ABISELECT(-64,-40),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20709C7[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20709C8__8S20709C1[] = {
  ABISELECT(-64,-40),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S20709C4__A1__8S20709C1[] = {
  ABISELECT(-32,-16),
  0,
  (VTBL_ENTRY)&(_ZTI8S20709C4[0]),
};
static  VTT_ENTRY vtt_S20709C1[] = {
  {&(_ZTV8S20709C1[10]),  10,29},
  {&(_tg__ZTV8S20709C8__A__8S20709C1[3]),  3,3},
  {&(_tg__ZTV9S20709C11__8S20709C1[4]),  4,5},
  {&(_tg__ZTV8S20709C49S20709C11__A2__8S20709C1[3]),  3,3},
  {&(_ZTV8S20709C1[19]),  19,29},
  {&(_ZTV8S20709C1[23]),  23,29},
  {&(_ZTV8S20709C1[26]),  26,29},
  {&(_ZTV8S20709C1[29]),  29,29},
  {&(_ZTV8S20709C1[14]),  14,29},
  {&(_tg__ZTV8S20709C2__8S20709C1[4]),  4,4},
  {&(_tg__ZTV8S20709C48S20709C2__8S20709C1[3]),  3,3},
  {&(_tg__ZTV8S20709C7__8S20709C1[4]),  4,4},
  {&(_tg__ZTV8S20709C8__8S20709C7__8S20709C1[3]),  3,3},
  {&(_tg__ZTV8S20709C8__8S20709C1[3]),  3,3},
  {&(_tg__ZTV8S20709C4__A1__8S20709C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20709C1[];
extern  VTBL_ENTRY _ZTV8S20709C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20709C1[];
Class_Descriptor cd_S20709C1 = {  "S20709C1", // class name
  bases_S20709C1, 24,
  &(vtc_S20709C1[0]), // expected_vtbl_contents
  &(vtt_S20709C1[0]), // expected_vtt_contents
  ABISELECT(112,64), // object size
  NSPAIRA(_ZTI8S20709C1),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S20709C1),29, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20709C1),15, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20265C2  {
  ::S19534C4 s20265c2f0[4];
  virtual  ~S20265C2(); // _ZN8S20265C2D1Ev
  virtual void  v5(); // _ZN8S20265C22v5Ev
  virtual void  v6(); // _ZN8S20265C22v6Ev
  virtual void  v7(); // _ZN8S20265C22v7Ev
  virtual void  v8(); // _ZN8S20265C22v8Ev
  virtual void  v9(); // _ZN8S20265C22v9Ev
  virtual void  v10(); // _ZN8S20265C23v10Ev
  virtual void  v11(); // _ZN8S20265C23v11Ev
  S20265C2(); // tgen
};
//SIG(-1 S20265C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ vd v8 v9 v10 v11 v12 v13 Fs}[4]}


 S20265C2 ::~S20265C2(){ note_dtor("S20265C2", this);}
void  S20265C2 ::v5(){vfunc_called(this, "_ZN8S20265C22v5Ev");}
void  S20265C2 ::v6(){vfunc_called(this, "_ZN8S20265C22v6Ev");}
void  S20265C2 ::v7(){vfunc_called(this, "_ZN8S20265C22v7Ev");}
void  S20265C2 ::v8(){vfunc_called(this, "_ZN8S20265C22v8Ev");}
void  S20265C2 ::v9(){vfunc_called(this, "_ZN8S20265C22v9Ev");}
void  S20265C2 ::v10(){vfunc_called(this, "_ZN8S20265C23v10Ev");}
void  S20265C2 ::v11(){vfunc_called(this, "_ZN8S20265C23v11Ev");}
S20265C2 ::S20265C2(){ note_ctor("S20265C2", this);} // tgen

static void Test_S20265C2()
{
  extern Class_Descriptor cd_S20265C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[10];
    init_test(&cd_S20265C2, buf);
    S20265C2 *dp, &lv = *(dp=new (buf) S20265C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S20265C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20265C2)");
    check_field_offset(lv, s20265c2f0, ABISELECT(8,4), "S20265C2.s20265c2f0");
    test_class_info(&lv, &cd_S20265C2);
    dp->~S20265C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20265C2(Test_S20265C2, "S20265C2", ABISELECT(72,36));

#else // __cplusplus

extern void _ZN8S20265C2C1Ev();
extern void _ZN8S20265C2D1Ev();
Name_Map name_map_S20265C2[] = {
  NSPAIR(_ZN8S20265C2C1Ev),
  NSPAIR(_ZN8S20265C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20265C2[];
extern void _ZN8S20265C2D1Ev();
extern void _ZN8S20265C2D0Ev();
extern void _ZN8S20265C22v5Ev();
extern void _ZN8S20265C22v6Ev();
extern void _ZN8S20265C22v7Ev();
extern void _ZN8S20265C22v8Ev();
extern void _ZN8S20265C22v9Ev();
extern void _ZN8S20265C23v10Ev();
extern void _ZN8S20265C23v11Ev();
static  VTBL_ENTRY vtc_S20265C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20265C2[0]),
  (VTBL_ENTRY)&_ZN8S20265C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20265C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20265C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20265C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S20265C2[];
extern  VTBL_ENTRY _ZTV8S20265C2[];
Class_Descriptor cd_S20265C2 = {  "S20265C2", // class name
  0,0,//no base classes
  &(vtc_S20265C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(72,36), // object size
  NSPAIRA(_ZTI8S20265C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20265C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20265C1  : virtual S20265C2 {
  char s20265c1f0;
  int s20265c1f1;
  ::S19534C7 s20265c1f2[7];
  virtual  ~S20265C1(); // _ZN8S20265C1D2Ev
  virtual void  v1(); // _ZN8S20265C12v1Ev
  virtual void  v2(); // _ZN8S20265C12v2Ev
  virtual void  v3(); // _ZN8S20265C12v3Ev
  virtual void  v4(); // _ZN8S20265C12v4Ev
  S20265C1(); // tgen
};
//SIG(1 S20265C1) C1{ VBC2{ vd v5 v6 v7 v8 v9 v10 v11 FC3{ vd v17 v18 v19 v20 v21 v22 Fs}[4]} vd v1 v2 v3 v4 Fc Fi FC4{ v12 v13 v14 v15 v16 Fi}[7]}


 S20265C1 ::~S20265C1(){ note_dtor("S20265C1", this);}
void  S20265C1 ::v1(){vfunc_called(this, "_ZN8S20265C12v1Ev");}
void  S20265C1 ::v2(){vfunc_called(this, "_ZN8S20265C12v2Ev");}
void  S20265C1 ::v3(){vfunc_called(this, "_ZN8S20265C12v3Ev");}
void  S20265C1 ::v4(){vfunc_called(this, "_ZN8S20265C12v4Ev");}
S20265C1 ::S20265C1(){ note_ctor("S20265C1", this);} // tgen

static void Test_S20265C1()
{
  extern Class_Descriptor cd_S20265C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(26,27)];
    init_test(&cd_S20265C1, buf);
    S20265C1 *dp, &lv = *(dp=new (buf) S20265C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(200,104), "sizeof(S20265C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20265C1)");
    check_base_class_offset(lv, (S20265C2*), ABISELECT(128,68), "S20265C1");
    check_field_offset(lv, s20265c1f0, ABISELECT(8,4), "S20265C1.s20265c1f0");
    check_field_offset(lv, s20265c1f1, ABISELECT(12,8), "S20265C1.s20265c1f1");
    check_field_offset(lv, s20265c1f2, ABISELECT(16,12), "S20265C1.s20265c1f2");
    test_class_info(&lv, &cd_S20265C1);
    dp->~S20265C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20265C1(Test_S20265C1, "S20265C1", ABISELECT(200,104));

#else // __cplusplus

extern void _ZN8S20265C1C1Ev();
extern void _ZN8S20265C1D2Ev();
Name_Map name_map_S20265C1[] = {
  NSPAIR(_ZN8S20265C1C1Ev),
  NSPAIR(_ZN8S20265C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20265C2;
extern VTBL_ENTRY _ZTI8S20265C2[];
extern  VTBL_ENTRY _ZTV8S20265C2[];
static Base_Class bases_S20265C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20265C2,    ABISELECT(128,68), //bcp->offset
    9, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20265C1[];
extern void _ZN8S20265C1D1Ev();
extern void _ZN8S20265C1D0Ev();
extern void _ZN8S20265C12v1Ev();
extern void _ZN8S20265C12v2Ev();
extern void _ZN8S20265C12v3Ev();
extern void _ZN8S20265C12v4Ev();
extern void ABISELECT(_ZTv0_n24_N8S20265C1D1Ev,_ZTv0_n12_N8S20265C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20265C1D1Ev,_ZThn68_N8S20265C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20265C1D0Ev,_ZTv0_n12_N8S20265C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20265C1D0Ev,_ZThn68_N8S20265C1D0Ev)() __attribute__((weak));
extern void _ZN8S20265C22v5Ev();
extern void _ZN8S20265C22v6Ev();
extern void _ZN8S20265C22v7Ev();
extern void _ZN8S20265C22v8Ev();
extern void _ZN8S20265C22v9Ev();
extern void _ZN8S20265C23v10Ev();
extern void _ZN8S20265C23v11Ev();
static  VTBL_ENTRY vtc_S20265C1[] = {
  ABISELECT(128,68),
  0,
  (VTBL_ENTRY)&(_ZTI8S20265C1[0]),
  (VTBL_ENTRY)&_ZN8S20265C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20265C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20265C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20265C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20265C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20265C12v4Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-128,-68),
  ABISELECT(-128,-68),
  (VTBL_ENTRY)&(_ZTI8S20265C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20265C1D1Ev,_ZTv0_n12_N8S20265C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20265C1D0Ev,_ZTv0_n12_N8S20265C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20265C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20265C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20265C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20265C23v11Ev,
};
extern VTBL_ENTRY _ZTV8S20265C1[];
static  VTT_ENTRY vtt_S20265C1[] = {
  {&(_ZTV8S20265C1[3]),  3,28},
  {&(_ZTV8S20265C1[19]),  19,28},
};
extern VTBL_ENTRY _ZTI8S20265C1[];
extern  VTBL_ENTRY _ZTV8S20265C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20265C1[];
static VTBL_ENTRY alt_thunk_names153[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20265C1D0Ev,_ZTv0_n12_N8S20265C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20265C1D0Ev,_ZThn68_N8S20265C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20265C1D1Ev,_ZTv0_n12_N8S20265C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20265C1D1Ev,_ZThn68_N8S20265C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20265C1 = {  "S20265C1", // class name
  bases_S20265C1, 1,
  &(vtc_S20265C1[0]), // expected_vtbl_contents
  &(vtt_S20265C1[0]), // expected_vtt_contents
  ABISELECT(200,104), // object size
  NSPAIRA(_ZTI8S20265C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20265C1),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20265C1),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names153,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20907C3  {
  __tsi64 s20907c3f0;
  int s20907c3f1[7];
  virtual void  v7(); // _ZN8S20907C32v7Ev
  virtual void  v8(); // _ZN8S20907C32v8Ev
  virtual void  v9(); // _ZN8S20907C32v9Ev
  virtual void  v10(); // _ZN8S20907C33v10Ev
  virtual void  v11(); // _ZN8S20907C33v11Ev
  virtual void  v12(); // _ZN8S20907C33v12Ev
  ~S20907C3(); // tgen
  S20907C3(); // tgen
};
//SIG(-1 S20907C3) C1{ v1 v2 v3 v4 v5 v6 FL Fi[7]}


void  S20907C3 ::v7(){vfunc_called(this, "_ZN8S20907C32v7Ev");}
void  S20907C3 ::v8(){vfunc_called(this, "_ZN8S20907C32v8Ev");}
void  S20907C3 ::v9(){vfunc_called(this, "_ZN8S20907C32v9Ev");}
void  S20907C3 ::v10(){vfunc_called(this, "_ZN8S20907C33v10Ev");}
void  S20907C3 ::v11(){vfunc_called(this, "_ZN8S20907C33v11Ev");}
void  S20907C3 ::v12(){vfunc_called(this, "_ZN8S20907C33v12Ev");}
S20907C3 ::~S20907C3(){ note_dtor("S20907C3", this);} // tgen
S20907C3 ::S20907C3(){ note_ctor("S20907C3", this);} // tgen

static void Test_S20907C3()
{
  extern Class_Descriptor cd_S20907C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S20907C3, buf);
    S20907C3 *dp, &lv = *(dp=new (buf) S20907C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S20907C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20907C3)");
    check_field_offset(lv, s20907c3f0, ABISELECT(8,4), "S20907C3.s20907c3f0");
    check_field_offset(lv, s20907c3f1, ABISELECT(16,12), "S20907C3.s20907c3f1");
    test_class_info(&lv, &cd_S20907C3);
    dp->~S20907C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20907C3(Test_S20907C3, "S20907C3", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN8S20907C3C1Ev();
extern void _ZN8S20907C3D1Ev();
Name_Map name_map_S20907C3[] = {
  NSPAIR(_ZN8S20907C3C1Ev),
  NSPAIR(_ZN8S20907C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20907C3[];
extern void _ZN8S20907C32v7Ev();
extern void _ZN8S20907C32v8Ev();
extern void _ZN8S20907C32v9Ev();
extern void _ZN8S20907C33v10Ev();
extern void _ZN8S20907C33v11Ev();
extern void _ZN8S20907C33v12Ev();
static  VTBL_ENTRY vtc_S20907C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20907C3[0]),
  (VTBL_ENTRY)&_ZN8S20907C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v12Ev,
};
extern VTBL_ENTRY _ZTI8S20907C3[];
extern  VTBL_ENTRY _ZTV8S20907C3[];
Class_Descriptor cd_S20907C3 = {  "S20907C3", // class name
  0,0,//no base classes
  &(vtc_S20907C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI8S20907C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20907C3),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  S20907C4  {
  char s20907c4f0;
  void *s20907c4f1;
  int s20907c4f2;
  __tsi64 s20907c4f3:8;
  virtual void  v13(); // _ZN8S20907C43v13Ev
  virtual void  v14(); // _ZN8S20907C43v14Ev
  virtual void  v15(); // _ZN8S20907C43v15Ev
  virtual void  v16(); // _ZN8S20907C43v16Ev
  ~S20907C4(); // tgen
  S20907C4(); // tgen
};
//SIG(-1 S20907C4) C1{ v1 v2 v3 v4 Fc Fp Fi FL:8}


void  S20907C4 ::v13(){vfunc_called(this, "_ZN8S20907C43v13Ev");}
void  S20907C4 ::v14(){vfunc_called(this, "_ZN8S20907C43v14Ev");}
void  S20907C4 ::v15(){vfunc_called(this, "_ZN8S20907C43v15Ev");}
void  S20907C4 ::v16(){vfunc_called(this, "_ZN8S20907C43v16Ev");}
S20907C4 ::~S20907C4(){ note_dtor("S20907C4", this);} // tgen
S20907C4 ::S20907C4(){ note_ctor("S20907C4", this);} // tgen

static void Test_S20907C4()
{
  extern Class_Descriptor cd_S20907C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S20907C4, buf);
    S20907C4 *dp, &lv = *(dp=new (buf) S20907C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S20907C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20907C4)");
    check_field_offset(lv, s20907c4f0, ABISELECT(8,4), "S20907C4.s20907c4f0");
    check_field_offset(lv, s20907c4f1, ABISELECT(16,8), "S20907C4.s20907c4f1");
    check_field_offset(lv, s20907c4f2, ABISELECT(24,12), "S20907C4.s20907c4f2");
    set_bf_and_test(lv, s20907c4f3, ABISELECT(28,16), 0, 8, 1, "S20907C4");
    set_bf_and_test(lv, s20907c4f3, ABISELECT(28,16), 0, 8, hide_sll(1LL<<7), "S20907C4");
    test_class_info(&lv, &cd_S20907C4);
    dp->~S20907C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20907C4(Test_S20907C4, "S20907C4", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S20907C4C1Ev();
extern void _ZN8S20907C4D1Ev();
Name_Map name_map_S20907C4[] = {
  NSPAIR(_ZN8S20907C4C1Ev),
  NSPAIR(_ZN8S20907C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20907C4[];
extern void _ZN8S20907C43v13Ev();
extern void _ZN8S20907C43v14Ev();
extern void _ZN8S20907C43v15Ev();
extern void _ZN8S20907C43v16Ev();
static  VTBL_ENTRY vtc_S20907C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20907C4[0]),
  (VTBL_ENTRY)&_ZN8S20907C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v16Ev,
};
extern VTBL_ENTRY _ZTI8S20907C4[];
extern  VTBL_ENTRY _ZTV8S20907C4[];
Class_Descriptor cd_S20907C4 = {  "S20907C4", // class name
  0,0,//no base classes
  &(vtc_S20907C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S20907C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20907C4),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  S20907C2  : virtual S20907C3 , virtual S20907C4 {
  virtual void  v17(); // _ZN8S20907C23v17Ev
  virtual void  v18(); // _ZN8S20907C23v18Ev
  virtual void  v19(); // _ZN8S20907C23v19Ev
  virtual void  v20(); // _ZN8S20907C23v20Ev
  virtual void  v21(); // _ZN8S20907C23v21Ev
  ~S20907C2(); // tgen
  S20907C2(); // tgen
};
//SIG(-1 S20907C2) C1{ VBC2{ v6 v7 v8 v9 v10 v11 FL Fi[7]} VBC3{ v12 v13 v14 v15 Fc Fp Fi FL:8} v1 v2 v3 v4 v5}


void  S20907C2 ::v17(){vfunc_called(this, "_ZN8S20907C23v17Ev");}
void  S20907C2 ::v18(){vfunc_called(this, "_ZN8S20907C23v18Ev");}
void  S20907C2 ::v19(){vfunc_called(this, "_ZN8S20907C23v19Ev");}
void  S20907C2 ::v20(){vfunc_called(this, "_ZN8S20907C23v20Ev");}
void  S20907C2 ::v21(){vfunc_called(this, "_ZN8S20907C23v21Ev");}
S20907C2 ::~S20907C2(){ note_dtor("S20907C2", this);} // tgen
S20907C2 ::S20907C2(){ note_ctor("S20907C2", this);} // tgen

static void Test_S20907C2()
{
  extern Class_Descriptor cd_S20907C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,17)];
    init_test(&cd_S20907C2, buf);
    S20907C2 *dp, &lv = *(dp=new (buf) S20907C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S20907C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20907C2)");
    check_base_class_offset(lv, (S20907C3*), ABISELECT(8,4), "S20907C2");
    check_base_class_offset(lv, (S20907C4*), ABISELECT(56,44), "S20907C2");
    test_class_info(&lv, &cd_S20907C2);
    dp->~S20907C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20907C2(Test_S20907C2, "S20907C2", ABISELECT(88,64));

#else // __cplusplus

extern void _ZN8S20907C2C1Ev();
extern void _ZN8S20907C2D1Ev();
Name_Map name_map_S20907C2[] = {
  NSPAIR(_ZN8S20907C2C1Ev),
  NSPAIR(_ZN8S20907C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20907C3;
extern VTBL_ENTRY _ZTI8S20907C3[];
extern  VTBL_ENTRY _ZTV8S20907C3[];
extern Class_Descriptor cd_S20907C4;
extern VTBL_ENTRY _ZTI8S20907C4[];
extern  VTBL_ENTRY _ZTV8S20907C4[];
static Base_Class bases_S20907C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20907C3,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20907C4,    ABISELECT(56,44), //bcp->offset
    23, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20907C2[];
extern void _ZN8S20907C23v17Ev();
extern void _ZN8S20907C23v18Ev();
extern void _ZN8S20907C23v19Ev();
extern void _ZN8S20907C23v20Ev();
extern void _ZN8S20907C23v21Ev();
extern void _ZN8S20907C32v7Ev();
extern void _ZN8S20907C32v8Ev();
extern void _ZN8S20907C32v9Ev();
extern void _ZN8S20907C33v10Ev();
extern void _ZN8S20907C33v11Ev();
extern void _ZN8S20907C33v12Ev();
extern void _ZN8S20907C43v13Ev();
extern void _ZN8S20907C43v14Ev();
extern void _ZN8S20907C43v15Ev();
extern void _ZN8S20907C43v16Ev();
static  VTBL_ENTRY vtc_S20907C2[] = {
  ABISELECT(56,44),
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20907C2[0]),
  (VTBL_ENTRY)&_ZN8S20907C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v21Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20907C2[0]),
  (VTBL_ENTRY)&_ZN8S20907C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-56,-44),
  (VTBL_ENTRY)&(_ZTI8S20907C2[0]),
  (VTBL_ENTRY)&_ZN8S20907C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v16Ev,
};
extern VTBL_ENTRY _ZTV8S20907C2[];
static  VTT_ENTRY vtt_S20907C2[] = {
  {&(_ZTV8S20907C2[4]),  4,33},
  {&(_ZTV8S20907C2[17]),  17,33},
  {&(_ZTV8S20907C2[29]),  29,33},
};
extern VTBL_ENTRY _ZTI8S20907C2[];
extern  VTBL_ENTRY _ZTV8S20907C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20907C2[];
Class_Descriptor cd_S20907C2 = {  "S20907C2", // class name
  bases_S20907C2, 2,
  &(vtc_S20907C2[0]), // expected_vtbl_contents
  &(vtt_S20907C2[0]), // expected_vtt_contents
  ABISELECT(88,64), // object size
  NSPAIRA(_ZTI8S20907C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20907C2),33, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20907C2),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  S20907C1  : virtual S20907C2 {
  ::S10296C15_nt s20907c1f0;
  virtual void  v1(); // _ZN8S20907C12v1Ev
  virtual void  v2(); // _ZN8S20907C12v2Ev
  virtual void  v3(); // _ZN8S20907C12v3Ev
  virtual void  v4(); // _ZN8S20907C12v4Ev
  virtual void  v5(); // _ZN8S20907C12v5Ev
  virtual void  v6(); // _ZN8S20907C12v6Ev
  ~S20907C1(); // tgen
  S20907C1(); // tgen
};
//SIG(1 S20907C1) C1{ VBC2{ VBC3{ v7 v8 v9 v10 v11 v12 FL Fi[7]} VBC4{ v13 v14 v15 v16 Fc Fp Fi FL:8} v17 v18 v19 v20 v21} v1 v2 v3 v4 v5 v6 FC5{}}


void  S20907C1 ::v1(){vfunc_called(this, "_ZN8S20907C12v1Ev");}
void  S20907C1 ::v2(){vfunc_called(this, "_ZN8S20907C12v2Ev");}
void  S20907C1 ::v3(){vfunc_called(this, "_ZN8S20907C12v3Ev");}
void  S20907C1 ::v4(){vfunc_called(this, "_ZN8S20907C12v4Ev");}
void  S20907C1 ::v5(){vfunc_called(this, "_ZN8S20907C12v5Ev");}
void  S20907C1 ::v6(){vfunc_called(this, "_ZN8S20907C12v6Ev");}
S20907C1 ::~S20907C1(){ note_dtor("S20907C1", this);} // tgen
S20907C1 ::S20907C1(){ note_ctor("S20907C1", this);} // tgen

static void Test_S20907C1()
{
  extern Class_Descriptor cd_S20907C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,18)];
    init_test(&cd_S20907C1, buf);
    S20907C1 *dp, &lv = *(dp=new (buf) S20907C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,68), "sizeof(S20907C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20907C1)");
    check_base_class_offset(lv, (S20907C3*)(S20907C2*), ABISELECT(16,8), "S20907C1");
    check_base_class_offset(lv, (S20907C4*)(S20907C2*), ABISELECT(64,48), "S20907C1");
    check_base_class_offset(lv, (S20907C2*), 0, "S20907C1");
    check_field_offset(lv, s20907c1f0, ABISELECT(8,4), "S20907C1.s20907c1f0");
    test_class_info(&lv, &cd_S20907C1);
    dp->~S20907C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20907C1(Test_S20907C1, "S20907C1", ABISELECT(96,68));

#else // __cplusplus

extern void _ZN8S20907C1C1Ev();
extern void _ZN8S20907C1D1Ev();
Name_Map name_map_S20907C1[] = {
  NSPAIR(_ZN8S20907C1C1Ev),
  NSPAIR(_ZN8S20907C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20907C3;
extern VTBL_ENTRY _ZTI8S20907C3[];
extern  VTBL_ENTRY _ZTV8S20907C3[];
extern Class_Descriptor cd_S20907C4;
extern VTBL_ENTRY _ZTI8S20907C4[];
extern  VTBL_ENTRY _ZTV8S20907C4[];
extern Class_Descriptor cd_S20907C2;
extern VTBL_ENTRY _ZTI8S20907C2[];
extern  VTBL_ENTRY _ZTV8S20907C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20907C2[];
static Base_Class bases_S20907C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20907C3,    ABISELECT(16,8), //bcp->offset
    21, //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
    2, //immediately_derived
  0, 1},
  {&cd_S20907C4,    ABISELECT(64,48), //bcp->offset
    35, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S20907C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20907C1[];
extern void _ZN8S20907C23v17Ev();
extern void _ZN8S20907C23v18Ev();
extern void _ZN8S20907C23v19Ev();
extern void _ZN8S20907C23v20Ev();
extern void _ZN8S20907C23v21Ev();
extern void _ZN8S20907C12v1Ev();
extern void _ZN8S20907C12v2Ev();
extern void _ZN8S20907C12v3Ev();
extern void _ZN8S20907C12v4Ev();
extern void _ZN8S20907C12v5Ev();
extern void _ZN8S20907C12v6Ev();
extern void _ZN8S20907C32v7Ev();
extern void _ZN8S20907C32v8Ev();
extern void _ZN8S20907C32v9Ev();
extern void _ZN8S20907C33v10Ev();
extern void _ZN8S20907C33v11Ev();
extern void _ZN8S20907C33v12Ev();
extern void _ZN8S20907C43v13Ev();
extern void _ZN8S20907C43v14Ev();
extern void _ZN8S20907C43v15Ev();
extern void _ZN8S20907C43v16Ev();
static  VTBL_ENTRY vtc_S20907C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(64,48),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20907C1[0]),
  (VTBL_ENTRY)&_ZN8S20907C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v21Ev,
  (VTBL_ENTRY)&_ZN8S20907C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20907C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20907C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20907C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20907C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20907C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20907C1[0]),
  (VTBL_ENTRY)&_ZN8S20907C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v12Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20907C1[0]),
  (VTBL_ENTRY)&_ZN8S20907C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v16Ev,
};
extern VTBL_ENTRY _ZTV8S20907C1[];
extern void _ZN8S20907C23v17Ev();
extern void _ZN8S20907C23v18Ev();
extern void _ZN8S20907C23v19Ev();
extern void _ZN8S20907C23v20Ev();
extern void _ZN8S20907C23v21Ev();
static  VTBL_ENTRY _tg__ZTV8S20907C2__8S20907C1[] = {
  ABISELECT(64,48),
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI8S20907C2[0]),
  (VTBL_ENTRY)&_ZN8S20907C23v17Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v18Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v19Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v20Ev,
  (VTBL_ENTRY)&_ZN8S20907C23v21Ev,
};
extern void _ZN8S20907C32v7Ev();
extern void _ZN8S20907C32v8Ev();
extern void _ZN8S20907C32v9Ev();
extern void _ZN8S20907C33v10Ev();
extern void _ZN8S20907C33v11Ev();
extern void _ZN8S20907C33v12Ev();
static  VTBL_ENTRY _tg__ZTV8S20907C3__8S20907C2__8S20907C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S20907C2[0]),
  (VTBL_ENTRY)&_ZN8S20907C32v7Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20907C32v9Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v10Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v11Ev,
  (VTBL_ENTRY)&_ZN8S20907C33v12Ev,
};
extern void _ZN8S20907C43v13Ev();
extern void _ZN8S20907C43v14Ev();
extern void _ZN8S20907C43v15Ev();
extern void _ZN8S20907C43v16Ev();
static  VTBL_ENTRY _tg__ZTV8S20907C4__8S20907C2__8S20907C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(-64,-48),
  (VTBL_ENTRY)&(_ZTI8S20907C2[0]),
  (VTBL_ENTRY)&_ZN8S20907C43v13Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v14Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v15Ev,
  (VTBL_ENTRY)&_ZN8S20907C43v16Ev,
};
static  VTT_ENTRY vtt_S20907C1[] = {
  {&(_ZTV8S20907C1[10]),  10,45},
  {&(_ZTV8S20907C1[10]),  10,45},
  {&(_ZTV8S20907C1[29]),  29,45},
  {&(_ZTV8S20907C1[41]),  41,45},
  {&(_tg__ZTV8S20907C2__8S20907C1[4]),  4,9},
  {&(_tg__ZTV8S20907C3__8S20907C2__8S20907C1[8]),  8,14},
  {&(_tg__ZTV8S20907C4__8S20907C2__8S20907C1[6]),  6,10},
};
extern VTBL_ENTRY _ZTI8S20907C1[];
extern  VTBL_ENTRY _ZTV8S20907C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20907C1[];
Class_Descriptor cd_S20907C1 = {  "S20907C1", // class name
  bases_S20907C1, 3,
  &(vtc_S20907C1[0]), // expected_vtbl_contents
  &(vtt_S20907C1[0]), // expected_vtt_contents
  ABISELECT(96,68), // object size
  NSPAIRA(_ZTI8S20907C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20907C1),45, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20907C1),7, //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  S19550C4  {
  long double s19550c4f0;
  virtual  ~S19550C4(); // _ZN8S19550C4D1Ev
  virtual void  v7(); // _ZN8S19550C42v7Ev
  S19550C4(); // tgen
};
//SIG(-1 S19550C4) C1{ vd v1 FD}


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

static void Test_S19550C4()
{
  extern Class_Descriptor cd_S19550C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S19550C4, buf);
    S19550C4 *dp, &lv = *(dp=new (buf) S19550C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19550C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19550C4)");
    check_field_offset(lv, s19550c4f0, ABISELECT(16,4), "S19550C4.s19550c4f0");
    test_class_info(&lv, &cd_S19550C4);
    dp->~S19550C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19550C4(Test_S19550C4, "S19550C4", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19550C4C1Ev();
extern void _ZN8S19550C4D1Ev();
Name_Map name_map_S19550C4[] = {
  NSPAIR(_ZN8S19550C4C1Ev),
  NSPAIR(_ZN8S19550C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19550C4[];
extern void _ZN8S19550C4D1Ev();
extern void _ZN8S19550C4D0Ev();
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY vtc_S19550C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C4[0]),
  (VTBL_ENTRY)&_ZN8S19550C4D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C4D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
Class_Descriptor cd_S19550C4 = {  "S19550C4", // class name
  0,0,//no base classes
  &(vtc_S19550C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19550C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19550C4),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  S19550C5  : S19550C4 {
  int s19550c5f0[3];
  virtual void  v8(); // _ZN8S19550C52v8Ev
  virtual void  v9(); // _ZN8S19550C52v9Ev
  virtual void  v10(); // _ZN8S19550C53v10Ev
  ~S19550C5(); // tgen
  S19550C5(); // tgen
};
//SIG(-1 S19550C5) C1{ BC2{ vd v4 FD} v1 v2 v3 Fi[3]}


void  S19550C5 ::v8(){vfunc_called(this, "_ZN8S19550C52v8Ev");}
void  S19550C5 ::v9(){vfunc_called(this, "_ZN8S19550C52v9Ev");}
void  S19550C5 ::v10(){vfunc_called(this, "_ZN8S19550C53v10Ev");}
S19550C5 ::~S19550C5(){ note_dtor("S19550C5", this);} // tgen
S19550C5 ::S19550C5(){ note_ctor("S19550C5", this);} // tgen

static void Test_S19550C5()
{
  extern Class_Descriptor cd_S19550C5;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S19550C5, buf);
    S19550C5 *dp, &lv = *(dp=new (buf) S19550C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S19550C5)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19550C5)");
    check_base_class_offset(lv, (S19550C4*), 0, "S19550C5");
    check_field_offset(lv, s19550c5f0, ABISELECT(32,16), "S19550C5.s19550c5f0");
    test_class_info(&lv, &cd_S19550C5);
    dp->~S19550C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19550C5(Test_S19550C5, "S19550C5", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S19550C5C1Ev();
extern void _ZN8S19550C5D1Ev();
Name_Map name_map_S19550C5[] = {
  NSPAIR(_ZN8S19550C5C1Ev),
  NSPAIR(_ZN8S19550C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
static Base_Class bases_S19550C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19550C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19550C5[];
extern void _ZN8S19550C5D1Ev();
extern void _ZN8S19550C5D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
static  VTBL_ENTRY vtc_S19550C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C5[0]),
  (VTBL_ENTRY)&_ZN8S19550C5D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C5D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
};
extern VTBL_ENTRY _ZTI8S19550C5[];
extern  VTBL_ENTRY _ZTV8S19550C5[];
Class_Descriptor cd_S19550C5 = {  "S19550C5", // class name
  bases_S19550C5, 1,
  &(vtc_S19550C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S19550C5),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19550C5),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19550C3  : virtual S19550C4 , S19550C5 {
  virtual  ~S19550C3(); // _ZN8S19550C3D2Ev
  virtual void  v11(); // _ZN8S19550C33v11Ev
  virtual void  v12(); // _ZN8S19550C33v12Ev
  virtual void  v13(); // _ZN8S19550C33v13Ev
  virtual void  v14(); // _ZN8S19550C33v14Ev
  S19550C3(); // tgen
};
//SIG(-1 S19550C3) C1{ VBC2{ vd v5 FD} BC3{ BC2 v6 v7 v8 Fi[3]} vd v1 v2 v3 v4}


 S19550C3 ::~S19550C3(){ note_dtor("S19550C3", this);}
void  S19550C3 ::v11(){vfunc_called(this, "_ZN8S19550C33v11Ev");}
void  S19550C3 ::v12(){vfunc_called(this, "_ZN8S19550C33v12Ev");}
void  S19550C3 ::v13(){vfunc_called(this, "_ZN8S19550C33v13Ev");}
void  S19550C3 ::v14(){vfunc_called(this, "_ZN8S19550C33v14Ev");}
S19550C3 ::S19550C3(){ note_ctor("S19550C3", this);} // tgen

static void Test_S19550C3()
{
  extern Class_Descriptor cd_S19550C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S19550C3, buf);
    S19550C3 *dp, &lv = *(dp=new (buf) S19550C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S19550C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19550C3)");
    /*is_ambiguous_... S19550C3::S19550C4 */ AMB_check_base_class_offset(lv, (S19550C4*), ABISELECT(48,28), "S19550C3");
    check_base_class_offset(lv, (S19550C4*)(S19550C5*), 0, "S19550C3");
    check_base_class_offset(lv, (S19550C5*), 0, "S19550C3");
    test_class_info(&lv, &cd_S19550C3);
    dp->~S19550C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19550C3(Test_S19550C3, "S19550C3", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S19550C3C1Ev();
extern void _ZN8S19550C3D2Ev();
Name_Map name_map_S19550C3[] = {
  NSPAIR(_ZN8S19550C3C1Ev),
  NSPAIR(_ZN8S19550C3D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C5;
extern VTBL_ENTRY _ZTI8S19550C5[];
extern  VTBL_ENTRY _ZTV8S19550C5[];
static Base_Class bases_S19550C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19550C4,    ABISELECT(48,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19550C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19550C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S19550C3[];
extern void _ZN8S19550C3D1Ev();
extern void _ZN8S19550C3D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
extern void ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19550C3D1Ev,_ZThn28_N8S19550C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19550C3D0Ev,_ZThn28_N8S19550C3D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY vtc_S19550C3[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&_ZN8S19550C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S19550C3[];
static  VTT_ENTRY vtt_S19550C3[] = {
  {&(_ZTV8S19550C3[3]),  3,20},
  {&(_ZTV8S19550C3[17]),  17,20},
};
extern VTBL_ENTRY _ZTI8S19550C3[];
extern  VTBL_ENTRY _ZTV8S19550C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C3[];
static VTBL_ENTRY alt_thunk_names154[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C3D0Ev,_ZThn28_N8S19550C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C3D1Ev,_ZThn28_N8S19550C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19550C3 = {  "S19550C3", // class name
  bases_S19550C3, 3,
  &(vtc_S19550C3[0]), // expected_vtbl_contents
  &(vtt_S19550C3[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S19550C3),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19550C3),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19550C3),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names154,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19550C2  : S19550C3 {
  int s19550c2f0;
  virtual void  v15(); // _ZN8S19550C23v15Ev
  virtual void  v16(); // _ZN8S19550C23v16Ev
  virtual void  v17(); // _ZN8S19550C23v17Ev
  virtual void  v18(); // _ZN8S19550C23v18Ev
  virtual void  v19(); // _ZN8S19550C23v19Ev
  virtual void  v20(); // _ZN8S19550C23v20Ev
  ~S19550C2(); // tgen
  S19550C2(); // tgen
};
//SIG(-1 S19550C2) C1{ BC2{ VBC3{ vd v7 FD} BC4{ BC3 v8 v9 v10 Fi[3]} vd v11 v12 v13 v14} v1 v2 v3 v4 v5 v6 Fi}


void  S19550C2 ::v15(){vfunc_called(this, "_ZN8S19550C23v15Ev");}
void  S19550C2 ::v16(){vfunc_called(this, "_ZN8S19550C23v16Ev");}
void  S19550C2 ::v17(){vfunc_called(this, "_ZN8S19550C23v17Ev");}
void  S19550C2 ::v18(){vfunc_called(this, "_ZN8S19550C23v18Ev");}
void  S19550C2 ::v19(){vfunc_called(this, "_ZN8S19550C23v19Ev");}
void  S19550C2 ::v20(){vfunc_called(this, "_ZN8S19550C23v20Ev");}
S19550C2 ::~S19550C2(){ note_dtor("S19550C2", this);} // tgen
S19550C2 ::S19550C2(){ note_ctor("S19550C2", this);} // tgen

static void Test_S19550C2()
{
  extern Class_Descriptor cd_S19550C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,13)];
    init_test(&cd_S19550C2, buf);
    S19550C2 *dp, &lv = *(dp=new (buf) S19550C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S19550C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19550C2)");
    /*is_ambiguous_... S19550C3::S19550C4 */ AMB_check_base_class_offset(lv, (S19550C4*)(S19550C3*), ABISELECT(48,32), "S19550C2");
    check_base_class_offset(lv, (S19550C4*)(S19550C5*)(S19550C3*), 0, "S19550C2");
    check_base_class_offset(lv, (S19550C5*)(S19550C3*), 0, "S19550C2");
    check_base_class_offset(lv, (S19550C3*), 0, "S19550C2");
    check_field_offset(lv, s19550c2f0, ABISELECT(44,28), "S19550C2.s19550c2f0");
    test_class_info(&lv, &cd_S19550C2);
    dp->~S19550C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19550C2(Test_S19550C2, "S19550C2", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S19550C2C1Ev();
extern void _ZN8S19550C2D1Ev();
Name_Map name_map_S19550C2[] = {
  NSPAIR(_ZN8S19550C2C1Ev),
  NSPAIR(_ZN8S19550C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C5;
extern VTBL_ENTRY _ZTI8S19550C5[];
extern  VTBL_ENTRY _ZTV8S19550C5[];
extern Class_Descriptor cd_S19550C3;
extern VTBL_ENTRY _ZTI8S19550C3[];
extern  VTBL_ENTRY _ZTV8S19550C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C3[];
static Base_Class bases_S19550C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19550C4,    ABISELECT(48,32), //bcp->offset
    19, //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
    3, //immediately_derived
  0, 1},
  {&cd_S19550C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19550C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S19550C3,    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 _ZTI8S19550C2[];
extern void _ZN8S19550C2D1Ev();
extern void _ZN8S19550C2D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
extern void _ZN8S19550C23v15Ev();
extern void _ZN8S19550C23v16Ev();
extern void _ZN8S19550C23v17Ev();
extern void _ZN8S19550C23v18Ev();
extern void _ZN8S19550C23v19Ev();
extern void _ZN8S19550C23v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S19550C2D1Ev,_ZTv0_n12_N8S19550C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19550C2D1Ev,_ZThn32_N8S19550C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C2D0Ev,_ZTv0_n12_N8S19550C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19550C2D0Ev,_ZThn32_N8S19550C2D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY vtc_S19550C2[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C2[0]),
  (VTBL_ENTRY)&_ZN8S19550C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v20Ev,
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19550C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C2D1Ev,_ZTv0_n12_N8S19550C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C2D0Ev,_ZTv0_n12_N8S19550C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S19550C2[];
extern void _ZN8S19550C3D1Ev();
extern void _ZN8S19550C3D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C3__8S19550C2[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&_ZN8S19550C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19550C3D1Ev,_ZThn32_N8S19550C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19550C3D0Ev,_ZThn32_N8S19550C3D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C4__8S19550C3__8S19550C2[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
static  VTT_ENTRY vtt_S19550C2[] = {
  {&(_ZTV8S19550C2[3]),  3,26},
  {&(_tg__ZTV8S19550C3__8S19550C2[3]),  3,13},
  {&(_tg__ZTV8S19550C4__8S19550C3__8S19550C2[4]),  4,7},
  {&(_ZTV8S19550C2[23]),  23,26},
};
extern VTBL_ENTRY _ZTI8S19550C2[];
extern  VTBL_ENTRY _ZTV8S19550C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C2[];
static VTBL_ENTRY alt_thunk_names155[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C3D0Ev,_ZThn32_N8S19550C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C3D1Ev,_ZThn32_N8S19550C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C2D0Ev,_ZTv0_n12_N8S19550C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C2D0Ev,_ZThn32_N8S19550C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C2D1Ev,_ZTv0_n12_N8S19550C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C2D1Ev,_ZThn32_N8S19550C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19550C2 = {  "S19550C2", // class name
  bases_S19550C2, 4,
  &(vtc_S19550C2[0]), // expected_vtbl_contents
  &(vtt_S19550C2[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S19550C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19550C2),26, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19550C2),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names155,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19550C1  : virtual S19550C2 , S19550C3 {
  virtual  ~S19550C1(); // _ZN8S19550C1D2Ev
  virtual void  v1(); // _ZN8S19550C12v1Ev
  virtual void  v2(); // _ZN8S19550C12v2Ev
  virtual void  v3(); // _ZN8S19550C12v3Ev
  virtual void  v4(); // _ZN8S19550C12v4Ev
  virtual void  v5(); // _ZN8S19550C12v5Ev
  virtual void  v6(); // _ZN8S19550C12v6Ev
  S19550C1(); // tgen
};
//SIG(1 S19550C1) C1{ VBC2{ BC3{ VBC4{ vd v7 FD} BC5{ BC4 v8 v9 v10 Fi[3]} vd v11 v12 v13 v14} v15 v16 v17 v18 v19 v20 Fi} BC3 vd v1 v2 v3 v4 v5 v6}


 S19550C1 ::~S19550C1(){ note_dtor("S19550C1", this);}
void  S19550C1 ::v1(){vfunc_called(this, "_ZN8S19550C12v1Ev");}
void  S19550C1 ::v2(){vfunc_called(this, "_ZN8S19550C12v2Ev");}
void  S19550C1 ::v3(){vfunc_called(this, "_ZN8S19550C12v3Ev");}
void  S19550C1 ::v4(){vfunc_called(this, "_ZN8S19550C12v4Ev");}
void  S19550C1 ::v5(){vfunc_called(this, "_ZN8S19550C12v5Ev");}
void  S19550C1 ::v6(){vfunc_called(this, "_ZN8S19550C12v6Ev");}
S19550C1 ::S19550C1(){ note_ctor("S19550C1", this);} // tgen

static void Test_S19550C1()
{
  extern Class_Descriptor cd_S19550C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(9,20)];
    init_test(&cd_S19550C1, buf);
    S19550C1 *dp, &lv = *(dp=new (buf) S19550C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(128,76), "sizeof(S19550C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19550C1)");
    /*is_ambiguous_... S19550C3::S19550C4 */ AMB_check_base_class_offset(lv, (S19550C4*)(S19550C3*)(S19550C2*), ABISELECT(96,60), "S19550C1");
    /*is_ambiguous_... S19550C1::S19550C3 */ AMB_check_base_class_offset(lv, (S19550C4*)(S19550C3*), ABISELECT(96,60), "S19550C1");
    check_base_class_offset(lv, (S19550C4*)(S19550C5*)(S19550C3*)(S19550C2*), ABISELECT(48,28), "S19550C1");
    check_base_class_offset(lv, (S19550C5*)(S19550C3*)(S19550C2*), ABISELECT(48,28), "S19550C1");
    check_base_class_offset(lv, (S19550C3*)(S19550C2*), ABISELECT(48,28), "S19550C1");
    check_base_class_offset(lv, (S19550C2*), ABISELECT(48,28), "S19550C1");
    /*is_ambiguous_... S19550C1::S19550C3 */ AMB_check_base_class_offset(lv, (S19550C4*)(S19550C5*)(S19550C3*), 0, "S19550C1");
    /*is_ambiguous_... S19550C1::S19550C3 */ AMB_check_base_class_offset(lv, (S19550C5*)(S19550C3*), 0, "S19550C1");
    /*is_ambiguous_... S19550C1::S19550C3 */ AMB_check_base_class_offset(lv, (S19550C3*), 0, "S19550C1");
    test_class_info(&lv, &cd_S19550C1);
    dp->~S19550C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19550C1(Test_S19550C1, "S19550C1", ABISELECT(128,76));

#else // __cplusplus

extern void _ZN8S19550C1C1Ev();
extern void _ZN8S19550C1D2Ev();
Name_Map name_map_S19550C1[] = {
  NSPAIR(_ZN8S19550C1C1Ev),
  NSPAIR(_ZN8S19550C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C5;
extern VTBL_ENTRY _ZTI8S19550C5[];
extern  VTBL_ENTRY _ZTV8S19550C5[];
extern Class_Descriptor cd_S19550C3;
extern VTBL_ENTRY _ZTI8S19550C3[];
extern  VTBL_ENTRY _ZTV8S19550C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C3[];
extern Class_Descriptor cd_S19550C2;
extern VTBL_ENTRY _ZTI8S19550C2[];
extern  VTBL_ENTRY _ZTV8S19550C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C2[];
extern Class_Descriptor cd_S19550C4;
extern VTBL_ENTRY _ZTI8S19550C4[];
extern  VTBL_ENTRY _ZTV8S19550C4[];
extern Class_Descriptor cd_S19550C5;
extern VTBL_ENTRY _ZTI8S19550C5[];
extern  VTBL_ENTRY _ZTV8S19550C5[];
extern Class_Descriptor cd_S19550C3;
extern VTBL_ENTRY _ZTI8S19550C3[];
extern  VTBL_ENTRY _ZTV8S19550C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C3[];
static Base_Class bases_S19550C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19550C4,    ABISELECT(96,60), //bcp->offset
    54, //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_S19550C4,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S19550C5,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S19550C3,    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
    4, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19550C2,    ABISELECT(48,28), //bcp->offset
    20, //bcp->virtual_function_table_offset
    18, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19550C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19550C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S19550C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    8, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19550C1[];
extern void _ZN8S19550C1D1Ev();
extern void _ZN8S19550C1D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
extern void _ZN8S19550C12v1Ev();
extern void _ZN8S19550C12v2Ev();
extern void _ZN8S19550C12v3Ev();
extern void _ZN8S19550C12v4Ev();
extern void _ZN8S19550C12v5Ev();
extern void _ZN8S19550C12v6Ev();
extern void ABISELECT(_ZTv0_n32_N8S19550C1D1Ev,_ZTv0_n16_N8S19550C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19550C1D1Ev,_ZThn28_N8S19550C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S19550C1D0Ev,_ZTv0_n16_N8S19550C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19550C1D0Ev,_ZThn28_N8S19550C1D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
extern void _ZN8S19550C23v15Ev();
extern void _ZN8S19550C23v16Ev();
extern void _ZN8S19550C23v17Ev();
extern void _ZN8S19550C23v18Ev();
extern void _ZN8S19550C23v19Ev();
extern void _ZN8S19550C23v20Ev();
extern void ABISELECT(_ZTv0_n24_N8S19550C1D1Ev,_ZTv0_n12_N8S19550C1D1Ev)();
extern void ABISELECT(_ZThn96_N8S19550C1D1Ev,_ZThn60_N8S19550C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C1D0Ev,_ZTv0_n12_N8S19550C1D0Ev)();
extern void ABISELECT(_ZThn96_N8S19550C1D0Ev,_ZThn60_N8S19550C1D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY vtc_S19550C1[] = {
  ABISELECT(48,28),
  ABISELECT(96,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C1[0]),
  (VTBL_ENTRY)&_ZN8S19550C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19550C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19550C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19550C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19550C12v4Ev,
  (VTBL_ENTRY)&_ZN8S19550C12v5Ev,
  (VTBL_ENTRY)&_ZN8S19550C12v6Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  ABISELECT(48,32),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S19550C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19550C1D1Ev,_ZTv0_n16_N8S19550C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S19550C1D0Ev,_ZTv0_n16_N8S19550C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v20Ev,
  0,
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19550C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C1D1Ev,_ZTv0_n12_N8S19550C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C1D0Ev,_ZTv0_n12_N8S19550C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
extern VTBL_ENTRY _ZTV8S19550C1[];
extern void _ZN8S19550C3D1Ev();
extern void _ZN8S19550C3D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C3__A1__8S19550C1[] = {
  ABISELECT(96,60),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&_ZN8S19550C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev)();
extern void ABISELECT(_ZThn96_N8S19550C3D1Ev,_ZThn60_N8S19550C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev)();
extern void ABISELECT(_ZThn96_N8S19550C3D0Ev,_ZThn60_N8S19550C3D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C4__8S19550C3__A1__8S19550C1[] = {
  0,
  ABISELECT(-96,-60),
  ABISELECT(-96,-60),
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
extern void _ZN8S19550C2D1Ev();
extern void _ZN8S19550C2D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
extern void _ZN8S19550C23v15Ev();
extern void _ZN8S19550C23v16Ev();
extern void _ZN8S19550C23v17Ev();
extern void _ZN8S19550C23v18Ev();
extern void _ZN8S19550C23v19Ev();
extern void _ZN8S19550C23v20Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C2__8S19550C1[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C2[0]),
  (VTBL_ENTRY)&_ZN8S19550C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v15Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v16Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v17Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v18Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v19Ev,
  (VTBL_ENTRY)&_ZN8S19550C23v20Ev,
};
extern void _ZN8S19550C3D1Ev();
extern void _ZN8S19550C3D0Ev();
extern void _ZN8S19550C42v7Ev();
extern void _ZN8S19550C52v8Ev();
extern void _ZN8S19550C52v9Ev();
extern void _ZN8S19550C53v10Ev();
extern void _ZN8S19550C33v11Ev();
extern void _ZN8S19550C33v12Ev();
extern void _ZN8S19550C33v13Ev();
extern void _ZN8S19550C33v14Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C38S19550C2__8S19550C1[] = {
  ABISELECT(48,32),
  0,
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&_ZN8S19550C3D1Ev,
  (VTBL_ENTRY)&_ZN8S19550C3D0Ev,
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v8Ev,
  (VTBL_ENTRY)&_ZN8S19550C52v9Ev,
  (VTBL_ENTRY)&_ZN8S19550C53v10Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v11Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v12Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v13Ev,
  (VTBL_ENTRY)&_ZN8S19550C33v14Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S19550C3D1Ev,_ZThn32_N8S19550C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S19550C3D0Ev,_ZThn32_N8S19550C3D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C4__8S19550C38S19550C2__8S19550C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19550C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19550C2D1Ev,_ZTv0_n12_N8S19550C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S19550C2D1Ev,_ZThn32_N8S19550C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19550C2D0Ev,_ZTv0_n12_N8S19550C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S19550C2D0Ev,_ZThn32_N8S19550C2D0Ev)() __attribute__((weak));
extern void _ZN8S19550C42v7Ev();
static  VTBL_ENTRY _tg__ZTV8S19550C4__8S19550C2__8S19550C1[] = {
  0,
  ABISELECT(-48,-32),
  ABISELECT(-48,-32),
  (VTBL_ENTRY)&(_ZTI8S19550C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C2D1Ev,_ZTv0_n12_N8S19550C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19550C2D0Ev,_ZTv0_n12_N8S19550C2D0Ev),
  (VTBL_ENTRY)&_ZN8S19550C42v7Ev,
};
static  VTT_ENTRY vtt_S19550C1[] = {
  {&(_ZTV8S19550C1[4]),  4,61},
  {&(_tg__ZTV8S19550C3__A1__8S19550C1[3]),  3,13},
  {&(_tg__ZTV8S19550C4__8S19550C3__A1__8S19550C1[4]),  4,7},
  {&(_ZTV8S19550C1[38]),  38,61},
  {&(_ZTV8S19550C1[58]),  58,61},
  {&(_tg__ZTV8S19550C2__8S19550C1[3]),  3,19},
  {&(_tg__ZTV8S19550C38S19550C2__8S19550C1[3]),  3,13},
  {&(_tg__ZTV8S19550C4__8S19550C38S19550C2__8S19550C1[4]),  4,7},
  {&(_tg__ZTV8S19550C4__8S19550C2__8S19550C1[4]),  4,7},
};
extern VTBL_ENTRY _ZTI8S19550C1[];
extern  VTBL_ENTRY _ZTV8S19550C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19550C1[];
static VTBL_ENTRY alt_thunk_names156[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C2D0Ev,_ZTv0_n12_N8S19550C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C2D0Ev,_ZThn32_N8S19550C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C2D1Ev,_ZTv0_n12_N8S19550C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C2D1Ev,_ZThn32_N8S19550C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C3D0Ev,_ZTv0_n12_N8S19550C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C3D0Ev,_ZThn32_N8S19550C3D0Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19550C3D0Ev,_ZThn60_N8S19550C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C3D1Ev,_ZTv0_n12_N8S19550C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C3D1Ev,_ZThn32_N8S19550C3D1Ev),
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19550C3D1Ev,_ZThn60_N8S19550C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C1D0Ev,_ZTv0_n12_N8S19550C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19550C1D0Ev,_ZThn60_N8S19550C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19550C1D1Ev,_ZTv0_n12_N8S19550C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn96_N8S19550C1D1Ev,_ZThn60_N8S19550C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19550C1D0Ev,_ZTv0_n16_N8S19550C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C1D0Ev,_ZThn28_N8S19550C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S19550C1D1Ev,_ZTv0_n16_N8S19550C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19550C1D1Ev,_ZThn28_N8S19550C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19550C1 = {  "S19550C1", // class name
  bases_S19550C1, 8,
  &(vtc_S19550C1[0]), // expected_vtbl_contents
  &(vtt_S19550C1[0]), // expected_vtt_contents
  ABISELECT(128,76), // object size
  NSPAIRA(_ZTI8S19550C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19550C1),61, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19550C1),9, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names156,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9336C2  {
  ::S9624C14_nt s9336c2f0;
  int s9336c2f1[2];
  char s9336c2f2;
  virtual  ~S9336C2(); // _ZN7S9336C2D1Ev
  virtual void  v3(); // _ZN7S9336C22v3Ev
  virtual void  v4(); // _ZN7S9336C22v4Ev
  virtual void  v5(); // _ZN7S9336C22v5Ev
  S9336C2(); // tgen
};
//SIG(-1 S9336C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9336C2 ::~S9336C2(){ note_dtor("S9336C2", this);}
void  S9336C2 ::v3(){vfunc_called(this, "_ZN7S9336C22v3Ev");}
void  S9336C2 ::v4(){vfunc_called(this, "_ZN7S9336C22v4Ev");}
void  S9336C2 ::v5(){vfunc_called(this, "_ZN7S9336C22v5Ev");}
S9336C2 ::S9336C2(){ note_ctor("S9336C2", this);} // tgen

static void Test_S9336C2()
{
  extern Class_Descriptor cd_S9336C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9336C2, buf);
    S9336C2 *dp, &lv = *(dp=new (buf) S9336C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9336C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9336C2)");
    check_field_offset(lv, s9336c2f0, ABISELECT(8,4), "S9336C2.s9336c2f0");
    check_field_offset(lv, s9336c2f1, ABISELECT(24,16), "S9336C2.s9336c2f1");
    check_field_offset(lv, s9336c2f2, ABISELECT(32,24), "S9336C2.s9336c2f2");
    test_class_info(&lv, &cd_S9336C2);
    dp->~S9336C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9336C2(Test_S9336C2, "S9336C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9336C2C1Ev();
extern void _ZN7S9336C2D1Ev();
Name_Map name_map_S9336C2[] = {
  NSPAIR(_ZN7S9336C2C1Ev),
  NSPAIR(_ZN7S9336C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9336C2[];
extern void _ZN7S9336C2D1Ev();
extern void _ZN7S9336C2D0Ev();
extern void _ZN7S9336C22v3Ev();
extern void _ZN7S9336C22v4Ev();
extern void _ZN7S9336C22v5Ev();
static  VTBL_ENTRY vtc_S9336C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9336C2[0]),
  (VTBL_ENTRY)&_ZN7S9336C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9336C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9336C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9336C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9336C22v5Ev,
};
extern VTBL_ENTRY _ZTI7S9336C2[];
extern  VTBL_ENTRY _ZTV7S9336C2[];
Class_Descriptor cd_S9336C2 = {  "S9336C2", // class name
  0,0,//no base classes
  &(vtc_S9336C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9336C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9336C2),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  S9336C5_nt  {
  int s9336c5f0[3];
};
//SIG(-1 S9336C5_nt) C1{ Fi[3]}



//skip512 S9336C5_nt

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S9336C7  {
  unsigned int s9336c7f0:1;
  int s9336c7f1:31;
};
//SIG(-1 S9336C7) C1{ Fi:1 Fi:31}



static void Test_S9336C7()
{
  {
    init_simple_test("S9336C7");
    static S9336C7 lv;
    check2(sizeof(lv), 4, "sizeof(S9336C7)");
    check2(__alignof__(lv), 4, "__alignof__(S9336C7)");
    set_bf_and_test(lv, s9336c7f0, 0, 0, 1, 1, "S9336C7");
    set_bf_and_test(lv, s9336c7f1, 0, 1, 31, 1, "S9336C7");
    set_bf_and_test(lv, s9336c7f1, 0, 1, 31, hide_sll(1LL<<30), "S9336C7");
  }
}
static Arrange_To_Call_Me vS9336C7(Test_S9336C7, "S9336C7", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9336C6  {
  ::S9336C7 s9336c6f0;
  ::S9336C5_nt s9336c6f1;
  char s9336c6f2[68];
};
//SIG(-1 S9336C6) C1{ FC2{ Fi:1 Fi:31} FC3{ Fi[3]} Fc[68]}



static void Test_S9336C6()
{
  {
    init_simple_test("S9336C6");
    static S9336C6 lv;
    check2(sizeof(lv), 84, "sizeof(S9336C6)");
    check2(__alignof__(lv), 4, "__alignof__(S9336C6)");
    check_field_offset(lv, s9336c6f0, 0, "S9336C6.s9336c6f0");
    check_field_offset(lv, s9336c6f1, 4, "S9336C6.s9336c6f1");
    check_field_offset(lv, s9336c6f2, 16, "S9336C6.s9336c6f2");
  }
}
static Arrange_To_Call_Me vS9336C6(Test_S9336C6, "S9336C6", 84);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9336C8_nt  {
  ::S21708C5_nt s9336c8f0;
};
//SIG(-1 S9336C8_nt) C1{ FC2{ Fi}}



//skip512 S9336C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9336C1  : S9336C2 {
  int s9336c1f0[3];
  ::S9336C5_nt s9336c1f1;
  ::S9336C6 s9336c1f2;
  ::S9336C8_nt s9336c1f3;
  int s9336c1f4;
  virtual  ~S9336C1(); // _ZN7S9336C1D1Ev
  virtual void  v1(); // _ZN7S9336C12v1Ev
  virtual void  v2(); // _ZN7S9336C12v2Ev
  S9336C1(); // tgen
};
//SIG(1 S9336C1) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 Fi[3] FC5{ Fi[3]} FC6{ FC7{ Fi:1 Fi:31} FC5 Fc[68]} FC8{ FC9{ Fi}} Fi}


 S9336C1 ::~S9336C1(){ note_dtor("S9336C1", this);}
void  S9336C1 ::v1(){vfunc_called(this, "_ZN7S9336C12v1Ev");}
void  S9336C1 ::v2(){vfunc_called(this, "_ZN7S9336C12v2Ev");}
S9336C1 ::S9336C1(){ note_ctor("S9336C1", this);} // tgen

static void Test_S9336C1()
{
  extern Class_Descriptor cd_S9336C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(20,37)];
    init_test(&cd_S9336C1, buf);
    S9336C1 *dp, &lv = *(dp=new (buf) S9336C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(152,144), "sizeof(S9336C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9336C1)");
    check_base_class_offset(lv, (S9336C2*), 0, "S9336C1");
    check_field_offset(lv, s9336c1f0, ABISELECT(36,28), "S9336C1.s9336c1f0");
    check_field_offset(lv, s9336c1f1, ABISELECT(48,40), "S9336C1.s9336c1f1");
    check_field_offset(lv, s9336c1f2, ABISELECT(60,52), "S9336C1.s9336c1f2");
    check_field_offset(lv, s9336c1f3, ABISELECT(144,136), "S9336C1.s9336c1f3");
    check_field_offset(lv, s9336c1f4, ABISELECT(148,140), "S9336C1.s9336c1f4");
    test_class_info(&lv, &cd_S9336C1);
    dp->~S9336C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9336C1(Test_S9336C1, "S9336C1", ABISELECT(152,144));

#else // __cplusplus

extern void _ZN7S9336C1C1Ev();
extern void _ZN7S9336C1D1Ev();
Name_Map name_map_S9336C1[] = {
  NSPAIR(_ZN7S9336C1C1Ev),
  NSPAIR(_ZN7S9336C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9336C2;
extern VTBL_ENTRY _ZTI7S9336C2[];
extern  VTBL_ENTRY _ZTV7S9336C2[];
static Base_Class bases_S9336C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9336C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9336C1[];
extern void _ZN7S9336C1D1Ev();
extern void _ZN7S9336C1D0Ev();
extern void _ZN7S9336C22v3Ev();
extern void _ZN7S9336C22v4Ev();
extern void _ZN7S9336C22v5Ev();
extern void _ZN7S9336C12v1Ev();
extern void _ZN7S9336C12v2Ev();
static  VTBL_ENTRY vtc_S9336C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9336C1[0]),
  (VTBL_ENTRY)&_ZN7S9336C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9336C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9336C22v3Ev,
  (VTBL_ENTRY)&_ZN7S9336C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9336C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9336C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9336C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S9336C1[];
extern  VTBL_ENTRY _ZTV7S9336C1[];
Class_Descriptor cd_S9336C1 = {  "S9336C1", // class name
  bases_S9336C1, 1,
  &(vtc_S9336C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(152,144), // object size
  NSPAIRA(_ZTI7S9336C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9336C1),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  S7660C3  {
  short s7660c3f0;
  virtual  ~S7660C3(); // _ZN7S7660C3D1Ev
  virtual void  v7(); // _ZN7S7660C32v7Ev
  virtual void  v8(); // _ZN7S7660C32v8Ev
  virtual void  v9(); // _ZN7S7660C32v9Ev
  virtual void  v10(); // _ZN7S7660C33v10Ev
  virtual void  v11(); // _ZN7S7660C33v11Ev
  virtual void  v12(); // _ZN7S7660C33v12Ev
  S7660C3(); // tgen
};
//SIG(-1 S7660C3) C1{ vd v1 v2 v3 v4 v5 v6 Fs}


 S7660C3 ::~S7660C3(){ note_dtor("S7660C3", this);}
void  S7660C3 ::v7(){vfunc_called(this, "_ZN7S7660C32v7Ev");}
void  S7660C3 ::v8(){vfunc_called(this, "_ZN7S7660C32v8Ev");}
void  S7660C3 ::v9(){vfunc_called(this, "_ZN7S7660C32v9Ev");}
void  S7660C3 ::v10(){vfunc_called(this, "_ZN7S7660C33v10Ev");}
void  S7660C3 ::v11(){vfunc_called(this, "_ZN7S7660C33v11Ev");}
void  S7660C3 ::v12(){vfunc_called(this, "_ZN7S7660C33v12Ev");}
S7660C3 ::S7660C3(){ note_ctor("S7660C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7660C3C1Ev();
extern void _ZN7S7660C3D1Ev();
Name_Map name_map_S7660C3[] = {
  NSPAIR(_ZN7S7660C3C1Ev),
  NSPAIR(_ZN7S7660C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7660C3[];
extern void _ZN7S7660C3D1Ev();
extern void _ZN7S7660C3D0Ev();
extern void _ZN7S7660C32v7Ev();
extern void _ZN7S7660C32v8Ev();
extern void _ZN7S7660C32v9Ev();
extern void _ZN7S7660C33v10Ev();
extern void _ZN7S7660C33v11Ev();
extern void _ZN7S7660C33v12Ev();
static  VTBL_ENTRY vtc_S7660C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7660C3[0]),
  (VTBL_ENTRY)&_ZN7S7660C3D1Ev,
  (VTBL_ENTRY)&_ZN7S7660C3D0Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S7660C3[];
extern  VTBL_ENTRY _ZTV7S7660C3[];
Class_Descriptor cd_S7660C3 = {  "S7660C3", // class name
  0,0,//no base classes
  &(vtc_S7660C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7660C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7660C3),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7660C4  {
  long s7660c4f0;
  virtual void  v13(); // _ZN7S7660C43v13Ev
  virtual void  v14(); // _ZN7S7660C43v14Ev
  virtual void  v15(); // _ZN7S7660C43v15Ev
  virtual void  v16(); // _ZN7S7660C43v16Ev
  virtual void  v17(); // _ZN7S7660C43v17Ev
  ~S7660C4(); // tgen
  S7660C4(); // tgen
};
//SIG(-1 S7660C4) C1{ v1 v2 v3 v4 v5 Fl}


void  S7660C4 ::v13(){vfunc_called(this, "_ZN7S7660C43v13Ev");}
void  S7660C4 ::v14(){vfunc_called(this, "_ZN7S7660C43v14Ev");}
void  S7660C4 ::v15(){vfunc_called(this, "_ZN7S7660C43v15Ev");}
void  S7660C4 ::v16(){vfunc_called(this, "_ZN7S7660C43v16Ev");}
void  S7660C4 ::v17(){vfunc_called(this, "_ZN7S7660C43v17Ev");}
S7660C4 ::~S7660C4(){ note_dtor("S7660C4", this);} // tgen
S7660C4 ::S7660C4(){ note_ctor("S7660C4", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7660C4C1Ev();
extern void _ZN7S7660C4D1Ev();
Name_Map name_map_S7660C4[] = {
  NSPAIR(_ZN7S7660C4C1Ev),
  NSPAIR(_ZN7S7660C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7660C4[];
extern void _ZN7S7660C43v13Ev();
extern void _ZN7S7660C43v14Ev();
extern void _ZN7S7660C43v15Ev();
extern void _ZN7S7660C43v16Ev();
extern void _ZN7S7660C43v17Ev();
static  VTBL_ENTRY vtc_S7660C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7660C4[0]),
  (VTBL_ENTRY)&_ZN7S7660C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v17Ev,
};
extern VTBL_ENTRY _ZTI7S7660C4[];
extern  VTBL_ENTRY _ZTV7S7660C4[];
Class_Descriptor cd_S7660C4 = {  "S7660C4", // class name
  0,0,//no base classes
  &(vtc_S7660C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7660C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7660C4),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  S7660C2  : virtual S7660C3 , S7660C4 {
  char s7660c2f0;
  virtual  ~S7660C2(); // _ZN7S7660C2D2Ev
  S7660C2(); // tgen
};
//SIG(-1 S7660C2) C1{ VBC2{ vd v1 v2 v3 v4 v5 v6 Fs} BC3{ v7 v8 v9 v10 v11 Fl} vd Fc}


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

static void Test_S7660C2()
{
  extern Class_Descriptor cd_S7660C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S7660C2, buf);
    S7660C2 *dp, &lv = *(dp=new (buf) S7660C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S7660C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7660C2)");
    check_base_class_offset(lv, (S7660C3*), ABISELECT(24,12), "S7660C2");
    check_base_class_offset(lv, (S7660C4*), 0, "S7660C2");
    check_field_offset(lv, s7660c2f0, ABISELECT(16,8), "S7660C2.s7660c2f0");
    test_class_info(&lv, &cd_S7660C2);
    dp->~S7660C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7660C2(Test_S7660C2, "S7660C2", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S7660C2C1Ev();
extern void _ZN7S7660C2D2Ev();
Name_Map name_map_S7660C2[] = {
  NSPAIR(_ZN7S7660C2C1Ev),
  NSPAIR(_ZN7S7660C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S7660C3;
extern VTBL_ENTRY _ZTI7S7660C3[];
extern  VTBL_ENTRY _ZTV7S7660C3[];
extern Class_Descriptor cd_S7660C4;
extern VTBL_ENTRY _ZTI7S7660C4[];
extern  VTBL_ENTRY _ZTV7S7660C4[];
static Base_Class bases_S7660C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7660C3,    ABISELECT(24,12), //bcp->offset
    10, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S7660C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S7660C2[];
extern void _ZN7S7660C43v13Ev();
extern void _ZN7S7660C43v14Ev();
extern void _ZN7S7660C43v15Ev();
extern void _ZN7S7660C43v16Ev();
extern void _ZN7S7660C43v17Ev();
extern void _ZN7S7660C2D1Ev();
extern void _ZN7S7660C2D0Ev();
extern void ABISELECT(_ZTv0_n24_N7S7660C2D1Ev,_ZTv0_n12_N7S7660C2D1Ev)();
extern void ABISELECT(_ZThn24_N7S7660C2D1Ev,_ZThn12_N7S7660C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7660C2D0Ev,_ZTv0_n12_N7S7660C2D0Ev)();
extern void ABISELECT(_ZThn24_N7S7660C2D0Ev,_ZThn12_N7S7660C2D0Ev)() __attribute__((weak));
extern void _ZN7S7660C32v7Ev();
extern void _ZN7S7660C32v8Ev();
extern void _ZN7S7660C32v9Ev();
extern void _ZN7S7660C33v10Ev();
extern void _ZN7S7660C33v11Ev();
extern void _ZN7S7660C33v12Ev();
static  VTBL_ENTRY vtc_S7660C2[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S7660C2[0]),
  (VTBL_ENTRY)&_ZN7S7660C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7660C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7660C2D0Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7660C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7660C2D1Ev,_ZTv0_n12_N7S7660C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7660C2D0Ev,_ZTv0_n12_N7S7660C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7660C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v12Ev,
};
extern VTBL_ENTRY _ZTV7S7660C2[];
static  VTT_ENTRY vtt_S7660C2[] = {
  {&(_ZTV7S7660C2[3]),  3,27},
  {&(_ZTV7S7660C2[19]),  19,27},
};
extern VTBL_ENTRY _ZTI7S7660C2[];
extern  VTBL_ENTRY _ZTV7S7660C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7660C2[];
static VTBL_ENTRY alt_thunk_names157[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7660C2D0Ev,_ZTv0_n12_N7S7660C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7660C2D0Ev,_ZThn12_N7S7660C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7660C2D1Ev,_ZTv0_n12_N7S7660C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn24_N7S7660C2D1Ev,_ZThn12_N7S7660C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7660C2 = {  "S7660C2", // class name
  bases_S7660C2, 2,
  &(vtc_S7660C2[0]), // expected_vtbl_contents
  &(vtt_S7660C2[0]), // expected_vtt_contents
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S7660C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7660C2),27, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7660C2),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names157,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S7660C5  {
  virtual void  v18(); // _ZN7S7660C53v18Ev
  virtual void  v19(); // _ZN7S7660C53v19Ev
  virtual void  v20(); // _ZN7S7660C53v20Ev
  ~S7660C5(); // tgen
  S7660C5(); // tgen
};
//SIG(-1 S7660C5) C1{ v1 v2 v3}


void  S7660C5 ::v18(){vfunc_called(this, "_ZN7S7660C53v18Ev");}
void  S7660C5 ::v19(){vfunc_called(this, "_ZN7S7660C53v19Ev");}
void  S7660C5 ::v20(){vfunc_called(this, "_ZN7S7660C53v20Ev");}
S7660C5 ::~S7660C5(){ note_dtor("S7660C5", this);} // tgen
S7660C5 ::S7660C5(){ note_ctor("S7660C5", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S7660C5C1Ev();
extern void _ZN7S7660C5D1Ev();
Name_Map name_map_S7660C5[] = {
  NSPAIR(_ZN7S7660C5C1Ev),
  NSPAIR(_ZN7S7660C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7660C5[];
extern void _ZN7S7660C53v18Ev();
extern void _ZN7S7660C53v19Ev();
extern void _ZN7S7660C53v20Ev();
static  VTBL_ENTRY vtc_S7660C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7660C5[0]),
  (VTBL_ENTRY)&_ZN7S7660C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7660C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7660C53v20Ev,
};
extern VTBL_ENTRY _ZTI7S7660C5[];
extern  VTBL_ENTRY _ZTV7S7660C5[];
Class_Descriptor cd_S7660C5 = {  "S7660C5", // class name
  0,0,//no base classes
  &(vtc_S7660C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7660C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7660C5),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  S7660C1  : S7660C2 , S7660C5 {
  int s7660c1f0;
  long double s7660c1f1;
  void *s7660c1f2;
  virtual void  v1(); // _ZN7S7660C12v1Ev
  virtual void  v2(); // _ZN7S7660C12v2Ev
  virtual void  v3(); // _ZN7S7660C12v3Ev
  virtual void  v4(); // _ZN7S7660C12v4Ev
  virtual void  v5(); // _ZN7S7660C12v5Ev
  virtual void  v6(); // _ZN7S7660C12v6Ev
  ~S7660C1(); // tgen
  S7660C1(); // tgen
};
//SIG(1 S7660C1) C1{ BC2{ VBC3{ vd v7 v8 v9 v10 v11 v12 Fs} BC4{ v13 v14 v15 v16 v17 Fl} vd Fc} BC5{ v18 v19 v20} v1 v2 v3 v4 v5 v6 Fi FD Fp}


void  S7660C1 ::v1(){vfunc_called(this, "_ZN7S7660C12v1Ev");}
void  S7660C1 ::v2(){vfunc_called(this, "_ZN7S7660C12v2Ev");}
void  S7660C1 ::v3(){vfunc_called(this, "_ZN7S7660C12v3Ev");}
void  S7660C1 ::v4(){vfunc_called(this, "_ZN7S7660C12v4Ev");}
void  S7660C1 ::v5(){vfunc_called(this, "_ZN7S7660C12v5Ev");}
void  S7660C1 ::v6(){vfunc_called(this, "_ZN7S7660C12v6Ev");}
S7660C1 ::~S7660C1(){ note_dtor("S7660C1", this);} // tgen
S7660C1 ::S7660C1(){ note_ctor("S7660C1", this);} // tgen

static void Test_S7660C1()
{
  extern Class_Descriptor cd_S7660C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(7,12)];
    init_test(&cd_S7660C1, buf);
    S7660C1 *dp, &lv = *(dp=new (buf) S7660C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,44), "sizeof(S7660C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S7660C1)");
    check_base_class_offset(lv, (S7660C3*)(S7660C2*), ABISELECT(72,36), "S7660C1");
    check_base_class_offset(lv, (S7660C4*)(S7660C2*), 0, "S7660C1");
    check_base_class_offset(lv, (S7660C2*), 0, "S7660C1");
    check_base_class_offset(lv, (S7660C5*), ABISELECT(24,12), "S7660C1");
    check_field_offset(lv, s7660c1f0, ABISELECT(32,16), "S7660C1.s7660c1f0");
    check_field_offset(lv, s7660c1f1, ABISELECT(48,20), "S7660C1.s7660c1f1");
    check_field_offset(lv, s7660c1f2, ABISELECT(64,32), "S7660C1.s7660c1f2");
    test_class_info(&lv, &cd_S7660C1);
    dp->~S7660C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7660C1(Test_S7660C1, "S7660C1", ABISELECT(96,44));

#else // __cplusplus

extern void _ZN7S7660C1C1Ev();
extern void _ZN7S7660C1D1Ev();
Name_Map name_map_S7660C1[] = {
  NSPAIR(_ZN7S7660C1C1Ev),
  NSPAIR(_ZN7S7660C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7660C3;
extern VTBL_ENTRY _ZTI7S7660C3[];
extern  VTBL_ENTRY _ZTV7S7660C3[];
extern Class_Descriptor cd_S7660C4;
extern VTBL_ENTRY _ZTI7S7660C4[];
extern  VTBL_ENTRY _ZTV7S7660C4[];
extern Class_Descriptor cd_S7660C2;
extern VTBL_ENTRY _ZTI7S7660C2[];
extern  VTBL_ENTRY _ZTV7S7660C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7660C2[];
extern Class_Descriptor cd_S7660C5;
extern VTBL_ENTRY _ZTI7S7660C5[];
extern  VTBL_ENTRY _ZTV7S7660C5[];
static Base_Class bases_S7660C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7660C3,    ABISELECT(72,36), //bcp->offset
    21, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S7660C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S7660C2,    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_S7660C5,    ABISELECT(24,12), //bcp->offset
    16, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7660C1[];
extern void _ZN7S7660C43v13Ev();
extern void _ZN7S7660C43v14Ev();
extern void _ZN7S7660C43v15Ev();
extern void _ZN7S7660C43v16Ev();
extern void _ZN7S7660C43v17Ev();
extern void _ZN7S7660C1D1Ev();
extern void _ZN7S7660C1D0Ev();
extern void _ZN7S7660C12v1Ev();
extern void _ZN7S7660C12v2Ev();
extern void _ZN7S7660C12v3Ev();
extern void _ZN7S7660C12v4Ev();
extern void _ZN7S7660C12v5Ev();
extern void _ZN7S7660C12v6Ev();
extern void _ZN7S7660C53v18Ev();
extern void _ZN7S7660C53v19Ev();
extern void _ZN7S7660C53v20Ev();
extern void ABISELECT(_ZTv0_n24_N7S7660C1D1Ev,_ZTv0_n12_N7S7660C1D1Ev)();
extern void ABISELECT(_ZThn72_N7S7660C1D1Ev,_ZThn36_N7S7660C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7660C1D0Ev,_ZTv0_n12_N7S7660C1D0Ev)();
extern void ABISELECT(_ZThn72_N7S7660C1D0Ev,_ZThn36_N7S7660C1D0Ev)() __attribute__((weak));
extern void _ZN7S7660C32v7Ev();
extern void _ZN7S7660C32v8Ev();
extern void _ZN7S7660C32v9Ev();
extern void _ZN7S7660C33v10Ev();
extern void _ZN7S7660C33v11Ev();
extern void _ZN7S7660C33v12Ev();
static  VTBL_ENTRY vtc_S7660C1[] = {
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7660C1[0]),
  (VTBL_ENTRY)&_ZN7S7660C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7660C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7660C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7660C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7660C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7660C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7660C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7660C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7660C12v6Ev,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S7660C1[0]),
  (VTBL_ENTRY)&_ZN7S7660C53v18Ev,
  (VTBL_ENTRY)&_ZN7S7660C53v19Ev,
  (VTBL_ENTRY)&_ZN7S7660C53v20Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7660C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7660C1D1Ev,_ZTv0_n12_N7S7660C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7660C1D0Ev,_ZTv0_n12_N7S7660C1D0Ev),
  (VTBL_ENTRY)&_ZN7S7660C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v12Ev,
};
extern VTBL_ENTRY _ZTV7S7660C1[];
extern void _ZN7S7660C43v13Ev();
extern void _ZN7S7660C43v14Ev();
extern void _ZN7S7660C43v15Ev();
extern void _ZN7S7660C43v16Ev();
extern void _ZN7S7660C43v17Ev();
extern void _ZN7S7660C2D1Ev();
extern void _ZN7S7660C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S7660C2__7S7660C1[] = {
  ABISELECT(72,36),
  0,
  (VTBL_ENTRY)&(_ZTI7S7660C2[0]),
  (VTBL_ENTRY)&_ZN7S7660C43v13Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v14Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v15Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v16Ev,
  (VTBL_ENTRY)&_ZN7S7660C43v17Ev,
  (VTBL_ENTRY)&_ZN7S7660C2D1Ev,
  (VTBL_ENTRY)&_ZN7S7660C2D0Ev,
};
extern void ABISELECT(_ZTv0_n24_N7S7660C2D1Ev,_ZTv0_n12_N7S7660C2D1Ev)();
extern void ABISELECT(_ZThn72_N7S7660C2D1Ev,_ZThn36_N7S7660C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N7S7660C2D0Ev,_ZTv0_n12_N7S7660C2D0Ev)();
extern void ABISELECT(_ZThn72_N7S7660C2D0Ev,_ZThn36_N7S7660C2D0Ev)() __attribute__((weak));
extern void _ZN7S7660C32v7Ev();
extern void _ZN7S7660C32v8Ev();
extern void _ZN7S7660C32v9Ev();
extern void _ZN7S7660C33v10Ev();
extern void _ZN7S7660C33v11Ev();
extern void _ZN7S7660C33v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7660C3__7S7660C2__7S7660C1[] = {
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-72,-36),
  ABISELECT(-72,-36),
  (VTBL_ENTRY)&(_ZTI7S7660C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7660C2D1Ev,_ZTv0_n12_N7S7660C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N7S7660C2D0Ev,_ZTv0_n12_N7S7660C2D0Ev),
  (VTBL_ENTRY)&_ZN7S7660C32v7Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v8Ev,
  (VTBL_ENTRY)&_ZN7S7660C32v9Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v10Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v11Ev,
  (VTBL_ENTRY)&_ZN7S7660C33v12Ev,
};
static  VTT_ENTRY vtt_S7660C1[] = {
  {&(_ZTV7S7660C1[3]),  3,38},
  {&(_tg__ZTV7S7660C2__7S7660C1[3]),  3,10},
  {&(_tg__ZTV7S7660C3__7S7660C2__7S7660C1[9]),  9,17},
  {&(_ZTV7S7660C1[30]),  30,38},
};
extern VTBL_ENTRY _ZTI7S7660C1[];
extern  VTBL_ENTRY _ZTV7S7660C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7660C1[];
static VTBL_ENTRY alt_thunk_names158[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7660C2D0Ev,_ZTv0_n12_N7S7660C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7660C2D0Ev,_ZThn36_N7S7660C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7660C2D1Ev,_ZTv0_n12_N7S7660C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7660C2D1Ev,_ZThn36_N7S7660C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7660C1D0Ev,_ZTv0_n12_N7S7660C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7660C1D0Ev,_ZThn36_N7S7660C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N7S7660C1D1Ev,_ZTv0_n12_N7S7660C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn72_N7S7660C1D1Ev,_ZThn36_N7S7660C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S7660C1 = {  "S7660C1", // class name
  bases_S7660C1, 4,
  &(vtc_S7660C1[0]), // expected_vtbl_contents
  &(vtt_S7660C1[0]), // expected_vtt_contents
  ABISELECT(96,44), // object size
  NSPAIRA(_ZTI7S7660C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7660C1),38, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7660C1),4, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names158,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3071C3_nt  {
  virtual void  v2(); // _ZN10S3071C3_nt2v2Ev
  virtual void  v3(); // _ZN10S3071C3_nt2v3Ev
  virtual void  v4(); // _ZN10S3071C3_nt2v4Ev
  virtual void  v5(); // _ZN10S3071C3_nt2v5Ev
  ~S3071C3_nt(); // tgen
  S3071C3_nt(); // tgen
};
//SIG(-1 S3071C3_nt) C1{ v1 v2 v3 v4}


void  S3071C3_nt ::v2(){vfunc_called(this, "_ZN10S3071C3_nt2v2Ev");}
void  S3071C3_nt ::v3(){vfunc_called(this, "_ZN10S3071C3_nt2v3Ev");}
void  S3071C3_nt ::v4(){vfunc_called(this, "_ZN10S3071C3_nt2v4Ev");}
void  S3071C3_nt ::v5(){vfunc_called(this, "_ZN10S3071C3_nt2v5Ev");}
S3071C3_nt ::~S3071C3_nt(){ note_dtor("S3071C3_nt", this);} // tgen
S3071C3_nt ::S3071C3_nt(){ note_ctor("S3071C3_nt", this);} // tgen

//skip512 S3071C3_nt

#else // __cplusplus

extern void _ZN10S3071C3_ntC1Ev();
extern void _ZN10S3071C3_ntD1Ev();
Name_Map name_map_S3071C3_nt[] = {
  NSPAIR(_ZN10S3071C3_ntC1Ev),
  NSPAIR(_ZN10S3071C3_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3071C3_nt[];
extern void _ZN10S3071C3_nt2v2Ev();
extern void _ZN10S3071C3_nt2v3Ev();
extern void _ZN10S3071C3_nt2v4Ev();
extern void _ZN10S3071C3_nt2v5Ev();
static  VTBL_ENTRY vtc_S3071C3_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3071C3_nt[0]),
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v5Ev,
};
extern VTBL_ENTRY _ZTI10S3071C3_nt[];
VTBL_ENTRY *P__ZTI10S3071C3_nt = _ZTI10S3071C3_nt; 
extern  VTBL_ENTRY _ZTV10S3071C3_nt[];
Class_Descriptor cd_S3071C3_nt = {  "S3071C3_nt", // class name
  0,0,//no base classes
  &(vtc_S3071C3_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI10S3071C3_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3071C3_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  S3071C2  : S3071C3_nt {
  void *s3071c2f0;
  long double s3071c2f1;
  virtual void  v6(); // _ZN7S3071C22v6Ev
  virtual void  v7(); // _ZN7S3071C22v7Ev
  virtual void  v8(); // _ZN7S3071C22v8Ev
  virtual void  v9(); // _ZN7S3071C22v9Ev
  virtual void  v10(); // _ZN7S3071C23v10Ev
  virtual void  v11(); // _ZN7S3071C23v11Ev
  virtual void  v12(); // _ZN7S3071C23v12Ev
  ~S3071C2(); // tgen
  S3071C2(); // tgen
};
//SIG(-1 S3071C2) C1{ BC2{ v8 v9 v10 v11} v1 v2 v3 v4 v5 v6 v7 Fp FD}


void  S3071C2 ::v6(){vfunc_called(this, "_ZN7S3071C22v6Ev");}
void  S3071C2 ::v7(){vfunc_called(this, "_ZN7S3071C22v7Ev");}
void  S3071C2 ::v8(){vfunc_called(this, "_ZN7S3071C22v8Ev");}
void  S3071C2 ::v9(){vfunc_called(this, "_ZN7S3071C22v9Ev");}
void  S3071C2 ::v10(){vfunc_called(this, "_ZN7S3071C23v10Ev");}
void  S3071C2 ::v11(){vfunc_called(this, "_ZN7S3071C23v11Ev");}
void  S3071C2 ::v12(){vfunc_called(this, "_ZN7S3071C23v12Ev");}
S3071C2 ::~S3071C2(){ note_dtor("S3071C2", this);} // tgen
S3071C2 ::S3071C2(){ note_ctor("S3071C2", this);} // tgen

static void Test_S3071C2()
{
  extern Class_Descriptor cd_S3071C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,6)];
    init_test(&cd_S3071C2, buf);
    S3071C2 *dp, &lv = *(dp=new (buf) S3071C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S3071C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3071C2)");
    check_base_class_offset(lv, (S3071C3_nt*), 0, "S3071C2");
    check_field_offset(lv, s3071c2f0, ABISELECT(8,4), "S3071C2.s3071c2f0");
    check_field_offset(lv, s3071c2f1, ABISELECT(16,8), "S3071C2.s3071c2f1");
    test_class_info(&lv, &cd_S3071C2);
    dp->~S3071C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3071C2(Test_S3071C2, "S3071C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S3071C2C1Ev();
extern void _ZN7S3071C2D1Ev();
Name_Map name_map_S3071C2[] = {
  NSPAIR(_ZN7S3071C2C1Ev),
  NSPAIR(_ZN7S3071C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3071C3_nt;
extern VTBL_ENTRY _ZTI10S3071C3_nt[];
extern  VTBL_ENTRY _ZTV10S3071C3_nt[];
static Base_Class bases_S3071C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3071C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3071C2[];
extern void _ZN10S3071C3_nt2v2Ev();
extern void _ZN10S3071C3_nt2v3Ev();
extern void _ZN10S3071C3_nt2v4Ev();
extern void _ZN10S3071C3_nt2v5Ev();
extern void _ZN7S3071C22v6Ev();
extern void _ZN7S3071C22v7Ev();
extern void _ZN7S3071C22v8Ev();
extern void _ZN7S3071C22v9Ev();
extern void _ZN7S3071C23v10Ev();
extern void _ZN7S3071C23v11Ev();
extern void _ZN7S3071C23v12Ev();
static  VTBL_ENTRY vtc_S3071C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3071C2[0]),
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3071C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3071C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3071C23v12Ev,
};
extern VTBL_ENTRY _ZTI7S3071C2[];
extern  VTBL_ENTRY _ZTV7S3071C2[];
Class_Descriptor cd_S3071C2 = {  "S3071C2", // class name
  bases_S3071C2, 1,
  &(vtc_S3071C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S3071C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3071C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S3071C5_nt  {
  long double s3071c5f0;
  virtual void  v13(); // _ZN10S3071C5_nt3v13Ev
  virtual void  v14(); // _ZN10S3071C5_nt3v14Ev
  virtual void  v15(); // _ZN10S3071C5_nt3v15Ev
  ~S3071C5_nt(); // tgen
  S3071C5_nt(); // tgen
};
//SIG(-1 S3071C5_nt) C1{ v1 v2 v3 FD}


void  S3071C5_nt ::v13(){vfunc_called(this, "_ZN10S3071C5_nt3v13Ev");}
void  S3071C5_nt ::v14(){vfunc_called(this, "_ZN10S3071C5_nt3v14Ev");}
void  S3071C5_nt ::v15(){vfunc_called(this, "_ZN10S3071C5_nt3v15Ev");}
S3071C5_nt ::~S3071C5_nt(){ note_dtor("S3071C5_nt", this);} // tgen
S3071C5_nt ::S3071C5_nt(){ note_ctor("S3071C5_nt", this);} // tgen

//skip512 S3071C5_nt

#else // __cplusplus

extern void _ZN10S3071C5_ntC1Ev();
extern void _ZN10S3071C5_ntD1Ev();
Name_Map name_map_S3071C5_nt[] = {
  NSPAIR(_ZN10S3071C5_ntC1Ev),
  NSPAIR(_ZN10S3071C5_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S3071C5_nt[];
extern void _ZN10S3071C5_nt3v13Ev();
extern void _ZN10S3071C5_nt3v14Ev();
extern void _ZN10S3071C5_nt3v15Ev();
static  VTBL_ENTRY vtc_S3071C5_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3071C5_nt[0]),
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v15Ev,
};
extern VTBL_ENTRY _ZTI10S3071C5_nt[];
VTBL_ENTRY *P__ZTI10S3071C5_nt = _ZTI10S3071C5_nt; 
extern  VTBL_ENTRY _ZTV10S3071C5_nt[];
Class_Descriptor cd_S3071C5_nt = {  "S3071C5_nt", // class name
  0,0,//no base classes
  &(vtc_S3071C5_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI10S3071C5_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S3071C5_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  S3071C4  : virtual S3071C5_nt {
  virtual  ~S3071C4(); // _ZN7S3071C4D2Ev
  virtual void  v16(); // _ZN7S3071C43v16Ev
  virtual void  v17(); // _ZN7S3071C43v17Ev
  virtual void  v18(); // _ZN7S3071C43v18Ev
  virtual void  v19(); // _ZN7S3071C43v19Ev
  virtual void  v20(); // _ZN7S3071C43v20Ev
  S3071C4(); // tgen
};
//SIG(-1 S3071C4) C1{ VBC2{ v6 v7 v8 FD} vd v1 v2 v3 v4 v5}


 S3071C4 ::~S3071C4(){ note_dtor("S3071C4", this);}
void  S3071C4 ::v16(){vfunc_called(this, "_ZN7S3071C43v16Ev");}
void  S3071C4 ::v17(){vfunc_called(this, "_ZN7S3071C43v17Ev");}
void  S3071C4 ::v18(){vfunc_called(this, "_ZN7S3071C43v18Ev");}
void  S3071C4 ::v19(){vfunc_called(this, "_ZN7S3071C43v19Ev");}
void  S3071C4 ::v20(){vfunc_called(this, "_ZN7S3071C43v20Ev");}
S3071C4 ::S3071C4(){ note_ctor("S3071C4", this);} // tgen

static void Test_S3071C4()
{
  extern Class_Descriptor cd_S3071C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S3071C4, buf);
    S3071C4 *dp, &lv = *(dp=new (buf) S3071C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S3071C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3071C4)");
    check_base_class_offset(lv, (S3071C5_nt*), ABISELECT(16,4), "S3071C4");
    test_class_info(&lv, &cd_S3071C4);
    dp->~S3071C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3071C4(Test_S3071C4, "S3071C4", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN7S3071C4C1Ev();
extern void _ZN7S3071C4D2Ev();
Name_Map name_map_S3071C4[] = {
  NSPAIR(_ZN7S3071C4C1Ev),
  NSPAIR(_ZN7S3071C4D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S3071C5_nt;
extern VTBL_ENTRY _ZTI10S3071C5_nt[];
extern  VTBL_ENTRY _ZTV10S3071C5_nt[];
static Base_Class bases_S3071C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3071C5_nt,    ABISELECT(16,4), //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 _ZTI7S3071C4[];
extern void _ZN7S3071C4D1Ev();
extern void _ZN7S3071C4D0Ev();
extern void _ZN7S3071C43v16Ev();
extern void _ZN7S3071C43v17Ev();
extern void _ZN7S3071C43v18Ev();
extern void _ZN7S3071C43v19Ev();
extern void _ZN7S3071C43v20Ev();
extern void _ZN10S3071C5_nt3v13Ev();
extern void _ZN10S3071C5_nt3v14Ev();
extern void _ZN10S3071C5_nt3v15Ev();
static  VTBL_ENTRY vtc_S3071C4[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3071C4[0]),
  (VTBL_ENTRY)&_ZN7S3071C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3071C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v18Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v20Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI7S3071C4[0]),
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v15Ev,
};
extern VTBL_ENTRY _ZTV7S3071C4[];
static  VTT_ENTRY vtt_S3071C4[] = {
  {&(_ZTV7S3071C4[3]),  3,18},
  {&(_ZTV7S3071C4[15]),  15,18},
};
extern VTBL_ENTRY _ZTI7S3071C4[];
extern  VTBL_ENTRY _ZTV7S3071C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3071C4[];
Class_Descriptor cd_S3071C4 = {  "S3071C4", // class name
  bases_S3071C4, 1,
  &(vtc_S3071C4[0]), // expected_vtbl_contents
  &(vtt_S3071C4[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI7S3071C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3071C4),18, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3071C4),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  S3071C1  : S3071C2 , virtual S3071C4 {
  char s3071c1f0;
  char s3071c1f1:8;
  virtual void  v1(); // _ZN7S3071C12v1Ev
  ~S3071C1(); // tgen
  S3071C1(); // tgen
};
//SIG(1 S3071C1) C1{ BC2{ BC3{ v2 v3 v4 v5} v6 v7 v8 v9 v10 v11 v12 Fp FD} VBC4{ VBC5{ v13 v14 v15 FD} vd v16 v17 v18 v19 v20} v1 Fc Fc:8}


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

static void Test_S3071C1()
{
  extern Class_Descriptor cd_S3071C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S3071C1, buf);
    S3071C1 *dp, &lv = *(dp=new (buf) S3071C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S3071C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S3071C1)");
    check_base_class_offset(lv, (S3071C3_nt*)(S3071C2*), 0, "S3071C1");
    check_base_class_offset(lv, (S3071C2*), 0, "S3071C1");
    check_base_class_offset(lv, (S3071C5_nt*)(S3071C4*), ABISELECT(48,28), "S3071C1");
    check_base_class_offset(lv, (S3071C4*), ABISELECT(40,24), "S3071C1");
    check_field_offset(lv, s3071c1f0, ABISELECT(32,20), "S3071C1.s3071c1f0");
    set_bf_and_test(lv, s3071c1f1, ABISELECT(33,21), 0, 8, 1, "S3071C1");
    set_bf_and_test(lv, s3071c1f1, ABISELECT(33,21), 0, 8, hide_sll(1LL<<7), "S3071C1");
    test_class_info(&lv, &cd_S3071C1);
    dp->~S3071C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3071C1(Test_S3071C1, "S3071C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN7S3071C1C1Ev();
extern void _ZN7S3071C1D1Ev();
Name_Map name_map_S3071C1[] = {
  NSPAIR(_ZN7S3071C1C1Ev),
  NSPAIR(_ZN7S3071C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S3071C3_nt;
extern VTBL_ENTRY _ZTI10S3071C3_nt[];
extern  VTBL_ENTRY _ZTV10S3071C3_nt[];
extern Class_Descriptor cd_S3071C2;
extern VTBL_ENTRY _ZTI7S3071C2[];
extern  VTBL_ENTRY _ZTV7S3071C2[];
extern Class_Descriptor cd_S3071C5_nt;
extern VTBL_ENTRY _ZTI10S3071C5_nt[];
extern  VTBL_ENTRY _ZTV10S3071C5_nt[];
extern Class_Descriptor cd_S3071C4;
extern VTBL_ENTRY _ZTI7S3071C4[];
extern  VTBL_ENTRY _ZTV7S3071C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3071C4[];
static Base_Class bases_S3071C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S3071C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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
  0, 0},
  {&cd_S3071C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_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_S3071C5_nt,    ABISELECT(48,28), //bcp->offset
    34, //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
    3, //immediately_derived
  0, 1},
  {&cd_S3071C4,    ABISELECT(40,24), //bcp->offset
    18, //bcp->virtual_function_table_offset
    9, //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 _ZTI7S3071C1[];
extern void _ZN10S3071C3_nt2v2Ev();
extern void _ZN10S3071C3_nt2v3Ev();
extern void _ZN10S3071C3_nt2v4Ev();
extern void _ZN10S3071C3_nt2v5Ev();
extern void _ZN7S3071C22v6Ev();
extern void _ZN7S3071C22v7Ev();
extern void _ZN7S3071C22v8Ev();
extern void _ZN7S3071C22v9Ev();
extern void _ZN7S3071C23v10Ev();
extern void _ZN7S3071C23v11Ev();
extern void _ZN7S3071C23v12Ev();
extern void _ZN7S3071C12v1Ev();
extern void _ZN7S3071C1D1Ev();
extern void _ZN7S3071C1D0Ev();
extern void ABISELECT(_ZTv0_n32_N7S3071C1D1Ev,_ZTv0_n16_N7S3071C1D1Ev)();
extern void ABISELECT(_ZThn40_N7S3071C1D1Ev,_ZThn24_N7S3071C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N7S3071C1D0Ev,_ZTv0_n16_N7S3071C1D0Ev)();
extern void ABISELECT(_ZThn40_N7S3071C1D0Ev,_ZThn24_N7S3071C1D0Ev)() __attribute__((weak));
extern void _ZN7S3071C43v16Ev();
extern void _ZN7S3071C43v17Ev();
extern void _ZN7S3071C43v18Ev();
extern void _ZN7S3071C43v19Ev();
extern void _ZN7S3071C43v20Ev();
extern void _ZN10S3071C5_nt3v13Ev();
extern void _ZN10S3071C5_nt3v14Ev();
extern void _ZN10S3071C5_nt3v15Ev();
static  VTBL_ENTRY vtc_S3071C1[] = {
  ABISELECT(48,28),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S3071C1[0]),
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v2Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v3Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v4Ev,
  (VTBL_ENTRY)&_ZN10S3071C3_nt2v5Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v6Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v7Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v8Ev,
  (VTBL_ENTRY)&_ZN7S3071C22v9Ev,
  (VTBL_ENTRY)&_ZN7S3071C23v10Ev,
  (VTBL_ENTRY)&_ZN7S3071C23v11Ev,
  (VTBL_ENTRY)&_ZN7S3071C23v12Ev,
  (VTBL_ENTRY)&_ZN7S3071C12v1Ev,
  (VTBL_ENTRY)&_ZN7S3071C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3071C1D0Ev,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  ABISELECT(8,4),
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S3071C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3071C1D1Ev,_ZTv0_n16_N7S3071C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N7S3071C1D0Ev,_ZTv0_n16_N7S3071C1D0Ev),
  (VTBL_ENTRY)&_ZN7S3071C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v18Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v20Ev,
  0,
  0,
  0,
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI7S3071C1[0]),
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v15Ev,
};
extern VTBL_ENTRY _ZTV7S3071C1[];
extern void _ZN7S3071C4D1Ev();
extern void _ZN7S3071C4D0Ev();
extern void _ZN7S3071C43v16Ev();
extern void _ZN7S3071C43v17Ev();
extern void _ZN7S3071C43v18Ev();
extern void _ZN7S3071C43v19Ev();
extern void _ZN7S3071C43v20Ev();
static  VTBL_ENTRY _tg__ZTV7S3071C4__7S3071C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3071C4[0]),
  (VTBL_ENTRY)&_ZN7S3071C4D1Ev,
  (VTBL_ENTRY)&_ZN7S3071C4D0Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v16Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v17Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v18Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v19Ev,
  (VTBL_ENTRY)&_ZN7S3071C43v20Ev,
};
extern void _ZN10S3071C5_nt3v13Ev();
extern void _ZN10S3071C5_nt3v14Ev();
extern void _ZN10S3071C5_nt3v15Ev();
static  VTBL_ENTRY _tg__ZTV10S3071C5_nt__7S3071C4__7S3071C1[] = {
  0,
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S3071C4[0]),
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v13Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v14Ev,
  (VTBL_ENTRY)&_ZN10S3071C5_nt3v15Ev,
};
static  VTT_ENTRY vtt_S3071C1[] = {
  {&(_ZTV7S3071C1[4]),  4,42},
  {&(_ZTV7S3071C1[27]),  27,42},
  {&(_ZTV7S3071C1[39]),  39,42},
  {&(_tg__ZTV7S3071C4__7S3071C1[3]),  3,10},
  {&(_tg__ZTV10S3071C5_nt__7S3071C4__7S3071C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI7S3071C1[];
extern  VTBL_ENTRY _ZTV7S3071C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3071C1[];
static VTBL_ENTRY alt_thunk_names159[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3071C1D0Ev,_ZTv0_n16_N7S3071C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3071C1D0Ev,_ZThn24_N7S3071C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N7S3071C1D1Ev,_ZTv0_n16_N7S3071C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N7S3071C1D1Ev,_ZThn24_N7S3071C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S3071C1 = {  "S3071C1", // class name
  bases_S3071C1, 4,
  &(vtc_S3071C1[0]), // expected_vtbl_contents
  &(vtt_S3071C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI7S3071C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3071C1),42, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3071C1),5, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names159,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6920C2  {
  ::S19534C6 s6920c2f0;
  virtual  ~S6920C2(); // _ZN7S6920C2D1Ev
  virtual void  v5(); // _ZN7S6920C22v5Ev
  virtual void  v6(); // _ZN7S6920C22v6Ev
  virtual void  v7(); // _ZN7S6920C22v7Ev
  virtual void  v8(); // _ZN7S6920C22v8Ev
  virtual void  v9(); // _ZN7S6920C22v9Ev
  virtual void  v10(); // _ZN7S6920C23v10Ev
  virtual void  v11(); // _ZN7S6920C23v11Ev
  S6920C2(); // tgen
};
//SIG(-1 S6920C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 FC2{ BC3{ v11 v12 v13 v14 v15 Fi} vd v8 v9 v10 FC4{}}}


 S6920C2 ::~S6920C2(){ note_dtor("S6920C2", this);}
void  S6920C2 ::v5(){vfunc_called(this, "_ZN7S6920C22v5Ev");}
void  S6920C2 ::v6(){vfunc_called(this, "_ZN7S6920C22v6Ev");}
void  S6920C2 ::v7(){vfunc_called(this, "_ZN7S6920C22v7Ev");}
void  S6920C2 ::v8(){vfunc_called(this, "_ZN7S6920C22v8Ev");}
void  S6920C2 ::v9(){vfunc_called(this, "_ZN7S6920C22v9Ev");}
void  S6920C2 ::v10(){vfunc_called(this, "_ZN7S6920C23v10Ev");}
void  S6920C2 ::v11(){vfunc_called(this, "_ZN7S6920C23v11Ev");}
S6920C2 ::S6920C2(){ note_ctor("S6920C2", this);} // tgen

static void Test_S6920C2()
{
  extern Class_Descriptor cd_S6920C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S6920C2, buf);
    S6920C2 *dp, &lv = *(dp=new (buf) S6920C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S6920C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6920C2)");
    check_field_offset(lv, s6920c2f0, ABISELECT(8,4), "S6920C2.s6920c2f0");
    test_class_info(&lv, &cd_S6920C2);
    dp->~S6920C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6920C2(Test_S6920C2, "S6920C2", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S6920C2C1Ev();
extern void _ZN7S6920C2D1Ev();
Name_Map name_map_S6920C2[] = {
  NSPAIR(_ZN7S6920C2C1Ev),
  NSPAIR(_ZN7S6920C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6920C2[];
extern void _ZN7S6920C2D1Ev();
extern void _ZN7S6920C2D0Ev();
extern void _ZN7S6920C22v5Ev();
extern void _ZN7S6920C22v6Ev();
extern void _ZN7S6920C22v7Ev();
extern void _ZN7S6920C22v8Ev();
extern void _ZN7S6920C22v9Ev();
extern void _ZN7S6920C23v10Ev();
extern void _ZN7S6920C23v11Ev();
static  VTBL_ENTRY vtc_S6920C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6920C2[0]),
  (VTBL_ENTRY)&_ZN7S6920C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6920C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6920C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6920C23v11Ev,
};
extern VTBL_ENTRY _ZTI7S6920C2[];
extern  VTBL_ENTRY _ZTV7S6920C2[];
Class_Descriptor cd_S6920C2 = {  "S6920C2", // class name
  0,0,//no base classes
  &(vtc_S6920C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S6920C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6920C2),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6920C1  : S6920C2 {
  int s6920c1f0;
  ::S20489C10_nt s6920c1f1;
  virtual void  v1(); // _ZN7S6920C12v1Ev
  virtual void  v2(); // _ZN7S6920C12v2Ev
  virtual void  v3(); // _ZN7S6920C12v3Ev
  virtual void  v4(); // _ZN7S6920C12v4Ev
  ~S6920C1(); // tgen
  S6920C1(); // tgen
};
//SIG(1 S6920C1) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 FC3{ BC4{ v15 v16 v17 v18 v19 Fi} vd v12 v13 v14 FC5{}}} v1 v2 v3 v4 Fi FC6{ m Fi}}


void  S6920C1 ::v1(){vfunc_called(this, "_ZN7S6920C12v1Ev");}
void  S6920C1 ::v2(){vfunc_called(this, "_ZN7S6920C12v2Ev");}
void  S6920C1 ::v3(){vfunc_called(this, "_ZN7S6920C12v3Ev");}
void  S6920C1 ::v4(){vfunc_called(this, "_ZN7S6920C12v4Ev");}
S6920C1 ::~S6920C1(){ note_dtor("S6920C1", this);} // tgen
S6920C1 ::S6920C1(){ note_ctor("S6920C1", this);} // tgen

static void Test_S6920C1()
{
  extern Class_Descriptor cd_S6920C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S6920C1, buf);
    S6920C1 *dp, &lv = *(dp=new (buf) S6920C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S6920C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6920C1)");
    check_base_class_offset(lv, (S6920C2*), 0, "S6920C1");
    check_field_offset(lv, s6920c1f0, ABISELECT(24,16), "S6920C1.s6920c1f0");
    check_field_offset(lv, s6920c1f1, ABISELECT(28,20), "S6920C1.s6920c1f1");
    test_class_info(&lv, &cd_S6920C1);
    dp->~S6920C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6920C1(Test_S6920C1, "S6920C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S6920C1C1Ev();
extern void _ZN7S6920C1D1Ev();
Name_Map name_map_S6920C1[] = {
  NSPAIR(_ZN7S6920C1C1Ev),
  NSPAIR(_ZN7S6920C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6920C2;
extern VTBL_ENTRY _ZTI7S6920C2[];
extern  VTBL_ENTRY _ZTV7S6920C2[];
static Base_Class bases_S6920C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6920C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6920C1[];
extern void _ZN7S6920C1D1Ev();
extern void _ZN7S6920C1D0Ev();
extern void _ZN7S6920C22v5Ev();
extern void _ZN7S6920C22v6Ev();
extern void _ZN7S6920C22v7Ev();
extern void _ZN7S6920C22v8Ev();
extern void _ZN7S6920C22v9Ev();
extern void _ZN7S6920C23v10Ev();
extern void _ZN7S6920C23v11Ev();
extern void _ZN7S6920C12v1Ev();
extern void _ZN7S6920C12v2Ev();
extern void _ZN7S6920C12v3Ev();
extern void _ZN7S6920C12v4Ev();
static  VTBL_ENTRY vtc_S6920C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6920C1[0]),
  (VTBL_ENTRY)&_ZN7S6920C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6920C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6920C22v9Ev,
  (VTBL_ENTRY)&_ZN7S6920C23v10Ev,
  (VTBL_ENTRY)&_ZN7S6920C23v11Ev,
  (VTBL_ENTRY)&_ZN7S6920C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6920C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6920C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6920C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S6920C1[];
extern  VTBL_ENTRY _ZTV7S6920C1[];
Class_Descriptor cd_S6920C1 = {  "S6920C1", // class name
  bases_S6920C1, 1,
  &(vtc_S6920C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S6920C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6920C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18988C4  : S9624C48 {
};
//SIG(-1 S18988C4) C1{ BC2{ m}}



static void Test_S18988C4()
{
  extern Class_Descriptor cd_S18988C4;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S18988C4, buf);
    S18988C4 &lv = *(new (buf) S18988C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S18988C4)");
    check2(__alignof__(lv), 1, "__alignof__(S18988C4)");
    check_base_class_offset(lv, (S9624C48*), 0, "S18988C4");
    test_class_info(&lv, &cd_S18988C4);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C4(Test_S18988C4, "S18988C4", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S18988C8  {
  virtual void  v1(); // _ZN8S18988C82v1Ev
  ~S18988C8(); // tgen
  S18988C8(); // tgen
};
//SIG(-1 S18988C8) C1{ v1}


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

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

#else // __cplusplus

extern void _ZN8S18988C8C1Ev();
extern void _ZN8S18988C8D1Ev();
Name_Map name_map_S18988C8[] = {
  NSPAIR(_ZN8S18988C8C1Ev),
  NSPAIR(_ZN8S18988C8D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18988C8[];
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY vtc_S18988C8[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C8[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
Class_Descriptor cd_S18988C8 = {  "S18988C8", // class name
  0,0,//no base classes
  &(vtc_S18988C8[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18988C8),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18988C8),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  S18988C10  : virtual S18988C8 {
  virtual  ~S18988C10(); // _ZN9S18988C10D2Ev
  S18988C10(); // tgen
};
//SIG(-1 S18988C10) C1{ VBC2{ v1} vd}


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

static void Test_S18988C10()
{
  extern Class_Descriptor cd_S18988C10;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18988C10, buf);
    S18988C10 *dp, &lv = *(dp=new (buf) S18988C10());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18988C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18988C10)");
    check_base_class_offset(lv, (S18988C8*), 0, "S18988C10");
    test_class_info(&lv, &cd_S18988C10);
    dp->~S18988C10();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C10(Test_S18988C10, "S18988C10", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN9S18988C10C1Ev();
extern void _ZN9S18988C10D2Ev();
Name_Map name_map_S18988C10[] = {
  NSPAIR(_ZN9S18988C10C1Ev),
  NSPAIR(_ZN9S18988C10D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
static Base_Class bases_S18988C10[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18988C8,    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 _ZTI9S18988C10[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN9S18988C10D1Ev();
extern void _ZN9S18988C10D0Ev();
static  VTBL_ENTRY vtc_S18988C10[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D0Ev,
};
extern VTBL_ENTRY _ZTV9S18988C10[];
static  VTT_ENTRY vtt_S18988C10[] = {
  {&(_ZTV9S18988C10[4]),  4,7},
  {&(_ZTV9S18988C10[4]),  4,7},
};
extern VTBL_ENTRY _ZTI9S18988C10[];
extern  VTBL_ENTRY _ZTV9S18988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18988C10[];
Class_Descriptor cd_S18988C10 = {  "S18988C10", // class name
  bases_S18988C10, 1,
  &(vtc_S18988C10[0]), // expected_vtbl_contents
  &(vtt_S18988C10[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI9S18988C10),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV9S18988C10),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT9S18988C10),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  S18988C9  : S18988C10 , virtual S9624C48 {
  ::S20948C8 s18988c9f0;
  virtual  ~S18988C9(); // _ZN8S18988C9D2Ev
  S18988C9(); // tgen
};
//SIG(-1 S18988C9) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


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

static void Test_S18988C9()
{
  extern Class_Descriptor cd_S18988C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S18988C9, buf);
    S18988C9 *dp, &lv = *(dp=new (buf) S18988C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S18988C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18988C9)");
    check_base_class_offset(lv, (S18988C8*)(S18988C10*), 0, "S18988C9");
    check_base_class_offset(lv, (S18988C10*), 0, "S18988C9");
    check_base_class_offset(lv, (S9624C48*), 0, "S18988C9");
    check_field_offset(lv, s18988c9f0, ABISELECT(8,4), "S18988C9.s18988c9f0");
    test_class_info(&lv, &cd_S18988C9);
    dp->~S18988C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C9(Test_S18988C9, "S18988C9", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S18988C9C1Ev();
extern void _ZN8S18988C9D2Ev();
Name_Map name_map_S18988C9[] = {
  NSPAIR(_ZN8S18988C9C1Ev),
  NSPAIR(_ZN8S18988C9D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C10;
extern VTBL_ENTRY _ZTI9S18988C10[];
extern  VTBL_ENTRY _ZTV9S18988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18988C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S18988C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18988C8,    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_S18988C10,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S18988C9[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C9D1Ev();
extern void _ZN8S18988C9D0Ev();
static  VTBL_ENTRY vtc_S18988C9[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D0Ev,
};
extern VTBL_ENTRY _ZTV8S18988C9[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN9S18988C10D1Ev();
extern void _ZN9S18988C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18988C10__8S18988C9[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D0Ev,
};
static  VTT_ENTRY vtt_S18988C9[] = {
  {&(_ZTV8S18988C9[5]),  5,8},
  {&(_tg__ZTV9S18988C10__8S18988C9[4]),  4,7},
  {&(_tg__ZTV9S18988C10__8S18988C9[4]),  4,7},
  {&(_ZTV8S18988C9[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S18988C9[];
extern  VTBL_ENTRY _ZTV8S18988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C9[];
Class_Descriptor cd_S18988C9 = {  "S18988C9", // class name
  bases_S18988C9, 3,
  &(vtc_S18988C9[0]), // expected_vtbl_contents
  &(vtt_S18988C9[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S18988C9),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18988C9),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18988C9),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18988C6  : S9624C48 , virtual S20948C7_nt , S18988C8 , S18988C9 {
  int s18988c6f0;
  virtual  ~S18988C6(); // _ZN8S18988C6D2Ev
  S18988C6(); // tgen
};
//SIG(-1 S18988C6) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


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

static void Test_S18988C6()
{
  extern Class_Descriptor cd_S18988C6;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S18988C6, buf);
    S18988C6 *dp, &lv = *(dp=new (buf) S18988C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S18988C6)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18988C6)");
    /*is_ambiguous_... S18988C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S18988C6");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S18988C6");
    /*is_ambiguous_... S18988C6::S18988C8 */ AMB_check_base_class_offset(lv, (S18988C8*), 0, "S18988C6");
    check_base_class_offset(lv, (S18988C8*)(S18988C10*)(S18988C9*), ABISELECT(8,4), "S18988C6");
    check_base_class_offset(lv, (S18988C10*)(S18988C9*), ABISELECT(8,4), "S18988C6");
    check_base_class_offset(lv, (S9624C48*)(S18988C9*), ABISELECT(64,36), "S18988C6");
    check_base_class_offset(lv, (S18988C9*), ABISELECT(8,4), "S18988C6");
    check_field_offset(lv, s18988c6f0, ABISELECT(24,16), "S18988C6.s18988c6f0");
    test_class_info(&lv, &cd_S18988C6);
    dp->~S18988C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C6(Test_S18988C6, "S18988C6", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S18988C6C1Ev();
extern void _ZN8S18988C6D2Ev();
Name_Map name_map_S18988C6[] = {
  NSPAIR(_ZN8S18988C6C1Ev),
  NSPAIR(_ZN8S18988C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C10;
extern VTBL_ENTRY _ZTI9S18988C10[];
extern  VTBL_ENTRY _ZTV9S18988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18988C10[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S18988C9;
extern VTBL_ENTRY _ZTI8S18988C9[];
extern  VTBL_ENTRY _ZTV8S18988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C9[];
static Base_Class bases_S18988C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S18988C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S18988C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S18988C10,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S18988C9,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI8S18988C6[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C6D1Ev();
extern void _ZN8S18988C6D0Ev();
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S18988C6[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev),
};
extern VTBL_ENTRY _ZTV8S18988C6[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C9D1Ev();
extern void _ZN8S18988C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C9__8S18988C6[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN9S18988C10D1Ev();
extern void _ZN9S18988C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18988C108S18988C9__8S18988C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D0Ev,
};
static  VTT_ENTRY vtt_S18988C6[] = {
  {&(_ZTV8S18988C6[5]),  5,21},
  {&(_tg__ZTV8S18988C9__8S18988C6[5]),  5,8},
  {&(_tg__ZTV9S18988C108S18988C9__8S18988C6[4]),  4,7},
  {&(_tg__ZTV9S18988C108S18988C9__8S18988C6[4]),  4,7},
  {&(_tg__ZTV8S18988C9__8S18988C6[5]),  5,8},
  {&(_ZTV8S18988C6[19]),  19,21},
  {&(_ZTV8S18988C6[13]),  13,21},
  {&(_ZTV8S18988C6[13]),  13,21},
};
extern VTBL_ENTRY _ZTI8S18988C6[];
extern  VTBL_ENTRY _ZTV8S18988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C6[];
static VTBL_ENTRY alt_thunk_names160[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18988C6 = {  "S18988C6", // class name
  bases_S18988C6, 7,
  &(vtc_S18988C6[0]), // expected_vtbl_contents
  &(vtt_S18988C6[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S18988C6),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S18988C6),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18988C6),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names160,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18988C3  : S18988C4 , virtual S9624C48 , virtual S18988C6 {
  virtual void  v2(); // _ZN8S18988C32v2Ev
  ~S18988C3(); // tgen
  S18988C3(); // tgen
};
//SIG(-1 S18988C3) C1{ BC2{ BC3{ m}} VBC3 VBC4{ BC3 VBC5{ vd m FD} BC6{ v2} BC7{ BC8{ VBC6 vd} VBC3 vd FC9{ m Fc[7]}} vd Fi} v1}


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

static void Test_S18988C3()
{
  extern Class_Descriptor cd_S18988C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S18988C3, buf);
    S18988C3 *dp, &lv = *(dp=new (buf) S18988C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S18988C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18988C3)");
    check_base_class_offset(lv, (S9624C48*)(S18988C4*), 0, "S18988C3");
    check_base_class_offset(lv, (S18988C4*), 0, "S18988C3");
    /*is_ambiguous_... S18988C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), ABISELECT(8,4), "S18988C3");
    check_base_class_offset(lv, (S9624C48*)(S18988C9*)(S18988C6*), ABISELECT(8,4), "S18988C3");
    /*is_ambiguous_... S18988C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S18988C6*), ABISELECT(16,8), "S18988C3");
    check_base_class_offset(lv, (S20948C7_nt*)(S18988C6*), ABISELECT(48,28), "S18988C3");
    /*is_ambiguous_... S18988C6::S18988C8 */ AMB_check_base_class_offset(lv, (S18988C8*)(S18988C6*), ABISELECT(16,8), "S18988C3");
    check_base_class_offset(lv, (S18988C8*)(S18988C10*)(S18988C9*)(S18988C6*), 0, "S18988C3");
    check_base_class_offset(lv, (S18988C10*)(S18988C9*)(S18988C6*), ABISELECT(24,12), "S18988C3");
    check_base_class_offset(lv, (S18988C9*)(S18988C6*), ABISELECT(24,12), "S18988C3");
    check_base_class_offset(lv, (S18988C6*), ABISELECT(16,8), "S18988C3");
    test_class_info(&lv, &cd_S18988C3);
    dp->~S18988C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C3(Test_S18988C3, "S18988C3", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S18988C3C1Ev();
extern void _ZN8S18988C3D1Ev();
Name_Map name_map_S18988C3[] = {
  NSPAIR(_ZN8S18988C3C1Ev),
  NSPAIR(_ZN8S18988C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S18988C4;
extern VTBL_ENTRY _ZTI8S18988C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C10;
extern VTBL_ENTRY _ZTI9S18988C10[];
extern  VTBL_ENTRY _ZTV9S18988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18988C10[];
extern Class_Descriptor cd_S18988C9;
extern VTBL_ENTRY _ZTI8S18988C9[];
extern  VTBL_ENTRY _ZTV8S18988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C9[];
extern Class_Descriptor cd_S18988C6;
extern VTBL_ENTRY _ZTI8S18988C6[];
extern  VTBL_ENTRY _ZTV8S18988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C6[];
static Base_Class bases_S18988C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18988C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    29, //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
    9, //immediately_derived
  0, 1},
  {&cd_S18988C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18988C8,    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
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S18988C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S18988C9,    ABISELECT(24,12), //bcp->offset
    21, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18988C6,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18988C3[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C32v2Ev();
extern void _ZN8S18988C3D1Ev();
extern void _ZN8S18988C3D0Ev();
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S18988C3D1Ev,_ZThn8_N8S18988C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S18988C3D0Ev,_ZThn8_N8S18988C3D0Ev)() __attribute__((weak));
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S18988C3D1Ev,_ZTvn4_n28_N8S18988C3D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S18988C3D0Ev,_ZTvn4_n28_N8S18988C3D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S18988C3D1Ev,_ZThn28_N8S18988C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S18988C3D0Ev,_ZThn28_N8S18988C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S18988C3[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C32v2Ev,
  (VTBL_ENTRY)&_ZN8S18988C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C3D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C3D1Ev,_ZTvn4_n28_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C3D0Ev,_ZTvn4_n28_N8S18988C3D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev),
};
extern VTBL_ENTRY _ZTV8S18988C3[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C6D1Ev();
extern void _ZN8S18988C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C6__8S18988C3[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C9D1Ev();
extern void _ZN8S18988C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C98S18988C6__8S18988C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN9S18988C10D1Ev();
extern void _ZN9S18988C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18988C108S18988C98S18988C6__8S18988C3[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D0Ev,
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__9S18988C108S18988C98S18988C6__8S18988C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__8S18988C98S18988C6__8S18988C3[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S18988C6__8S18988C3[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S18988C9__8S18988C6__8S18988C3[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev),
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__A1__8S18988C6__8S18988C3[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
static  VTT_ENTRY vtt_S18988C3[] = {
  {&(_ZTV8S18988C3[7]),  7,34},
  {&(_ZTV8S18988C3[18]),  18,34},
  {&(_ZTV8S18988C3[32]),  32,34},
  {&(_ZTV8S18988C3[26]),  26,34},
  {&(_ZTV8S18988C3[7]),  7,34},
  {&(_tg__ZTV8S18988C6__8S18988C3[5]),  5,8},
  {&(_tg__ZTV8S18988C98S18988C6__8S18988C3[5]),  5,8},
  {&(_tg__ZTV9S18988C108S18988C98S18988C6__8S18988C3[4]),  4,7},
  {&(_tg__ZTV8S18988C8__9S18988C108S18988C98S18988C6__8S18988C3[3]),  3,4},
  {&(_tg__ZTV8S18988C8__8S18988C98S18988C6__8S18988C3[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__8S18988C6__8S18988C3[3]),  3,5},
  {&(_tg__ZTV8S18988C9__8S18988C6__8S18988C3[5]),  5,8},
  {&(_tg__ZTV8S18988C8__A1__8S18988C6__8S18988C3[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18988C3[];
extern  VTBL_ENTRY _ZTV8S18988C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C3[];
static VTBL_ENTRY alt_thunk_names161[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C3D0Ev,_ZThn28_N8S18988C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C3D1Ev,_ZThn28_N8S18988C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C3D0Ev,_ZThn8_N8S18988C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C3D1Ev,_ZThn8_N8S18988C3D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18988C3 = {  "S18988C3", // class name
  bases_S18988C3, 10,
  &(vtc_S18988C3[0]), // expected_vtbl_contents
  &(vtt_S18988C3[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S18988C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S18988C3),34, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18988C3),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names161,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18988C2  : S18988C3 {
  ~S18988C2(); // tgen
  S18988C2(); // tgen
};
//SIG(-1 S18988C2) C1{ BC2{ BC3{ BC4{ m}} VBC4 VBC5{ BC4 VBC6{ vd m FD} BC7{ v1} BC8{ BC9{ VBC7 vd} VBC4 vd FC10{ m Fc[7]}} vd Fi} v2}}


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

static void Test_S18988C2()
{
  extern Class_Descriptor cd_S18988C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S18988C2, buf);
    S18988C2 *dp, &lv = *(dp=new (buf) S18988C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S18988C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18988C2)");
    check_base_class_offset(lv, (S9624C48*)(S18988C4*)(S18988C3*), 0, "S18988C2");
    check_base_class_offset(lv, (S18988C4*)(S18988C3*), 0, "S18988C2");
    /*is_ambiguous_... S18988C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S18988C3*), ABISELECT(8,4), "S18988C2");
    check_base_class_offset(lv, (S9624C48*)(S18988C9*)(S18988C6*), ABISELECT(8,4), "S18988C2");
    /*is_ambiguous_... S18988C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S18988C6*), ABISELECT(16,8), "S18988C2");
    check_base_class_offset(lv, (S20948C7_nt*)(S18988C6*), ABISELECT(48,28), "S18988C2");
    /*is_ambiguous_... S18988C6::S18988C8 */ AMB_check_base_class_offset(lv, (S18988C8*)(S18988C6*), ABISELECT(16,8), "S18988C2");
    check_base_class_offset(lv, (S18988C8*)(S18988C10*)(S18988C9*)(S18988C6*), 0, "S18988C2");
    check_base_class_offset(lv, (S18988C10*)(S18988C9*)(S18988C6*), ABISELECT(24,12), "S18988C2");
    check_base_class_offset(lv, (S18988C9*)(S18988C6*), ABISELECT(24,12), "S18988C2");
    check_base_class_offset(lv, (S18988C6*)(S18988C3*), ABISELECT(16,8), "S18988C2");
    check_base_class_offset(lv, (S18988C3*), 0, "S18988C2");
    test_class_info(&lv, &cd_S18988C2);
    dp->~S18988C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C2(Test_S18988C2, "S18988C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S18988C2C1Ev();
extern void _ZN8S18988C2D1Ev();
Name_Map name_map_S18988C2[] = {
  NSPAIR(_ZN8S18988C2C1Ev),
  NSPAIR(_ZN8S18988C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S18988C4;
extern VTBL_ENTRY _ZTI8S18988C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C10;
extern VTBL_ENTRY _ZTI9S18988C10[];
extern  VTBL_ENTRY _ZTV9S18988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18988C10[];
extern Class_Descriptor cd_S18988C9;
extern VTBL_ENTRY _ZTI8S18988C9[];
extern  VTBL_ENTRY _ZTV8S18988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C9[];
extern Class_Descriptor cd_S18988C6;
extern VTBL_ENTRY _ZTI8S18988C6[];
extern  VTBL_ENTRY _ZTV8S18988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C6[];
extern Class_Descriptor cd_S18988C3;
extern VTBL_ENTRY _ZTI8S18988C3[];
extern  VTBL_ENTRY _ZTV8S18988C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C3[];
static Base_Class bases_S18988C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18988C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    29, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18988C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18988C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    10, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S18988C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S18988C9,    ABISELECT(24,12), //bcp->offset
    21, //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
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18988C6,    ABISELECT(16,8), //bcp->offset
    11, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18988C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S18988C2[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C32v2Ev();
extern void _ZN8S18988C2D1Ev();
extern void _ZN8S18988C2D0Ev();
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S18988C2D1Ev,_ZTv0_n28_N8S18988C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S18988C2D1Ev,_ZThn8_N8S18988C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S18988C2D0Ev,_ZTv0_n28_N8S18988C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S18988C2D0Ev,_ZThn8_N8S18988C2D0Ev)() __attribute__((weak));
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S18988C2D1Ev,_ZTvn4_n28_N8S18988C2D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S18988C2D0Ev,_ZTvn4_n28_N8S18988C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S18988C2D1Ev,_ZTv0_n12_N8S18988C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S18988C2D1Ev,_ZThn28_N8S18988C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C2D0Ev,_ZTv0_n12_N8S18988C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S18988C2D0Ev,_ZThn28_N8S18988C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S18988C2[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C32v2Ev,
  (VTBL_ENTRY)&_ZN8S18988C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C2D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C2D1Ev,_ZTv0_n28_N8S18988C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C2D0Ev,_ZTv0_n28_N8S18988C2D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C2D1Ev,_ZTvn4_n28_N8S18988C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C2D0Ev,_ZTvn4_n28_N8S18988C2D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C2D1Ev,_ZTv0_n12_N8S18988C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C2D0Ev,_ZTv0_n12_N8S18988C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S18988C2[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C32v2Ev();
extern void _ZN8S18988C3D1Ev();
extern void _ZN8S18988C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C3__8S18988C2[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C32v2Ev,
  (VTBL_ENTRY)&_ZN8S18988C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C3D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S18988C3D1Ev,_ZThn8_N8S18988C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S18988C3D0Ev,_ZThn8_N8S18988C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S18988C6__8S18988C3__8S18988C2[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S18988C3D1Ev,_ZThn28_N8S18988C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S18988C3D0Ev,_ZThn28_N8S18988C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S18988C3__8S18988C2[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S18988C3D1Ev,_ZTvn4_n28_N8S18988C3D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S18988C3D0Ev,_ZTvn4_n28_N8S18988C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S18988C98S18988C6__8S18988C3__8S18988C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C3D1Ev,_ZTvn4_n28_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C3D0Ev,_ZTvn4_n28_N8S18988C3D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C6D1Ev();
extern void _ZN8S18988C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C6__8S18988C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C9D1Ev();
extern void _ZN8S18988C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C98S18988C6__8S18988C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN9S18988C10D1Ev();
extern void _ZN9S18988C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18988C108S18988C98S18988C6__8S18988C2[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D0Ev,
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__9S18988C108S18988C98S18988C6__8S18988C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__8S18988C98S18988C6__8S18988C2[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S18988C6__8S18988C2[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S18988C9__8S18988C6__8S18988C2[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev),
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__A1__8S18988C6__8S18988C2[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
static  VTT_ENTRY vtt_S18988C2[] = {
  {&(_ZTV8S18988C2[7]),  7,34},
  {&(_tg__ZTV8S18988C3__8S18988C2[7]),  7,11},
  {&(_tg__ZTV8S18988C6__8S18988C3__8S18988C2[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__8S18988C3__8S18988C2[3]),  3,5},
  {&(_tg__ZTV8S18988C98S18988C6__8S18988C3__8S18988C2[5]),  5,8},
  {&(_tg__ZTV8S18988C3__8S18988C2[7]),  7,11},
  {&(_ZTV8S18988C2[18]),  18,34},
  {&(_ZTV8S18988C2[32]),  32,34},
  {&(_ZTV8S18988C2[26]),  26,34},
  {&(_ZTV8S18988C2[7]),  7,34},
  {&(_tg__ZTV8S18988C6__8S18988C2[5]),  5,8},
  {&(_tg__ZTV8S18988C98S18988C6__8S18988C2[5]),  5,8},
  {&(_tg__ZTV9S18988C108S18988C98S18988C6__8S18988C2[4]),  4,7},
  {&(_tg__ZTV8S18988C8__9S18988C108S18988C98S18988C6__8S18988C2[3]),  3,4},
  {&(_tg__ZTV8S18988C8__8S18988C98S18988C6__8S18988C2[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__8S18988C6__8S18988C2[3]),  3,5},
  {&(_tg__ZTV8S18988C9__8S18988C6__8S18988C2[5]),  5,8},
  {&(_tg__ZTV8S18988C8__A1__8S18988C6__8S18988C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18988C2[];
extern  VTBL_ENTRY _ZTV8S18988C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C2[];
static VTBL_ENTRY alt_thunk_names162[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C3D0Ev,_ZThn28_N8S18988C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C3D1Ev,_ZThn28_N8S18988C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C3D0Ev,_ZThn8_N8S18988C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C3D1Ev,_ZThn8_N8S18988C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C2D0Ev,_ZTv0_n12_N8S18988C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C2D0Ev,_ZThn28_N8S18988C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C2D1Ev,_ZTv0_n12_N8S18988C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C2D1Ev,_ZThn28_N8S18988C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C2D0Ev,_ZTv0_n28_N8S18988C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C2D0Ev,_ZThn8_N8S18988C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C2D1Ev,_ZTv0_n28_N8S18988C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C2D1Ev,_ZThn8_N8S18988C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18988C2 = {  "S18988C2", // class name
  bases_S18988C2, 11,
  &(vtc_S18988C2[0]), // expected_vtbl_contents
  &(vtt_S18988C2[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S18988C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S18988C2),34, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18988C2),18, //virtual table table var
  7, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names162,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S18988C1  : virtual S18988C2 {
  virtual  ~S18988C1(); // _ZN8S18988C1D2Ev
  S18988C1(); // tgen
};
//SIG(1 S18988C1) C1{ VBC2{ BC3{ BC4{ BC5{ m}} VBC5 VBC6{ BC5 VBC7{ vd m FD} BC8{ v1} BC9{ BC10{ VBC8 vd} VBC5 vd FC11{ m Fc[7]}} vd Fi} v2}} vd}


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

static void Test_S18988C1()
{
  extern Class_Descriptor cd_S18988C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S18988C1, buf);
    S18988C1 *dp, &lv = *(dp=new (buf) S18988C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S18988C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18988C1)");
    check_base_class_offset(lv, (S9624C48*)(S18988C4*)(S18988C3*)(S18988C2*), 0, "S18988C1");
    check_base_class_offset(lv, (S18988C4*)(S18988C3*)(S18988C2*), 0, "S18988C1");
    /*is_ambiguous_... S18988C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S18988C3*)(S18988C2*), ABISELECT(8,4), "S18988C1");
    check_base_class_offset(lv, (S9624C48*)(S18988C9*)(S18988C6*), ABISELECT(8,4), "S18988C1");
    /*is_ambiguous_... S18988C6::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S18988C6*), ABISELECT(16,8), "S18988C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S18988C6*), ABISELECT(48,28), "S18988C1");
    /*is_ambiguous_... S18988C6::S18988C8 */ AMB_check_base_class_offset(lv, (S18988C8*)(S18988C6*), ABISELECT(16,8), "S18988C1");
    check_base_class_offset(lv, (S18988C8*)(S18988C10*)(S18988C9*)(S18988C6*), 0, "S18988C1");
    check_base_class_offset(lv, (S18988C10*)(S18988C9*)(S18988C6*), ABISELECT(24,12), "S18988C1");
    check_base_class_offset(lv, (S18988C9*)(S18988C6*), ABISELECT(24,12), "S18988C1");
    check_base_class_offset(lv, (S18988C6*)(S18988C3*)(S18988C2*), ABISELECT(16,8), "S18988C1");
    check_base_class_offset(lv, (S18988C3*)(S18988C2*), 0, "S18988C1");
    check_base_class_offset(lv, (S18988C2*), 0, "S18988C1");
    test_class_info(&lv, &cd_S18988C1);
    dp->~S18988C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18988C1(Test_S18988C1, "S18988C1", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S18988C1C1Ev();
extern void _ZN8S18988C1D2Ev();
Name_Map name_map_S18988C1[] = {
  NSPAIR(_ZN8S18988C1C1Ev),
  NSPAIR(_ZN8S18988C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S18988C4;
extern VTBL_ENTRY _ZTI8S18988C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C8;
extern VTBL_ENTRY _ZTI8S18988C8[];
extern  VTBL_ENTRY _ZTV8S18988C8[];
extern Class_Descriptor cd_S18988C10;
extern VTBL_ENTRY _ZTI9S18988C10[];
extern  VTBL_ENTRY _ZTV9S18988C10[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT9S18988C10[];
extern Class_Descriptor cd_S18988C9;
extern VTBL_ENTRY _ZTI8S18988C9[];
extern  VTBL_ENTRY _ZTV8S18988C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C9[];
extern Class_Descriptor cd_S18988C6;
extern VTBL_ENTRY _ZTI8S18988C6[];
extern  VTBL_ENTRY _ZTV8S18988C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C6[];
extern Class_Descriptor cd_S18988C3;
extern VTBL_ENTRY _ZTI8S18988C3[];
extern  VTBL_ENTRY _ZTV8S18988C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C3[];
extern Class_Descriptor cd_S18988C2;
extern VTBL_ENTRY _ZTI8S18988C2[];
extern  VTBL_ENTRY _ZTV8S18988C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C2[];
static Base_Class bases_S18988C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S18988C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    10, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(48,28), //bcp->offset
    32, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    9, //immediately_derived
  0, 1},
  {&cd_S18988C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18988C8,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    7, //immediately_derived
  0, 1},
  {&cd_S18988C10,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    19, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    8, //immediately_derived
  0, 0},
  {&cd_S18988C9,    ABISELECT(24,12), //bcp->offset
    24, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    18, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    9, //immediately_derived
  0, 0},
  {&cd_S18988C6,    ABISELECT(16,8), //bcp->offset
    14, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    17, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    10, //immediately_derived
  0, 1},
  {&cd_S18988C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    7, //init_seq
    11, //immediately_derived
  0, 0},
  {&cd_S18988C2,    0, //bcp->offset
    -1, //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},
  {0}};
extern VTBL_ENTRY _ZTI8S18988C1[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C32v2Ev();
extern void _ZN8S18988C1D1Ev();
extern void _ZN8S18988C1D0Ev();
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S18988C1D1Ev,_ZTv0_n28_N8S18988C1D1Ev)();
extern void ABISELECT(_ZThn16_N8S18988C1D1Ev,_ZThn8_N8S18988C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S18988C1D0Ev,_ZTv0_n28_N8S18988C1D0Ev)();
extern void ABISELECT(_ZThn16_N8S18988C1D0Ev,_ZThn8_N8S18988C1D0Ev)() __attribute__((weak));
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S18988C1D1Ev,_ZTvn4_n28_N8S18988C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S18988C1D0Ev,_ZTvn4_n28_N8S18988C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S18988C1D1Ev,_ZTv0_n12_N8S18988C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S18988C1D1Ev,_ZThn28_N8S18988C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C1D0Ev,_ZTv0_n12_N8S18988C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S18988C1D0Ev,_ZThn28_N8S18988C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S18988C1[] = {
  0,
  0,
  0,
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C1[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C32v2Ev,
  (VTBL_ENTRY)&_ZN8S18988C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C1D0Ev,
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18988C1[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C1D1Ev,_ZTv0_n28_N8S18988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C1D0Ev,_ZTv0_n28_N8S18988C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18988C1[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C1D1Ev,_ZTvn4_n28_N8S18988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C1D0Ev,_ZTvn4_n28_N8S18988C1D0Ev),
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S18988C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C1D1Ev,_ZTv0_n12_N8S18988C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C1D0Ev,_ZTv0_n12_N8S18988C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S18988C1[];
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C32v2Ev();
extern void _ZN8S18988C2D1Ev();
extern void _ZN8S18988C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C2__8S18988C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C32v2Ev,
  (VTBL_ENTRY)&_ZN8S18988C2D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C2D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C32v2Ev();
extern void _ZN8S18988C3D1Ev();
extern void _ZN8S18988C3D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C38S18988C2__8S18988C1[] = {
  0,
  ABISELECT(48,28),
  ABISELECT(16,8),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C32v2Ev,
  (VTBL_ENTRY)&_ZN8S18988C3D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C3D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev)();
extern void ABISELECT(_ZThn16_N8S18988C3D1Ev,_ZThn8_N8S18988C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev)();
extern void ABISELECT(_ZThn16_N8S18988C3D0Ev,_ZThn8_N8S18988C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S18988C6__8S18988C38S18988C2__8S18988C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev)();
extern void ABISELECT(_ZThn48_N8S18988C3D1Ev,_ZThn28_N8S18988C3D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev)();
extern void ABISELECT(_ZThn48_N8S18988C3D0Ev,_ZThn28_N8S18988C3D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S18988C38S18988C2__8S18988C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S18988C3D1Ev,_ZTvn4_n28_N8S18988C3D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S18988C3D0Ev,_ZTvn4_n28_N8S18988C3D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S18988C98S18988C6__8S18988C38S18988C2__8S18988C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18988C3[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C3D1Ev,_ZTvn4_n28_N8S18988C3D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C3D0Ev,_ZTvn4_n28_N8S18988C3D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S18988C2D1Ev,_ZTv0_n28_N8S18988C2D1Ev)();
extern void ABISELECT(_ZThn16_N8S18988C2D1Ev,_ZThn8_N8S18988C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S18988C2D0Ev,_ZTv0_n28_N8S18988C2D0Ev)();
extern void ABISELECT(_ZThn16_N8S18988C2D0Ev,_ZThn8_N8S18988C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV8S18988C6__8S18988C2__8S18988C1[] = {
  ABISELECT(-16,-8),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C2D1Ev,_ZTv0_n28_N8S18988C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S18988C2D0Ev,_ZTv0_n28_N8S18988C2D0Ev),
};
extern void ABISELECT(_ZTv0_n24_N8S18988C2D1Ev,_ZTv0_n12_N8S18988C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S18988C2D1Ev,_ZThn28_N8S18988C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C2D0Ev,_ZTv0_n12_N8S18988C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S18988C2D0Ev,_ZThn28_N8S18988C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S18988C2__8S18988C1[] = {
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C2D1Ev,_ZTv0_n12_N8S18988C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C2D0Ev,_ZTv0_n12_N8S18988C2D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S18988C2D1Ev,_ZTvn4_n28_N8S18988C2D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S18988C2D0Ev,_ZTvn4_n28_N8S18988C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S18988C98S18988C6__8S18988C2__8S18988C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S18988C2[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C2D1Ev,_ZTvn4_n28_N8S18988C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S18988C2D0Ev,_ZTvn4_n28_N8S18988C2D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C6D1Ev();
extern void _ZN8S18988C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C6__8S18988C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-16,-8),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C6D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN8S18988C9D1Ev();
extern void _ZN8S18988C9D0Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C98S18988C6__8S18988C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D1Ev,
  (VTBL_ENTRY)&_ZN8S18988C9D0Ev,
};
extern void _ZN8S18988C82v1Ev();
extern void _ZN9S18988C10D1Ev();
extern void _ZN9S18988C10D0Ev();
static  VTBL_ENTRY _tg__ZTV9S18988C108S18988C98S18988C6__8S18988C1[] = {
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  0,
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D1Ev,
  (VTBL_ENTRY)&_ZN9S18988C10D0Ev,
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__9S18988C108S18988C98S18988C6__8S18988C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI9S18988C10[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__8S18988C98S18988C6__8S18988C1[] = {
  0,
  ABISELECT(24,12),
  (VTBL_ENTRY)&(_ZTI8S18988C9[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev)();
extern void ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S18988C6__8S18988C1[] = {
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev),
};
extern void _ZN8S18988C82v1Ev();
extern void ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev)();
extern void ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S18988C9__8S18988C6__8S18988C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-24,-12),
  ABISELECT(-24,-12),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D1Ev,_ZThn4_N8S18988C6D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S18988C6D0Ev,_ZThn4_N8S18988C6D0Ev),
};
extern void _ZN8S18988C82v1Ev();
static  VTBL_ENTRY _tg__ZTV8S18988C8__A1__8S18988C6__8S18988C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S18988C6[0]),
  (VTBL_ENTRY)&_ZN8S18988C82v1Ev,
};
static  VTT_ENTRY vtt_S18988C1[] = {
  {&(_ZTV8S18988C1[10]),  10,37},
  {&(_ZTV8S18988C1[10]),  10,37},
  {&(_ZTV8S18988C1[21]),  21,37},
  {&(_ZTV8S18988C1[35]),  35,37},
  {&(_ZTV8S18988C1[29]),  29,37},
  {&(_ZTV8S18988C1[10]),  10,37},
  {&(_tg__ZTV8S18988C2__8S18988C1[7]),  7,11},
  {&(_tg__ZTV8S18988C38S18988C2__8S18988C1[7]),  7,11},
  {&(_tg__ZTV8S18988C6__8S18988C38S18988C2__8S18988C1[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__8S18988C38S18988C2__8S18988C1[3]),  3,5},
  {&(_tg__ZTV8S18988C98S18988C6__8S18988C38S18988C2__8S18988C1[5]),  5,8},
  {&(_tg__ZTV8S18988C38S18988C2__8S18988C1[7]),  7,11},
  {&(_tg__ZTV8S18988C6__8S18988C2__8S18988C1[7]),  7,10},
  {&(_tg__ZTV11S20948C7_nt__8S18988C2__8S18988C1[3]),  3,5},
  {&(_tg__ZTV8S18988C98S18988C6__8S18988C2__8S18988C1[5]),  5,8},
  {&(_tg__ZTV8S18988C2__8S18988C1[7]),  7,11},
  {&(_tg__ZTV8S18988C6__8S18988C1[5]),  5,8},
  {&(_tg__ZTV8S18988C98S18988C6__8S18988C1[5]),  5,8},
  {&(_tg__ZTV9S18988C108S18988C98S18988C6__8S18988C1[4]),  4,7},
  {&(_tg__ZTV8S18988C8__9S18988C108S18988C98S18988C6__8S18988C1[3]),  3,4},
  {&(_tg__ZTV8S18988C8__8S18988C98S18988C6__8S18988C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__8S18988C6__8S18988C1[3]),  3,5},
  {&(_tg__ZTV8S18988C9__8S18988C6__8S18988C1[5]),  5,8},
  {&(_tg__ZTV8S18988C8__A1__8S18988C6__8S18988C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18988C1[];
extern  VTBL_ENTRY _ZTV8S18988C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18988C1[];
static VTBL_ENTRY alt_thunk_names163[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D0Ev,_ZTv0_n12_N8S18988C6D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D0Ev,_ZThn20_N8S18988C6D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C6D1Ev,_ZTv0_n12_N8S18988C6D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S18988C6D1Ev,_ZThn20_N8S18988C6D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C2D0Ev,_ZTv0_n12_N8S18988C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C2D0Ev,_ZThn28_N8S18988C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C2D1Ev,_ZTv0_n12_N8S18988C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C2D1Ev,_ZThn28_N8S18988C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C2D0Ev,_ZTv0_n28_N8S18988C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C2D0Ev,_ZThn8_N8S18988C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C2D1Ev,_ZTv0_n28_N8S18988C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C2D1Ev,_ZThn8_N8S18988C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C3D0Ev,_ZTv0_n12_N8S18988C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C3D0Ev,_ZThn28_N8S18988C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C3D1Ev,_ZTv0_n12_N8S18988C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C3D1Ev,_ZThn28_N8S18988C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C3D0Ev,_ZTv0_n28_N8S18988C3D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C3D0Ev,_ZThn8_N8S18988C3D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C3D1Ev,_ZTv0_n28_N8S18988C3D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C3D1Ev,_ZThn8_N8S18988C3D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C1D0Ev,_ZTv0_n12_N8S18988C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C1D0Ev,_ZThn28_N8S18988C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S18988C1D1Ev,_ZTv0_n12_N8S18988C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S18988C1D1Ev,_ZThn28_N8S18988C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C1D0Ev,_ZTv0_n28_N8S18988C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C1D0Ev,_ZThn8_N8S18988C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S18988C1D1Ev,_ZTv0_n28_N8S18988C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn16_N8S18988C1D1Ev,_ZThn8_N8S18988C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S18988C1 = {  "S18988C1", // class name
  bases_S18988C1, 12,
  &(vtc_S18988C1[0]), // expected_vtbl_contents
  &(vtt_S18988C1[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S18988C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18988C1),37, //virtual function table var
  10, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18988C1),24, //virtual table table var
  8, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names163,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17459C2_nt  {
  void *s17459c2f0;
  int s17459c2f1;
  void  mf17459c2(); // _ZN11S17459C2_nt9mf17459c2Ev
};
//SIG(-1 S17459C2_nt) C1{ m Fp Fi}


void  S17459C2_nt ::mf17459c2(){}

//skip512 S17459C2_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17459C4  {
  void *s17459c4f0;
  int s17459c4f1;
  void  mf17459c4(); // _ZN8S17459C49mf17459c4Ev
};
//SIG(-1 S17459C4) C1{ m Fp Fi}


void  S17459C4 ::mf17459c4(){}

static void Test_S17459C4()
{
  {
    init_simple_test("S17459C4");
    S17459C4 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S17459C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17459C4)");
    check_field_offset(lv, s17459c4f0, 0, "S17459C4.s17459c4f0");
    check_field_offset(lv, s17459c4f1, ABISELECT(8,4), "S17459C4.s17459c4f1");
  }
}
static Arrange_To_Call_Me vS17459C4(Test_S17459C4, "S17459C4", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S17459C1  {
  void *s17459c1f0;
  char s17459c1f1[1024];
  void *s17459c1f2[3];
  ::S17459C2_nt s17459c1f3;
  ::S17459C2_nt s17459c1f4;
  ::S17459C2_nt s17459c1f5;
  ::S17459C2_nt s17459c1f6;
  ::S17459C2_nt s17459c1f7;
  ::S17459C2_nt s17459c1f8;
  ::S17459C2_nt s17459c1f9;
  ::S17459C4 s17459c1f10;
  ::S17459C4 s17459c1f11;
  int s17459c1f12[2];
  long s17459c1f13;
  ::S9859C32_nt s17459c1f14;
  int s17459c1f15;
  void  mf17459c1(); // _ZN8S17459C19mf17459c1Ev
};
//SIG(1 S17459C1) C1{ m Fp Fc[1024] Fp[3] FC2{ m Fp Fi} FC2 FC2 FC2 FC2 FC2 FC2 FC3{ m Fp Fi} FC3 Fi[2] Fl FC4{ m FL[4]} Fi}


void  S17459C1 ::mf17459c1(){}

static void Test_S17459C1()
{
  {
    init_simple_test("S17459C1");
    S17459C1 lv;
    check2(sizeof(lv), ABISELECT(1256,1160), "sizeof(S17459C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17459C1)");
    check_field_offset(lv, s17459c1f0, 0, "S17459C1.s17459c1f0");
    check_field_offset(lv, s17459c1f1, ABISELECT(8,4), "S17459C1.s17459c1f1");
    check_field_offset(lv, s17459c1f2, ABISELECT(1032,1028), "S17459C1.s17459c1f2");
    check_field_offset(lv, s17459c1f3, ABISELECT(1056,1040), "S17459C1.s17459c1f3");
    check_field_offset(lv, s17459c1f4, ABISELECT(1072,1048), "S17459C1.s17459c1f4");
    check_field_offset(lv, s17459c1f5, ABISELECT(1088,1056), "S17459C1.s17459c1f5");
    check_field_offset(lv, s17459c1f6, ABISELECT(1104,1064), "S17459C1.s17459c1f6");
    check_field_offset(lv, s17459c1f7, ABISELECT(1120,1072), "S17459C1.s17459c1f7");
    check_field_offset(lv, s17459c1f8, ABISELECT(1136,1080), "S17459C1.s17459c1f8");
    check_field_offset(lv, s17459c1f9, ABISELECT(1152,1088), "S17459C1.s17459c1f9");
    check_field_offset(lv, s17459c1f10, ABISELECT(1168,1096), "S17459C1.s17459c1f10");
    check_field_offset(lv, s17459c1f11, ABISELECT(1184,1104), "S17459C1.s17459c1f11");
    check_field_offset(lv, s17459c1f12, ABISELECT(1200,1112), "S17459C1.s17459c1f12");
    check_field_offset(lv, s17459c1f13, ABISELECT(1208,1120), "S17459C1.s17459c1f13");
    check_field_offset(lv, s17459c1f14, ABISELECT(1216,1124), "S17459C1.s17459c1f14");
    check_field_offset(lv, s17459c1f15, ABISELECT(1248,1156), "S17459C1.s17459c1f15");
  }
}
static Arrange_To_Call_Me vS17459C1(Test_S17459C1, "S17459C1", ABISELECT(1256,1160));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14623C3_nt  {
  int s14623c3f0[10];
};
//SIG(-1 S14623C3_nt) C1{ Fi[10]}



//skip512 S14623C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14623C5  {
  int s14623c5f0[5];
  short s14623c5f1[6];
  char s14623c5f2[128];
  int s14623c5f3[2];
};
//SIG(-1 S14623C5) C1{ Fi[5] Fs[6] Fc[128] Fi[2]}



static void Test_S14623C5()
{
  {
    init_simple_test("S14623C5");
    S14623C5 lv;
    check2(sizeof(lv), 168, "sizeof(S14623C5)");
    check2(__alignof__(lv), 4, "__alignof__(S14623C5)");
    check_field_offset(lv, s14623c5f0, 0, "S14623C5.s14623c5f0");
    check_field_offset(lv, s14623c5f1, 20, "S14623C5.s14623c5f1");
    check_field_offset(lv, s14623c5f2, 32, "S14623C5.s14623c5f2");
    check_field_offset(lv, s14623c5f3, 160, "S14623C5.s14623c5f3");
  }
}
static Arrange_To_Call_Me vS14623C5(Test_S14623C5, "S14623C5", 168);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14623C2  {
  ::S14623C3_nt s14623c2f0;
  ::S14623C3_nt s14623c2f1;
  short s14623c2f2[2];
  int s14623c2f3[2];
  ::S14623C5 s14623c2f4;
  char s14623c2f5[4];
};
//SIG(-1 S14623C2) C1{ FC2{ Fi[10]} FC2 Fs[2] Fi[2] FC3{ Fi[5] Fs[6] Fc[128] Fi[2]} Fc[4]}



static void Test_S14623C2()
{
  {
    init_simple_test("S14623C2");
    S14623C2 lv;
    check2(sizeof(lv), 264, "sizeof(S14623C2)");
    check2(__alignof__(lv), 4, "__alignof__(S14623C2)");
    check_field_offset(lv, s14623c2f0, 0, "S14623C2.s14623c2f0");
    check_field_offset(lv, s14623c2f1, 40, "S14623C2.s14623c2f1");
    check_field_offset(lv, s14623c2f2, 80, "S14623C2.s14623c2f2");
    check_field_offset(lv, s14623c2f3, 84, "S14623C2.s14623c2f3");
    check_field_offset(lv, s14623c2f4, 92, "S14623C2.s14623c2f4");
    check_field_offset(lv, s14623c2f5, 260, "S14623C2.s14623c2f5");
  }
}
static Arrange_To_Call_Me vS14623C2(Test_S14623C2, "S14623C2", 264);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S14623C1  {
  void *s14623c1f0[3];
  int s14623c1f1[2];
  void *s14623c1f2[3];
  ::S14623C2 s14623c1f3;
  ::S14623C2 s14623c1f4;
  int s14623c1f5[2];
};
//SIG(1 S14623C1) C1{ Fp[3] Fi[2] Fp[3] FC2{ FC3{ Fi[10]} FC3 Fs[2] Fi[2] FC4{ Fi[5] Fs[6] Fc[128] Fi[2]} Fc[4]} FC2 Fi[2]}



static void Test_S14623C1()
{
  {
    init_simple_test("S14623C1");
    S14623C1 lv;
    check2(sizeof(lv), ABISELECT(592,568), "sizeof(S14623C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14623C1)");
    check_field_offset(lv, s14623c1f0, 0, "S14623C1.s14623c1f0");
    check_field_offset(lv, s14623c1f1, ABISELECT(24,12), "S14623C1.s14623c1f1");
    check_field_offset(lv, s14623c1f2, ABISELECT(32,20), "S14623C1.s14623c1f2");
    check_field_offset(lv, s14623c1f3, ABISELECT(56,32), "S14623C1.s14623c1f3");
    check_field_offset(lv, s14623c1f4, ABISELECT(320,296), "S14623C1.s14623c1f4");
    check_field_offset(lv, s14623c1f5, ABISELECT(584,560), "S14623C1.s14623c1f5");
  }
}
static Arrange_To_Call_Me vS14623C1(Test_S14623C1, "S14623C1", ABISELECT(592,568));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13271C3_nt  {
  short s13271c3f0;
  void *s13271c3f1;
};
//SIG(1 S13271C3_nt) C1{ Fs Fp}



//skip512 S13271C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13271C7_nt  {
  int s13271c7f0;
  int s13271c7f1;
};
//SIG(-1 S13271C7_nt) C1{ Fi[2]}



//skip512 S13271C7_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13271C8_nt  {
  short s13271c8f0;
  short s13271c8f1;
};
//SIG(-1 S13271C8_nt) C1{ Fs[2]}



//skip512 S13271C8_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13271C6  {
  ::S13271C7_nt s13271c6f0;
  ::S13271C8_nt s13271c6f1;
};
//SIG(-1 S13271C6) C1{ FC2{ Fi[2]} FC3{ Fs[2]}}



static void Test_S13271C6()
{
  {
    init_simple_test("S13271C6");
    S13271C6 lv;
    check2(sizeof(lv), 12, "sizeof(S13271C6)");
    check2(__alignof__(lv), 4, "__alignof__(S13271C6)");
    check_field_offset(lv, s13271c6f0, 0, "S13271C6.s13271c6f0");
    check_field_offset(lv, s13271c6f1, 8, "S13271C6.s13271c6f1");
  }
}
static Arrange_To_Call_Me vS13271C6(Test_S13271C6, "S13271C6", 12);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13271C5  {
  ::S13271C6 s13271c5f0;
  char s13271c5f1;
  int s13271c5f2;
  char s13271c5f3[30];
  int s13271c5f4;
  int s13271c5f5;
  char s13271c5f6;
};
//SIG(1 S13271C5) C1{ FC2{ FC3{ Fi[2]} FC4{ Fs[2]}} Fc Fi Fc[30] Fi[2] Fc}



static void Test_S13271C5()
{
  {
    init_simple_test("S13271C5");
    S13271C5 lv;
    check2(sizeof(lv), 64, "sizeof(S13271C5)");
    check2(__alignof__(lv), 4, "__alignof__(S13271C5)");
    check_field_offset(lv, s13271c5f0, 0, "S13271C5.s13271c5f0");
    check_field_offset(lv, s13271c5f1, 12, "S13271C5.s13271c5f1");
    check_field_offset(lv, s13271c5f2, 16, "S13271C5.s13271c5f2");
    check_field_offset(lv, s13271c5f3, 20, "S13271C5.s13271c5f3");
    check_field_offset(lv, s13271c5f4, 52, "S13271C5.s13271c5f4");
    check_field_offset(lv, s13271c5f5, 56, "S13271C5.s13271c5f5");
    check_field_offset(lv, s13271c5f6, 60, "S13271C5.s13271c5f6");
  }
}
static Arrange_To_Call_Me vS13271C5(Test_S13271C5, "S13271C5", 64);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13271C9_nt  {
  char s13271c9f0;
  char s13271c9f1;
};
//SIG(1 S13271C9_nt) C1{ Fc[2]}



//skip512 S13271C9_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

union  S13271C2  {
  int s13271c2f0;
  int s13271c2f1;
  ::S13271C3_nt s13271c2f2;
  ::S13271C3_nt s13271c2f3;
  ::S13271C5 s13271c2f4;
  ::S13271C9_nt s13271c2f5;
  int s13271c2f6;
};
//SIG(1 S13271C2) U1{ Fi Fi FC2{ Fs Fp} FC2 FC3{ FC4{ FC5{ Fi Fi} FC6{ Fs Fs}} Fc Fi Fc[30] Fi Fi Fc} FC7{ Fc Fc} Fi}

#endif // __cplusplus
#ifdef __cplusplus

struct  S13271C1  {
  int s13271c1f0[2];
  ::S13271C2 s13271c1f1;
};
//SIG(1 S13271C1) C1{ Fi[2] FU2{ Fi Fi FC3{ Fs Fp} FC3 FC4{ FC5{ FC6{ Fi Fi} FC7{ Fs Fs}} Fc Fi Fc[30] Fi Fi Fc} FC8{ Fc Fc} Fi}}



static void Test_S13271C1()
{
  {
    init_simple_test("S13271C1");
    S13271C1 lv;
    check2(sizeof(lv), 72, "sizeof(S13271C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13271C1)");
    check_field_offset(lv, s13271c1f0, 0, "S13271C1.s13271c1f0");
    check_field_offset(lv, s13271c1f1, 8, "S13271C1.s13271c1f1");
  }
}
static Arrange_To_Call_Me vS13271C1(Test_S13271C1, "S13271C1", 72);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S19898C6  : S9624C48 {
};
//SIG(-1 S19898C6) C1{ BC2{ m}}



static void Test_S19898C6()
{
  extern Class_Descriptor cd_S19898C6;
  void *lvp;
  {
    char buf[1];
    init_test(&cd_S19898C6, buf);
    S19898C6 &lv = *(new (buf) S19898C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1, "sizeof(S19898C6)");
    check2(__alignof__(lv), 1, "__alignof__(S19898C6)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19898C6");
    test_class_info(&lv, &cd_S19898C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19898C6(Test_S19898C6, "S19898C6", 1);

#else // __cplusplus

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

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

#ifdef __cplusplus

struct  S19898C3  : virtual S9624C39 , S9624C48 , S20489C10_nt , S19898C6 , S20489C8 {
  ~S19898C3(); // tgen
  S19898C3(); // tgen
};
//SIG(-1 S19898C3) C1{ VBC2{ m} BC3{ m} BC4{ m Fi} BC5{ BC3} BC6{ m Fi:0 Fp}}


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

static void Test_S19898C3()
{
  extern Class_Descriptor cd_S19898C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S19898C3, buf);
    S19898C3 *dp, &lv = *(dp=new (buf) S19898C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S19898C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19898C3)");
    check_base_class_offset(lv, (S9624C39*), 0, "S19898C3");
    /*is_ambiguous_... S19898C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S19898C3");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S19898C3");
    check_base_class_offset(lv, (S9624C48*)(S19898C6*), ABISELECT(12,8), "S19898C3");
    check_base_class_offset(lv, (S19898C6*), ABISELECT(12,8), "S19898C3");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(16,8), "S19898C3");
    test_class_info(&lv, &cd_S19898C3);
    dp->~S19898C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19898C3(Test_S19898C3, "S19898C3", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S19898C3C1Ev();
extern void _ZN8S19898C3D1Ev();
Name_Map name_map_S19898C3[] = {
  NSPAIR(_ZN8S19898C3C1Ev),
  NSPAIR(_ZN8S19898C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19898C6;
extern VTBL_ENTRY _ZTI8S19898C6[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S19898C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19898C6,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19898C3[];
static  VTBL_ENTRY vtc_S19898C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C3[0]),
};
extern VTBL_ENTRY _ZTV8S19898C3[];
static  VTT_ENTRY vtt_S19898C3[] = {
  {&(_ZTV8S19898C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19898C3[];
extern  VTBL_ENTRY _ZTV8S19898C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C3[];
Class_Descriptor cd_S19898C3 = {  "S19898C3", // class name
  bases_S19898C3, 6,
  &(vtc_S19898C3[0]), // expected_vtbl_contents
  &(vtt_S19898C3[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S19898C3),ABISELECT(104,56), //typeinfo_var
  NSPAIRA(_ZTV8S19898C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19898C3),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  S19898C8  : virtual S19898C3 {
  ~S19898C8(); // tgen
  S19898C8(); // tgen
};
//SIG(-1 S19898C8) C1{ VBC2{ VBC3{ m} BC4{ m} BC5{ m Fi} BC6{ BC4} BC7{ m Fi:0 Fp}}}


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

static void Test_S19898C8()
{
  extern Class_Descriptor cd_S19898C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S19898C8, buf);
    S19898C8 *dp, &lv = *(dp=new (buf) S19898C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S19898C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19898C8)");
    check_base_class_offset(lv, (S9624C39*)(S19898C3*), 0, "S19898C8");
    /*is_ambiguous_... S19898C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19898C3*), ABISELECT(8,4), "S19898C8");
    check_base_class_offset(lv, (S20489C10_nt*)(S19898C3*), ABISELECT(16,8), "S19898C8");
    check_base_class_offset(lv, (S9624C48*)(S19898C6*)(S19898C3*), ABISELECT(20,12), "S19898C8");
    check_base_class_offset(lv, (S19898C6*)(S19898C3*), ABISELECT(20,12), "S19898C8");
    check_base_class_offset(lv, (S20489C8*)(S19898C3*), ABISELECT(24,12), "S19898C8");
    check_base_class_offset(lv, (S19898C3*), ABISELECT(8,4), "S19898C8");
    test_class_info(&lv, &cd_S19898C8);
    dp->~S19898C8();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19898C8(Test_S19898C8, "S19898C8", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S19898C8C1Ev();
extern void _ZN8S19898C8D1Ev();
Name_Map name_map_S19898C8[] = {
  NSPAIR(_ZN8S19898C8C1Ev),
  NSPAIR(_ZN8S19898C8D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19898C6;
extern VTBL_ENTRY _ZTI8S19898C6[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19898C3;
extern VTBL_ENTRY _ZTI8S19898C3[];
extern  VTBL_ENTRY _ZTV8S19898C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C3[];
static Base_Class bases_S19898C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C10_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_S9624C48,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S19898C6,    ABISELECT(20,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S20489C8,    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_S19898C3,    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 _ZTI8S19898C8[];
static  VTBL_ENTRY vtc_S19898C8[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C8[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19898C8[0]),
};
extern VTBL_ENTRY _ZTV8S19898C8[];
static  VTBL_ENTRY _tg__ZTV8S19898C3__8S19898C8[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C3[0]),
};
static  VTT_ENTRY vtt_S19898C8[] = {
  {&(_ZTV8S19898C8[4]),  4,7},
  {&(_ZTV8S19898C8[7]),  7,7},
  {&(_tg__ZTV8S19898C3__8S19898C8[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19898C8[];
extern  VTBL_ENTRY _ZTV8S19898C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C8[];
Class_Descriptor cd_S19898C8 = {  "S19898C8", // class name
  bases_S19898C8, 7,
  &(vtc_S19898C8[0]), // expected_vtbl_contents
  &(vtt_S19898C8[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S19898C8),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19898C8),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19898C8),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  S19898C9  : virtual S9624C48 {
  int s19898c9f0;
  ~S19898C9(); // tgen
  S19898C9(); // tgen
};
//SIG(-1 S19898C9) C1{ VBC2{ m} Fi}


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

static void Test_S19898C9()
{
  extern Class_Descriptor cd_S19898C9;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S19898C9, buf);
    S19898C9 *dp, &lv = *(dp=new (buf) S19898C9());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S19898C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19898C9)");
    check_base_class_offset(lv, (S9624C48*), 0, "S19898C9");
    check_field_offset(lv, s19898c9f0, ABISELECT(8,4), "S19898C9.s19898c9f0");
    test_class_info(&lv, &cd_S19898C9);
    dp->~S19898C9();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19898C9(Test_S19898C9, "S19898C9", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S19898C9C1Ev();
extern void _ZN8S19898C9D1Ev();
Name_Map name_map_S19898C9[] = {
  NSPAIR(_ZN8S19898C9C1Ev),
  NSPAIR(_ZN8S19898C9D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19898C9[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19898C9[];
static  VTBL_ENTRY vtc_S19898C9[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C9[0]),
};
extern VTBL_ENTRY _ZTV8S19898C9[];
static  VTT_ENTRY vtt_S19898C9[] = {
  {&(_ZTV8S19898C9[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19898C9[];
extern  VTBL_ENTRY _ZTV8S19898C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C9[];
Class_Descriptor cd_S19898C9 = {  "S19898C9", // class name
  bases_S19898C9, 1,
  &(vtc_S19898C9[0]), // expected_vtbl_contents
  &(vtt_S19898C9[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19898C9),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19898C9),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19898C9),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  S19898C1  : virtual S9624C48 , virtual S19898C3 , S19898C8 , S19898C9 {
  ::S21016C11 s19898c1f0;
  ~S19898C1(); // tgen
  S19898C1(); // tgen
};
//SIG(1 S19898C1) C1{ VBC2{ m} VBC3{ VBC4{ m} BC2 BC5{ m Fi} BC6{ BC2} BC7{ m Fi:0 Fp}} BC8{ VBC3} BC9{ VBC2 Fi} FC10{ BC7 VBC2 BC5 FL Fi}}


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

static void Test_S19898C1()
{
  extern Class_Descriptor cd_S19898C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,13)];
    init_test(&cd_S19898C1, buf);
    S19898C1 *dp, &lv = *(dp=new (buf) S19898C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,48), "sizeof(S19898C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19898C1)");
    /*is_ambiguous_... S19898C1::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S19898C1");
    check_base_class_offset(lv, (S9624C48*)(S19898C9*), 0, "S19898C1");
    check_base_class_offset(lv, (S9624C39*)(S19898C3*), 0, "S19898C1");
    /*is_ambiguous_... S19898C3::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19898C3*), ABISELECT(64,36), "S19898C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S19898C3*), ABISELECT(72,40), "S19898C1");
    check_base_class_offset(lv, (S9624C48*)(S19898C6*)(S19898C3*), ABISELECT(76,44), "S19898C1");
    check_base_class_offset(lv, (S19898C6*)(S19898C3*), ABISELECT(76,44), "S19898C1");
    check_base_class_offset(lv, (S20489C8*)(S19898C3*), ABISELECT(80,44), "S19898C1");
    check_base_class_offset(lv, (S19898C3*), ABISELECT(64,36), "S19898C1");
    check_base_class_offset(lv, (S19898C3*)(S19898C8*), ABISELECT(64,36), "S19898C1");
    check_base_class_offset(lv, (S19898C8*), 0, "S19898C1");
    check_base_class_offset(lv, (S19898C9*), ABISELECT(8,4), "S19898C1");
    check_field_offset(lv, s19898c1f0, ABISELECT(24,12), "S19898C1.s19898c1f0");
    test_class_info(&lv, &cd_S19898C1);
    dp->~S19898C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19898C1(Test_S19898C1, "S19898C1", ABISELECT(88,48));

#else // __cplusplus

extern void _ZN8S19898C1C1Ev();
extern void _ZN8S19898C1D1Ev();
Name_Map name_map_S19898C1[] = {
  NSPAIR(_ZN8S19898C1C1Ev),
  NSPAIR(_ZN8S19898C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19898C6;
extern VTBL_ENTRY _ZTI8S19898C6[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S19898C3;
extern VTBL_ENTRY _ZTI8S19898C3[];
extern  VTBL_ENTRY _ZTV8S19898C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C3[];
extern Class_Descriptor cd_S19898C8;
extern VTBL_ENTRY _ZTI8S19898C8[];
extern  VTBL_ENTRY _ZTV8S19898C8[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C8[];
extern Class_Descriptor cd_S19898C9;
extern VTBL_ENTRY _ZTI8S19898C9[];
extern  VTBL_ENTRY _ZTV8S19898C9[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C9[];
static Base_Class bases_S19898C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S9624C48,    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
    7, //immediately_derived
  0, 0},
  {&cd_S20489C10_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
    7, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(76,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_S19898C6,    ABISELECT(76,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S20489C8,    ABISELECT(80,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19898C3,    ABISELECT(64,36), //bcp->offset
    8, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19898C8,    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_S19898C9,    ABISELECT(8,4), //bcp->offset
    5, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19898C1[];
static  VTBL_ENTRY vtc_S19898C1[] = {
  0,
  0,
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C1[0]),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19898C1[0]),
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19898C1[0]),
};
extern VTBL_ENTRY _ZTV8S19898C1[];
static  VTBL_ENTRY _tg__ZTV8S19898C8__8S19898C1[] = {
  0,
  ABISELECT(64,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19898C3__8S19898C8__8S19898C1[] = {
  ABISELECT(-64,-36),
  ABISELECT(-64,-36),
  (VTBL_ENTRY)&(_ZTI8S19898C8[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19898C9__8S19898C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C9[0]),
};
static  VTBL_ENTRY _tg__ZTV8S19898C3__8S19898C1[] = {
  ABISELECT(-64,-36),
  0,
  (VTBL_ENTRY)&(_ZTI8S19898C3[0]),
};
static  VTT_ENTRY vtt_S19898C1[] = {
  {&(_ZTV8S19898C1[5]),  5,11},
  {&(_tg__ZTV8S19898C8__8S19898C1[4]),  4,4},
  {&(_tg__ZTV8S19898C3__8S19898C8__8S19898C1[3]),  3,3},
  {&(_tg__ZTV8S19898C9__8S19898C1[3]),  3,3},
  {&(_ZTV8S19898C1[11]),  11,11},
  {&(_ZTV8S19898C1[8]),  8,11},
  {&(_tg__ZTV8S19898C3__8S19898C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S19898C1[];
extern  VTBL_ENTRY _ZTV8S19898C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19898C1[];
Class_Descriptor cd_S19898C1 = {  "S19898C1", // class name
  bases_S19898C1, 10,
  &(vtc_S19898C1[0]), // expected_vtbl_contents
  &(vtt_S19898C1[0]), // expected_vtt_contents
  ABISELECT(88,48), // object size
  NSPAIRA(_ZTI8S19898C1),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19898C1),11, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19898C1),7, //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  S19363C3  {
  int s19363c3f0;
  virtual void  v5(); // _ZN8S19363C32v5Ev
  virtual void  v6(); // _ZN8S19363C32v6Ev
  virtual void  v7(); // _ZN8S19363C32v7Ev
  virtual void  v8(); // _ZN8S19363C32v8Ev
  virtual void  v9(); // _ZN8S19363C32v9Ev
  ~S19363C3(); // tgen
  S19363C3(); // tgen
};
//SIG(-1 S19363C3) C1{ v1 v2 v3 v4 v5 Fi}


void  S19363C3 ::v5(){vfunc_called(this, "_ZN8S19363C32v5Ev");}
void  S19363C3 ::v6(){vfunc_called(this, "_ZN8S19363C32v6Ev");}
void  S19363C3 ::v7(){vfunc_called(this, "_ZN8S19363C32v7Ev");}
void  S19363C3 ::v8(){vfunc_called(this, "_ZN8S19363C32v8Ev");}
void  S19363C3 ::v9(){vfunc_called(this, "_ZN8S19363C32v9Ev");}
S19363C3 ::~S19363C3(){ note_dtor("S19363C3", this);} // tgen
S19363C3 ::S19363C3(){ note_ctor("S19363C3", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S19363C3C1Ev();
extern void _ZN8S19363C3D1Ev();
Name_Map name_map_S19363C3[] = {
  NSPAIR(_ZN8S19363C3C1Ev),
  NSPAIR(_ZN8S19363C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19363C3[];
extern void _ZN8S19363C32v5Ev();
extern void _ZN8S19363C32v6Ev();
extern void _ZN8S19363C32v7Ev();
extern void _ZN8S19363C32v8Ev();
extern void _ZN8S19363C32v9Ev();
static  VTBL_ENTRY vtc_S19363C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19363C3[0]),
  (VTBL_ENTRY)&_ZN8S19363C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v9Ev,
};
extern VTBL_ENTRY _ZTI8S19363C3[];
extern  VTBL_ENTRY _ZTV8S19363C3[];
Class_Descriptor cd_S19363C3 = {  "S19363C3", // class name
  0,0,//no base classes
  &(vtc_S19363C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S19363C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19363C3),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  S19363C2  : S19363C3 {
  ::S19534C6 s19363c2f0;
  virtual  ~S19363C2(); // _ZN8S19363C2D1Ev
  virtual void  v10(); // _ZN8S19363C23v10Ev
  virtual void  v11(); // _ZN8S19363C23v11Ev
  S19363C2(); // tgen
};
//SIG(-1 S19363C2) C1{ BC2{ v3 v4 v5 v6 v7 Fi} vd v1 v2 FC3{ BC4{ v11 v12 v13 v14 v15 Fi} vd v8 v9 v10 FC5{}}}


 S19363C2 ::~S19363C2(){ note_dtor("S19363C2", this);}
void  S19363C2 ::v10(){vfunc_called(this, "_ZN8S19363C23v10Ev");}
void  S19363C2 ::v11(){vfunc_called(this, "_ZN8S19363C23v11Ev");}
S19363C2 ::S19363C2(){ note_ctor("S19363C2", this);} // tgen

static void Test_S19363C2()
{
  extern Class_Descriptor cd_S19363C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S19363C2, buf);
    S19363C2 *dp, &lv = *(dp=new (buf) S19363C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S19363C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19363C2)");
    check_base_class_offset(lv, (S19363C3*), 0, "S19363C2");
    check_field_offset(lv, s19363c2f0, ABISELECT(16,8), "S19363C2.s19363c2f0");
    test_class_info(&lv, &cd_S19363C2);
    dp->~S19363C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19363C2(Test_S19363C2, "S19363C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S19363C2C1Ev();
extern void _ZN8S19363C2D1Ev();
Name_Map name_map_S19363C2[] = {
  NSPAIR(_ZN8S19363C2C1Ev),
  NSPAIR(_ZN8S19363C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19363C3;
extern VTBL_ENTRY _ZTI8S19363C3[];
extern  VTBL_ENTRY _ZTV8S19363C3[];
static Base_Class bases_S19363C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19363C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19363C2[];
extern void _ZN8S19363C32v5Ev();
extern void _ZN8S19363C32v6Ev();
extern void _ZN8S19363C32v7Ev();
extern void _ZN8S19363C32v8Ev();
extern void _ZN8S19363C32v9Ev();
extern void _ZN8S19363C2D1Ev();
extern void _ZN8S19363C2D0Ev();
extern void _ZN8S19363C23v10Ev();
extern void _ZN8S19363C23v11Ev();
static  VTBL_ENTRY vtc_S19363C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19363C2[0]),
  (VTBL_ENTRY)&_ZN8S19363C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v9Ev,
  (VTBL_ENTRY)&_ZN8S19363C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19363C2D0Ev,
  (VTBL_ENTRY)&_ZN8S19363C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19363C23v11Ev,
};
extern VTBL_ENTRY _ZTI8S19363C2[];
extern  VTBL_ENTRY _ZTV8S19363C2[];
Class_Descriptor cd_S19363C2 = {  "S19363C2", // class name
  bases_S19363C2, 1,
  &(vtc_S19363C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S19363C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S19363C2),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  S19363C1  : virtual S19363C2 {
  int s19363c1f0[7];
  char s19363c1f1[5];
  int s19363c1f2;
  virtual  ~S19363C1(); // _ZN8S19363C1D2Ev
  virtual void  v1(); // _ZN8S19363C12v1Ev
  virtual void  v2(); // _ZN8S19363C12v2Ev
  virtual void  v3(); // _ZN8S19363C12v3Ev
  virtual void  v4(); // _ZN8S19363C12v4Ev
  S19363C1(); // tgen
};
//SIG(1 S19363C1) C1{ VBC2{ BC3{ v5 v6 v7 v8 v9 Fi} vd v10 v11 FC4{ BC5{ v15 v16 v17 v18 v19 Fi} vd v12 v13 v14 FC6{}}} vd v1 v2 v3 v4 Fi[7] Fc[5] Fi}


 S19363C1 ::~S19363C1(){ note_dtor("S19363C1", this);}
void  S19363C1 ::v1(){vfunc_called(this, "_ZN8S19363C12v1Ev");}
void  S19363C1 ::v2(){vfunc_called(this, "_ZN8S19363C12v2Ev");}
void  S19363C1 ::v3(){vfunc_called(this, "_ZN8S19363C12v3Ev");}
void  S19363C1 ::v4(){vfunc_called(this, "_ZN8S19363C12v4Ev");}
S19363C1 ::S19363C1(){ note_ctor("S19363C1", this);} // tgen

static void Test_S19363C1()
{
  extern Class_Descriptor cd_S19363C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,17)];
    init_test(&cd_S19363C1, buf);
    S19363C1 *dp, &lv = *(dp=new (buf) S19363C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S19363C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19363C1)");
    check_base_class_offset(lv, (S19363C3*)(S19363C2*), ABISELECT(48,44), "S19363C1");
    check_base_class_offset(lv, (S19363C2*), ABISELECT(48,44), "S19363C1");
    check_field_offset(lv, s19363c1f0, ABISELECT(8,4), "S19363C1.s19363c1f0");
    check_field_offset(lv, s19363c1f1, ABISELECT(36,32), "S19363C1.s19363c1f1");
    check_field_offset(lv, s19363c1f2, ABISELECT(44,40), "S19363C1.s19363c1f2");
    test_class_info(&lv, &cd_S19363C1);
    dp->~S19363C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19363C1(Test_S19363C1, "S19363C1", ABISELECT(80,64));

#else // __cplusplus

extern void _ZN8S19363C1C1Ev();
extern void _ZN8S19363C1D2Ev();
Name_Map name_map_S19363C1[] = {
  NSPAIR(_ZN8S19363C1C1Ev),
  NSPAIR(_ZN8S19363C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19363C3;
extern VTBL_ENTRY _ZTI8S19363C3[];
extern  VTBL_ENTRY _ZTV8S19363C3[];
extern Class_Descriptor cd_S19363C2;
extern VTBL_ENTRY _ZTI8S19363C2[];
extern  VTBL_ENTRY _ZTV8S19363C2[];
static Base_Class bases_S19363C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19363C3,    ABISELECT(48,44), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S19363C2,    ABISELECT(48,44), //bcp->offset
    9, //bcp->virtual_function_table_offset
    10, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19363C1[];
extern void _ZN8S19363C1D1Ev();
extern void _ZN8S19363C1D0Ev();
extern void _ZN8S19363C12v1Ev();
extern void _ZN8S19363C12v2Ev();
extern void _ZN8S19363C12v3Ev();
extern void _ZN8S19363C12v4Ev();
extern void _ZN8S19363C32v5Ev();
extern void _ZN8S19363C32v6Ev();
extern void _ZN8S19363C32v7Ev();
extern void _ZN8S19363C32v8Ev();
extern void _ZN8S19363C32v9Ev();
extern void ABISELECT(_ZTv0_n64_N8S19363C1D1Ev,_ZTv0_n32_N8S19363C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19363C1D1Ev,_ZThn44_N8S19363C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n64_N8S19363C1D0Ev,_ZTv0_n32_N8S19363C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19363C1D0Ev,_ZThn44_N8S19363C1D0Ev)() __attribute__((weak));
extern void _ZN8S19363C23v10Ev();
extern void _ZN8S19363C23v11Ev();
static  VTBL_ENTRY vtc_S19363C1[] = {
  ABISELECT(48,44),
  0,
  (VTBL_ENTRY)&(_ZTI8S19363C1[0]),
  (VTBL_ENTRY)&_ZN8S19363C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19363C1D0Ev,
  (VTBL_ENTRY)&_ZN8S19363C12v1Ev,
  (VTBL_ENTRY)&_ZN8S19363C12v2Ev,
  (VTBL_ENTRY)&_ZN8S19363C12v3Ev,
  (VTBL_ENTRY)&_ZN8S19363C12v4Ev,
  0,
  0,
  ABISELECT(-48,-44),
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-44),
  (VTBL_ENTRY)&(_ZTI8S19363C1[0]),
  (VTBL_ENTRY)&_ZN8S19363C32v5Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v6Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v7Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v8Ev,
  (VTBL_ENTRY)&_ZN8S19363C32v9Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19363C1D1Ev,_ZTv0_n32_N8S19363C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n64_N8S19363C1D0Ev,_ZTv0_n32_N8S19363C1D0Ev),
  (VTBL_ENTRY)&_ZN8S19363C23v10Ev,
  (VTBL_ENTRY)&_ZN8S19363C23v11Ev,
};
extern VTBL_ENTRY _ZTV8S19363C1[];
static  VTT_ENTRY vtt_S19363C1[] = {
  {&(_ZTV8S19363C1[3]),  3,28},
  {&(_ZTV8S19363C1[19]),  19,28},
};
extern VTBL_ENTRY _ZTI8S19363C1[];
extern  VTBL_ENTRY _ZTV8S19363C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19363C1[];
static VTBL_ENTRY alt_thunk_names164[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19363C1D0Ev,_ZTv0_n32_N8S19363C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19363C1D0Ev,_ZThn44_N8S19363C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n64_N8S19363C1D1Ev,_ZTv0_n32_N8S19363C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19363C1D1Ev,_ZThn44_N8S19363C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19363C1 = {  "S19363C1", // class name
  bases_S19363C1, 2,
  &(vtc_S19363C1[0]), // expected_vtbl_contents
  &(vtt_S19363C1[0]), // expected_vtt_contents
  ABISELECT(80,64), // object size
  NSPAIRA(_ZTI8S19363C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19363C1),28, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19363C1),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names164,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6742C2  {
  virtual  ~S6742C2(); // _ZN7S6742C2D1Ev
  virtual void  v3(); // _ZN7S6742C22v3Ev
  virtual void  v4(); // _ZN7S6742C22v4Ev
  S6742C2(); // tgen
};
//SIG(-1 S6742C2) C1{ vd v1 v2}


 S6742C2 ::~S6742C2(){ note_dtor("S6742C2", this);}
void  S6742C2 ::v3(){vfunc_called(this, "_ZN7S6742C22v3Ev");}
void  S6742C2 ::v4(){vfunc_called(this, "_ZN7S6742C22v4Ev");}
S6742C2 ::S6742C2(){ note_ctor("S6742C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6742C2C1Ev();
extern void _ZN7S6742C2D1Ev();
Name_Map name_map_S6742C2[] = {
  NSPAIR(_ZN7S6742C2C1Ev),
  NSPAIR(_ZN7S6742C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6742C2[];
extern void _ZN7S6742C2D1Ev();
extern void _ZN7S6742C2D0Ev();
extern void _ZN7S6742C22v3Ev();
extern void _ZN7S6742C22v4Ev();
static  VTBL_ENTRY vtc_S6742C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6742C2[0]),
  (VTBL_ENTRY)&_ZN7S6742C2D1Ev,
  (VTBL_ENTRY)&_ZN7S6742C2D0Ev,
  (VTBL_ENTRY)&_ZN7S6742C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6742C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6742C2[];
extern  VTBL_ENTRY _ZTV7S6742C2[];
Class_Descriptor cd_S6742C2 = {  "S6742C2", // class name
  0,0,//no base classes
  &(vtc_S6742C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6742C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6742C2),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  S6742C4_nt  {
  ::S9624C14_nt s6742c4f0;
  int s6742c4f1;
  void  mf6742c4(); // _ZN10S6742C4_nt8mf6742c4Ev
};
//SIG(-1 S6742C4_nt) C1{ m FC2{ m Fp Fi FC3{ m}} Fi}


void  S6742C4_nt ::mf6742c4(){}

//skip512 S6742C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6742C3  {
  void *s6742c3f0;
  ::S6742C4_nt s6742c3f1;
  ::S6742C4_nt s6742c3f2;
  ::S10296C19_nt s6742c3f3;
  int s6742c3f4[2];
  ::S9624C14_nt s6742c3f5;
  void *s6742c3f6[2];
  void  mf6742c3(); // _ZN7S6742C38mf6742c3Ev
};
//SIG(-1 S6742C3) C1{ m Fp FC2{ m FC3{ m Fp Fi FC4{ m}} Fi} FC2 FC5{ m FC6{ m FL[2]}} Fi[2] FC3 Fp[2]}


void  S6742C3 ::mf6742c3(){}

static void Test_S6742C3()
{
  {
    init_simple_test("S6742C3");
    S6742C3 lv;
    check2(sizeof(lv), ABISELECT(112,80), "sizeof(S6742C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6742C3)");
    check_field_offset(lv, s6742c3f0, 0, "S6742C3.s6742c3f0");
    check_field_offset(lv, s6742c3f1, ABISELECT(8,4), "S6742C3.s6742c3f1");
    check_field_offset(lv, s6742c3f2, ABISELECT(32,20), "S6742C3.s6742c3f2");
    check_field_offset(lv, s6742c3f3, ABISELECT(56,36), "S6742C3.s6742c3f3");
    check_field_offset(lv, s6742c3f4, ABISELECT(72,52), "S6742C3.s6742c3f4");
    check_field_offset(lv, s6742c3f5, ABISELECT(80,60), "S6742C3.s6742c3f5");
    check_field_offset(lv, s6742c3f6, ABISELECT(96,72), "S6742C3.s6742c3f6");
  }
}
static Arrange_To_Call_Me vS6742C3(Test_S6742C3, "S6742C3", ABISELECT(112,80));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6742C1  : S6742C2 {
  ::S6742C3 s6742c1f0;
  virtual void  v1(); // _ZN7S6742C12v1Ev
  virtual void  v2(); // _ZN7S6742C12v2Ev
  ~S6742C1(); // tgen
  S6742C1(); // tgen
};
//SIG(1 S6742C1) 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] FC5 Fp[2]}}


void  S6742C1 ::v1(){vfunc_called(this, "_ZN7S6742C12v1Ev");}
void  S6742C1 ::v2(){vfunc_called(this, "_ZN7S6742C12v2Ev");}
S6742C1 ::~S6742C1(){ note_dtor("S6742C1", this);} // tgen
S6742C1 ::S6742C1(){ note_ctor("S6742C1", this);} // tgen

static void Test_S6742C1()
{
  extern Class_Descriptor cd_S6742C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(16,22)];
    init_test(&cd_S6742C1, buf);
    S6742C1 *dp, &lv = *(dp=new (buf) S6742C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(120,84), "sizeof(S6742C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6742C1)");
    check_base_class_offset(lv, (S6742C2*), 0, "S6742C1");
    check_field_offset(lv, s6742c1f0, ABISELECT(8,4), "S6742C1.s6742c1f0");
    test_class_info(&lv, &cd_S6742C1);
    dp->~S6742C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6742C1(Test_S6742C1, "S6742C1", ABISELECT(120,84));

#else // __cplusplus

extern void _ZN7S6742C1C1Ev();
extern void _ZN7S6742C1D1Ev();
Name_Map name_map_S6742C1[] = {
  NSPAIR(_ZN7S6742C1C1Ev),
  NSPAIR(_ZN7S6742C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6742C2;
extern VTBL_ENTRY _ZTI7S6742C2[];
extern  VTBL_ENTRY _ZTV7S6742C2[];
static Base_Class bases_S6742C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6742C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6742C1[];
extern void _ZN7S6742C1D1Ev();
extern void _ZN7S6742C1D0Ev();
extern void _ZN7S6742C22v3Ev();
extern void _ZN7S6742C22v4Ev();
extern void _ZN7S6742C12v1Ev();
extern void _ZN7S6742C12v2Ev();
static  VTBL_ENTRY vtc_S6742C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6742C1[0]),
  (VTBL_ENTRY)&_ZN7S6742C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6742C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6742C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6742C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6742C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6742C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S6742C1[];
extern  VTBL_ENTRY _ZTV7S6742C1[];
Class_Descriptor cd_S6742C1 = {  "S6742C1", // class name
  bases_S6742C1, 1,
  &(vtc_S6742C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(120,84), // object size
  NSPAIRA(_ZTI7S6742C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6742C1),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  S18660C1  {
  ::S6920C2 s18660c1f0;
  virtual void  v1(); // _ZN8S18660C12v1Ev
  virtual void  v2(); // _ZN8S18660C12v2Ev
  virtual void  v3(); // _ZN8S18660C12v3Ev
  virtual void  v4(); // _ZN8S18660C12v4Ev
  ~S18660C1(); // tgen
  S18660C1(); // tgen
};
//SIG(1 S18660C1) C1{ v1 v2 v3 v4 FC2{ vd v5 v6 v7 v8 v9 v10 v11 FC3{ BC4{ v15 v16 v17 v18 v19 Fi} vd v12 v13 v14 FC5{}}}}


void  S18660C1 ::v1(){vfunc_called(this, "_ZN8S18660C12v1Ev");}
void  S18660C1 ::v2(){vfunc_called(this, "_ZN8S18660C12v2Ev");}
void  S18660C1 ::v3(){vfunc_called(this, "_ZN8S18660C12v3Ev");}
void  S18660C1 ::v4(){vfunc_called(this, "_ZN8S18660C12v4Ev");}
S18660C1 ::~S18660C1(){ note_dtor("S18660C1", this);} // tgen
S18660C1 ::S18660C1(){ note_ctor("S18660C1", this);} // tgen

static void Test_S18660C1()
{
  extern Class_Descriptor cd_S18660C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S18660C1, buf);
    S18660C1 *dp, &lv = *(dp=new (buf) S18660C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18660C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18660C1)");
    check_field_offset(lv, s18660c1f0, ABISELECT(8,4), "S18660C1.s18660c1f0");
    test_class_info(&lv, &cd_S18660C1);
    dp->~S18660C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18660C1(Test_S18660C1, "S18660C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S18660C1C1Ev();
extern void _ZN8S18660C1D1Ev();
Name_Map name_map_S18660C1[] = {
  NSPAIR(_ZN8S18660C1C1Ev),
  NSPAIR(_ZN8S18660C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18660C1[];
extern void _ZN8S18660C12v1Ev();
extern void _ZN8S18660C12v2Ev();
extern void _ZN8S18660C12v3Ev();
extern void _ZN8S18660C12v4Ev();
static  VTBL_ENTRY vtc_S18660C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18660C1[0]),
  (VTBL_ENTRY)&_ZN8S18660C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18660C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18660C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18660C12v4Ev,
};
extern VTBL_ENTRY _ZTI8S18660C1[];
extern  VTBL_ENTRY _ZTV8S18660C1[];
Class_Descriptor cd_S18660C1 = {  "S18660C1", // class name
  0,0,//no base classes
  &(vtc_S18660C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S18660C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18660C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S9877C2  {
  int s9877c2f0;
  void *s9877c2f1[8];
  int s9877c2f2[3];
  ::S9336C5_nt s9877c2f3[8];
  int s9877c2f4[642];
  char s9877c2f5[2];
  int s9877c2f6[2];
  virtual  ~S9877C2(); // _ZN7S9877C2D1Ev
  virtual void  v5(); // _ZN7S9877C22v5Ev
  virtual void  v6(); // _ZN7S9877C22v6Ev
  virtual void  v7(); // _ZN7S9877C22v7Ev
  virtual void  v8(); // _ZN7S9877C22v8Ev
  S9877C2(); // tgen
};
//SIG(-1 S9877C2) C1{ vd v1 v2 v3 v4 Fi Fp[8] Fi[3] FC2{ Fi[3]}[8] Fi[642] Fc[2] Fi[2]}


 S9877C2 ::~S9877C2(){ note_dtor("S9877C2", this);}
void  S9877C2 ::v5(){vfunc_called(this, "_ZN7S9877C22v5Ev");}
void  S9877C2 ::v6(){vfunc_called(this, "_ZN7S9877C22v6Ev");}
void  S9877C2 ::v7(){vfunc_called(this, "_ZN7S9877C22v7Ev");}
void  S9877C2 ::v8(){vfunc_called(this, "_ZN7S9877C22v8Ev");}
S9877C2 ::S9877C2(){ note_ctor("S9877C2", this);} // tgen

static void Test_S9877C2()
{
  extern Class_Descriptor cd_S9877C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(347,683)];
    init_test(&cd_S9877C2, buf);
    S9877C2 *dp, &lv = *(dp=new (buf) S9877C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(2768,2728), "sizeof(S9877C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9877C2)");
    check_field_offset(lv, s9877c2f0, ABISELECT(8,4), "S9877C2.s9877c2f0");
    check_field_offset(lv, s9877c2f1, ABISELECT(16,8), "S9877C2.s9877c2f1");
    check_field_offset(lv, s9877c2f2, ABISELECT(80,40), "S9877C2.s9877c2f2");
    check_field_offset(lv, s9877c2f3, ABISELECT(92,52), "S9877C2.s9877c2f3");
    check_field_offset(lv, s9877c2f4, ABISELECT(188,148), "S9877C2.s9877c2f4");
    check_field_offset(lv, s9877c2f5, ABISELECT(2756,2716), "S9877C2.s9877c2f5");
    check_field_offset(lv, s9877c2f6, ABISELECT(2760,2720), "S9877C2.s9877c2f6");
    test_class_info(&lv, &cd_S9877C2);
    dp->~S9877C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9877C2(Test_S9877C2, "S9877C2", ABISELECT(2768,2728));

#else // __cplusplus

extern void _ZN7S9877C2C1Ev();
extern void _ZN7S9877C2D1Ev();
Name_Map name_map_S9877C2[] = {
  NSPAIR(_ZN7S9877C2C1Ev),
  NSPAIR(_ZN7S9877C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9877C2[];
extern void _ZN7S9877C2D1Ev();
extern void _ZN7S9877C2D0Ev();
extern void _ZN7S9877C22v5Ev();
extern void _ZN7S9877C22v6Ev();
extern void _ZN7S9877C22v7Ev();
extern void _ZN7S9877C22v8Ev();
static  VTBL_ENTRY vtc_S9877C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9877C2[0]),
  (VTBL_ENTRY)&_ZN7S9877C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9877C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S9877C2[];
extern  VTBL_ENTRY _ZTV7S9877C2[];
Class_Descriptor cd_S9877C2 = {  "S9877C2", // class name
  0,0,//no base classes
  &(vtc_S9877C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(2768,2728), // object size
  NSPAIRA(_ZTI7S9877C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9877C2),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  S9877C1  : S9877C2 {
  short s9877c1f0;
  int s9877c1f1[96];
  virtual  ~S9877C1(); // _ZN7S9877C1D1Ev
  virtual void  v1(); // _ZN7S9877C12v1Ev
  virtual void  v2(); // _ZN7S9877C12v2Ev
  virtual void  v3(); // _ZN7S9877C12v3Ev
  virtual void  v4(); // _ZN7S9877C12v4Ev
  S9877C1(); // tgen
};
//SIG(1 S9877C1) C1{ BC2{ vd v5 v6 v7 v8 Fi Fp[8] Fi[3] FC3{ Fi[3]}[8] Fi[642] Fc[2] Fi[2]} vd v1 v2 v3 v4 Fs Fi[96]}


 S9877C1 ::~S9877C1(){ note_dtor("S9877C1", this);}
void  S9877C1 ::v1(){vfunc_called(this, "_ZN7S9877C12v1Ev");}
void  S9877C1 ::v2(){vfunc_called(this, "_ZN7S9877C12v2Ev");}
void  S9877C1 ::v3(){vfunc_called(this, "_ZN7S9877C12v3Ev");}
void  S9877C1 ::v4(){vfunc_called(this, "_ZN7S9877C12v4Ev");}
S9877C1 ::S9877C1(){ note_ctor("S9877C1", this);} // tgen

static void Test_S9877C1()
{
  extern Class_Descriptor cd_S9877C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(396,780)];
    init_test(&cd_S9877C1, buf);
    S9877C1 *dp, &lv = *(dp=new (buf) S9877C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(3160,3116), "sizeof(S9877C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9877C1)");
    check_base_class_offset(lv, (S9877C2*), 0, "S9877C1");
    check_field_offset(lv, s9877c1f0, ABISELECT(2768,2728), "S9877C1.s9877c1f0");
    check_field_offset(lv, s9877c1f1, ABISELECT(2772,2732), "S9877C1.s9877c1f1");
    test_class_info(&lv, &cd_S9877C1);
    dp->~S9877C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9877C1(Test_S9877C1, "S9877C1", ABISELECT(3160,3116));

#else // __cplusplus

extern void _ZN7S9877C1C1Ev();
extern void _ZN7S9877C1D1Ev();
Name_Map name_map_S9877C1[] = {
  NSPAIR(_ZN7S9877C1C1Ev),
  NSPAIR(_ZN7S9877C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9877C2;
extern VTBL_ENTRY _ZTI7S9877C2[];
extern  VTBL_ENTRY _ZTV7S9877C2[];
static Base_Class bases_S9877C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9877C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9877C1[];
extern void _ZN7S9877C1D1Ev();
extern void _ZN7S9877C1D0Ev();
extern void _ZN7S9877C22v5Ev();
extern void _ZN7S9877C22v6Ev();
extern void _ZN7S9877C22v7Ev();
extern void _ZN7S9877C22v8Ev();
extern void _ZN7S9877C12v1Ev();
extern void _ZN7S9877C12v2Ev();
extern void _ZN7S9877C12v3Ev();
extern void _ZN7S9877C12v4Ev();
static  VTBL_ENTRY vtc_S9877C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9877C1[0]),
  (VTBL_ENTRY)&_ZN7S9877C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9877C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v7Ev,
  (VTBL_ENTRY)&_ZN7S9877C22v8Ev,
  (VTBL_ENTRY)&_ZN7S9877C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9877C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9877C12v3Ev,
  (VTBL_ENTRY)&_ZN7S9877C12v4Ev,
};
extern VTBL_ENTRY _ZTI7S9877C1[];
extern  VTBL_ENTRY _ZTV7S9877C1[];
Class_Descriptor cd_S9877C1 = {  "S9877C1", // class name
  bases_S9877C1, 1,
  &(vtc_S9877C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(3160,3116), // object size
  NSPAIRA(_ZTI7S9877C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9877C1),12, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20935C3  {
  long double s20935c3f0;
  virtual  ~S20935C3(); // _ZN8S20935C3D1Ev
  virtual void  v8(); // _ZN8S20935C32v8Ev
  S20935C3(); // tgen
};
//SIG(-1 S20935C3) C1{ vd v1 FD}


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

static void Test_S20935C3()
{
  extern Class_Descriptor cd_S20935C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20935C3, buf);
    S20935C3 *dp, &lv = *(dp=new (buf) S20935C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20935C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20935C3)");
    check_field_offset(lv, s20935c3f0, ABISELECT(16,4), "S20935C3.s20935c3f0");
    test_class_info(&lv, &cd_S20935C3);
    dp->~S20935C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20935C3(Test_S20935C3, "S20935C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20935C3C1Ev();
extern void _ZN8S20935C3D1Ev();
Name_Map name_map_S20935C3[] = {
  NSPAIR(_ZN8S20935C3C1Ev),
  NSPAIR(_ZN8S20935C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20935C3[];
extern void _ZN8S20935C3D1Ev();
extern void _ZN8S20935C3D0Ev();
extern void _ZN8S20935C32v8Ev();
static  VTBL_ENTRY vtc_S20935C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20935C3[0]),
  (VTBL_ENTRY)&_ZN8S20935C3D1Ev,
  (VTBL_ENTRY)&_ZN8S20935C3D0Ev,
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
};
extern VTBL_ENTRY _ZTI8S20935C3[];
extern  VTBL_ENTRY _ZTV8S20935C3[];
Class_Descriptor cd_S20935C3 = {  "S20935C3", // class name
  0,0,//no base classes
  &(vtc_S20935C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20935C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20935C3),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  S20935C4  : S20935C3 {
  int s20935c4f0[3];
  virtual void  v9(); // _ZN8S20935C42v9Ev
  virtual void  v10(); // _ZN8S20935C43v10Ev
  virtual void  v11(); // _ZN8S20935C43v11Ev
  ~S20935C4(); // tgen
  S20935C4(); // tgen
};
//SIG(-1 S20935C4) C1{ BC2{ vd v4 FD} v1 v2 v3 Fi[3]}


void  S20935C4 ::v9(){vfunc_called(this, "_ZN8S20935C42v9Ev");}
void  S20935C4 ::v10(){vfunc_called(this, "_ZN8S20935C43v10Ev");}
void  S20935C4 ::v11(){vfunc_called(this, "_ZN8S20935C43v11Ev");}
S20935C4 ::~S20935C4(){ note_dtor("S20935C4", this);} // tgen
S20935C4 ::S20935C4(){ note_ctor("S20935C4", this);} // tgen

static void Test_S20935C4()
{
  extern Class_Descriptor cd_S20935C4;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S20935C4, buf);
    S20935C4 *dp, &lv = *(dp=new (buf) S20935C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20935C4)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20935C4)");
    check_base_class_offset(lv, (S20935C3*), 0, "S20935C4");
    check_field_offset(lv, s20935c4f0, ABISELECT(32,16), "S20935C4.s20935c4f0");
    test_class_info(&lv, &cd_S20935C4);
    dp->~S20935C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20935C4(Test_S20935C4, "S20935C4", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20935C4C1Ev();
extern void _ZN8S20935C4D1Ev();
Name_Map name_map_S20935C4[] = {
  NSPAIR(_ZN8S20935C4C1Ev),
  NSPAIR(_ZN8S20935C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20935C3;
extern VTBL_ENTRY _ZTI8S20935C3[];
extern  VTBL_ENTRY _ZTV8S20935C3[];
static Base_Class bases_S20935C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20935C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S20935C4[];
extern void _ZN8S20935C4D1Ev();
extern void _ZN8S20935C4D0Ev();
extern void _ZN8S20935C32v8Ev();
extern void _ZN8S20935C42v9Ev();
extern void _ZN8S20935C43v10Ev();
extern void _ZN8S20935C43v11Ev();
static  VTBL_ENTRY vtc_S20935C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20935C4[0]),
  (VTBL_ENTRY)&_ZN8S20935C4D1Ev,
  (VTBL_ENTRY)&_ZN8S20935C4D0Ev,
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20935C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v11Ev,
};
extern VTBL_ENTRY _ZTI8S20935C4[];
extern  VTBL_ENTRY _ZTV8S20935C4[];
Class_Descriptor cd_S20935C4 = {  "S20935C4", // class name
  bases_S20935C4, 1,
  &(vtc_S20935C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20935C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S20935C4),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20935C2  : virtual S20935C3 , S20935C4 {
  virtual  ~S20935C2(); // _ZN8S20935C2D2Ev
  virtual void  v12(); // _ZN8S20935C23v12Ev
  virtual void  v13(); // _ZN8S20935C23v13Ev
  virtual void  v14(); // _ZN8S20935C23v14Ev
  virtual void  v15(); // _ZN8S20935C23v15Ev
  S20935C2(); // tgen
};
//SIG(-1 S20935C2) C1{ VBC2{ vd v5 FD} BC3{ BC2 v6 v7 v8 Fi[3]} vd v1 v2 v3 v4}


 S20935C2 ::~S20935C2(){ note_dtor("S20935C2", this);}
void  S20935C2 ::v12(){vfunc_called(this, "_ZN8S20935C23v12Ev");}
void  S20935C2 ::v13(){vfunc_called(this, "_ZN8S20935C23v13Ev");}
void  S20935C2 ::v14(){vfunc_called(this, "_ZN8S20935C23v14Ev");}
void  S20935C2 ::v15(){vfunc_called(this, "_ZN8S20935C23v15Ev");}
S20935C2 ::S20935C2(){ note_ctor("S20935C2", this);} // tgen

static void Test_S20935C2()
{
  extern Class_Descriptor cd_S20935C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,12)];
    init_test(&cd_S20935C2, buf);
    S20935C2 *dp, &lv = *(dp=new (buf) S20935C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,44), "sizeof(S20935C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20935C2)");
    /*is_ambiguous_... S20935C2::S20935C3 */ AMB_check_base_class_offset(lv, (S20935C3*), ABISELECT(48,28), "S20935C2");
    check_base_class_offset(lv, (S20935C3*)(S20935C4*), 0, "S20935C2");
    check_base_class_offset(lv, (S20935C4*), 0, "S20935C2");
    test_class_info(&lv, &cd_S20935C2);
    dp->~S20935C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20935C2(Test_S20935C2, "S20935C2", ABISELECT(80,44));

#else // __cplusplus

extern void _ZN8S20935C2C1Ev();
extern void _ZN8S20935C2D2Ev();
Name_Map name_map_S20935C2[] = {
  NSPAIR(_ZN8S20935C2C1Ev),
  NSPAIR(_ZN8S20935C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20935C3;
extern VTBL_ENTRY _ZTI8S20935C3[];
extern  VTBL_ENTRY _ZTV8S20935C3[];
extern Class_Descriptor cd_S20935C3;
extern VTBL_ENTRY _ZTI8S20935C3[];
extern  VTBL_ENTRY _ZTV8S20935C3[];
extern Class_Descriptor cd_S20935C4;
extern VTBL_ENTRY _ZTI8S20935C4[];
extern  VTBL_ENTRY _ZTV8S20935C4[];
static Base_Class bases_S20935C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20935C3,    ABISELECT(48,28), //bcp->offset
    13, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20935C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20935C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20935C2[];
extern void _ZN8S20935C2D1Ev();
extern void _ZN8S20935C2D0Ev();
extern void _ZN8S20935C32v8Ev();
extern void _ZN8S20935C42v9Ev();
extern void _ZN8S20935C43v10Ev();
extern void _ZN8S20935C43v11Ev();
extern void _ZN8S20935C23v12Ev();
extern void _ZN8S20935C23v13Ev();
extern void _ZN8S20935C23v14Ev();
extern void _ZN8S20935C23v15Ev();
extern void ABISELECT(_ZTv0_n24_N8S20935C2D1Ev,_ZTv0_n12_N8S20935C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20935C2D1Ev,_ZThn28_N8S20935C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20935C2D0Ev,_ZTv0_n12_N8S20935C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20935C2D0Ev,_ZThn28_N8S20935C2D0Ev)() __attribute__((weak));
extern void _ZN8S20935C32v8Ev();
static  VTBL_ENTRY vtc_S20935C2[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20935C2[0]),
  (VTBL_ENTRY)&_ZN8S20935C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20935C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20935C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v15Ev,
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20935C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20935C2D1Ev,_ZTv0_n12_N8S20935C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20935C2D0Ev,_ZTv0_n12_N8S20935C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
};
extern VTBL_ENTRY _ZTV8S20935C2[];
static  VTT_ENTRY vtt_S20935C2[] = {
  {&(_ZTV8S20935C2[3]),  3,20},
  {&(_ZTV8S20935C2[17]),  17,20},
};
extern VTBL_ENTRY _ZTI8S20935C2[];
extern  VTBL_ENTRY _ZTV8S20935C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20935C2[];
static VTBL_ENTRY alt_thunk_names165[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20935C2D0Ev,_ZTv0_n12_N8S20935C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20935C2D0Ev,_ZThn28_N8S20935C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20935C2D1Ev,_ZTv0_n12_N8S20935C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20935C2D1Ev,_ZThn28_N8S20935C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20935C2 = {  "S20935C2", // class name
  bases_S20935C2, 3,
  &(vtc_S20935C2[0]), // expected_vtbl_contents
  &(vtt_S20935C2[0]), // expected_vtt_contents
  ABISELECT(80,44), // object size
  NSPAIRA(_ZTI8S20935C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20935C2),20, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20935C2),2, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names165,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S20935C1  : virtual S20935C2 {
  void *s20935c1f0[8];
  virtual  ~S20935C1(); // _ZN8S20935C1D2Ev
  virtual void  v1(); // _ZN8S20935C12v1Ev
  virtual void  v2(); // _ZN8S20935C12v2Ev
  virtual void  v3(); // _ZN8S20935C12v3Ev
  virtual void  v4(); // _ZN8S20935C12v4Ev
  virtual void  v5(); // _ZN8S20935C12v5Ev
  virtual void  v6(); // _ZN8S20935C12v6Ev
  virtual void  v7(); // _ZN8S20935C12v7Ev
  S20935C1(); // tgen
};
//SIG(1 S20935C1) C1{ VBC2{ VBC3{ vd v8 FD} BC4{ BC3 v9 v10 v11 Fi[3]} vd v12 v13 v14 v15} vd v1 v2 v3 v4 v5 v6 v7 Fp[8]}


 S20935C1 ::~S20935C1(){ note_dtor("S20935C1", this);}
void  S20935C1 ::v1(){vfunc_called(this, "_ZN8S20935C12v1Ev");}
void  S20935C1 ::v2(){vfunc_called(this, "_ZN8S20935C12v2Ev");}
void  S20935C1 ::v3(){vfunc_called(this, "_ZN8S20935C12v3Ev");}
void  S20935C1 ::v4(){vfunc_called(this, "_ZN8S20935C12v4Ev");}
void  S20935C1 ::v5(){vfunc_called(this, "_ZN8S20935C12v5Ev");}
void  S20935C1 ::v6(){vfunc_called(this, "_ZN8S20935C12v6Ev");}
void  S20935C1 ::v7(){vfunc_called(this, "_ZN8S20935C12v7Ev");}
S20935C1 ::S20935C1(){ note_ctor("S20935C1", this);} // tgen

static void Test_S20935C1()
{
  extern Class_Descriptor cd_S20935C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(11,21)];
    init_test(&cd_S20935C1, buf);
    S20935C1 *dp, &lv = *(dp=new (buf) S20935C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(160,80), "sizeof(S20935C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20935C1)");
    /*is_ambiguous_... S20935C2::S20935C3 */ AMB_check_base_class_offset(lv, (S20935C3*)(S20935C2*), ABISELECT(128,64), "S20935C1");
    check_base_class_offset(lv, (S20935C3*)(S20935C4*)(S20935C2*), ABISELECT(80,36), "S20935C1");
    check_base_class_offset(lv, (S20935C4*)(S20935C2*), ABISELECT(80,36), "S20935C1");
    check_base_class_offset(lv, (S20935C2*), ABISELECT(80,36), "S20935C1");
    check_field_offset(lv, s20935c1f0, ABISELECT(8,4), "S20935C1.s20935c1f0");
    test_class_info(&lv, &cd_S20935C1);
    dp->~S20935C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20935C1(Test_S20935C1, "S20935C1", ABISELECT(160,80));

#else // __cplusplus

extern void _ZN8S20935C1C1Ev();
extern void _ZN8S20935C1D2Ev();
Name_Map name_map_S20935C1[] = {
  NSPAIR(_ZN8S20935C1C1Ev),
  NSPAIR(_ZN8S20935C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20935C3;
extern VTBL_ENTRY _ZTI8S20935C3[];
extern  VTBL_ENTRY _ZTV8S20935C3[];
extern Class_Descriptor cd_S20935C3;
extern VTBL_ENTRY _ZTI8S20935C3[];
extern  VTBL_ENTRY _ZTV8S20935C3[];
extern Class_Descriptor cd_S20935C4;
extern VTBL_ENTRY _ZTI8S20935C4[];
extern  VTBL_ENTRY _ZTV8S20935C4[];
extern Class_Descriptor cd_S20935C2;
extern VTBL_ENTRY _ZTI8S20935C2[];
extern  VTBL_ENTRY _ZTV8S20935C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20935C2[];
static Base_Class bases_S20935C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20935C3,    ABISELECT(128,64), //bcp->offset
    35, //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
    3, //immediately_derived
  0, 1},
  {&cd_S20935C3,    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
    2, //init_seq
    2, //immediately_derived
  0, 0},
  {&cd_S20935C4,    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
    3, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S20935C2,    ABISELECT(80,36), //bcp->offset
    13, //bcp->virtual_function_table_offset
    12, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20935C1[];
extern void _ZN8S20935C1D1Ev();
extern void _ZN8S20935C1D0Ev();
extern void _ZN8S20935C12v1Ev();
extern void _ZN8S20935C12v2Ev();
extern void _ZN8S20935C12v3Ev();
extern void _ZN8S20935C12v4Ev();
extern void _ZN8S20935C12v5Ev();
extern void _ZN8S20935C12v6Ev();
extern void _ZN8S20935C12v7Ev();
extern void ABISELECT(_ZTv0_n32_N8S20935C1D1Ev,_ZTv0_n16_N8S20935C1D1Ev)();
extern void ABISELECT(_ZThn80_N8S20935C1D1Ev,_ZThn36_N8S20935C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n32_N8S20935C1D0Ev,_ZTv0_n16_N8S20935C1D0Ev)();
extern void ABISELECT(_ZThn80_N8S20935C1D0Ev,_ZThn36_N8S20935C1D0Ev)() __attribute__((weak));
extern void _ZN8S20935C32v8Ev();
extern void _ZN8S20935C42v9Ev();
extern void _ZN8S20935C43v10Ev();
extern void _ZN8S20935C43v11Ev();
extern void _ZN8S20935C23v12Ev();
extern void _ZN8S20935C23v13Ev();
extern void _ZN8S20935C23v14Ev();
extern void _ZN8S20935C23v15Ev();
extern void ABISELECT(_ZTv0_n24_N8S20935C1D1Ev,_ZTv0_n12_N8S20935C1D1Ev)();
extern void ABISELECT(_ZThn128_N8S20935C1D1Ev,_ZThn64_N8S20935C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20935C1D0Ev,_ZTv0_n12_N8S20935C1D0Ev)();
extern void ABISELECT(_ZThn128_N8S20935C1D0Ev,_ZThn64_N8S20935C1D0Ev)() __attribute__((weak));
extern void _ZN8S20935C32v8Ev();
static  VTBL_ENTRY vtc_S20935C1[] = {
  ABISELECT(128,64),
  ABISELECT(80,36),
  0,
  (VTBL_ENTRY)&(_ZTI8S20935C1[0]),
  (VTBL_ENTRY)&_ZN8S20935C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20935C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v5Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v6Ev,
  (VTBL_ENTRY)&_ZN8S20935C12v7Ev,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(-80,-36),
  ABISELECT(48,28),
  ABISELECT(-80,-36),
  (VTBL_ENTRY)&(_ZTI8S20935C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20935C1D1Ev,_ZTv0_n16_N8S20935C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n32_N8S20935C1D0Ev,_ZTv0_n16_N8S20935C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20935C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v15Ev,
  0,
  ABISELECT(-128,-64),
  ABISELECT(-128,-64),
  (VTBL_ENTRY)&(_ZTI8S20935C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20935C1D1Ev,_ZTv0_n12_N8S20935C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20935C1D0Ev,_ZTv0_n12_N8S20935C1D0Ev),
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
};
extern VTBL_ENTRY _ZTV8S20935C1[];
extern void _ZN8S20935C2D1Ev();
extern void _ZN8S20935C2D0Ev();
extern void _ZN8S20935C32v8Ev();
extern void _ZN8S20935C42v9Ev();
extern void _ZN8S20935C43v10Ev();
extern void _ZN8S20935C43v11Ev();
extern void _ZN8S20935C23v12Ev();
extern void _ZN8S20935C23v13Ev();
extern void _ZN8S20935C23v14Ev();
extern void _ZN8S20935C23v15Ev();
static  VTBL_ENTRY _tg__ZTV8S20935C2__8S20935C1[] = {
  ABISELECT(48,28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20935C2[0]),
  (VTBL_ENTRY)&_ZN8S20935C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20935C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
  (VTBL_ENTRY)&_ZN8S20935C42v9Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v10Ev,
  (VTBL_ENTRY)&_ZN8S20935C43v11Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v12Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v13Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v14Ev,
  (VTBL_ENTRY)&_ZN8S20935C23v15Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S20935C2D1Ev,_ZTv0_n12_N8S20935C2D1Ev)();
extern void ABISELECT(_ZThn48_N8S20935C2D1Ev,_ZThn28_N8S20935C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S20935C2D0Ev,_ZTv0_n12_N8S20935C2D0Ev)();
extern void ABISELECT(_ZThn48_N8S20935C2D0Ev,_ZThn28_N8S20935C2D0Ev)() __attribute__((weak));
extern void _ZN8S20935C32v8Ev();
static  VTBL_ENTRY _tg__ZTV8S20935C3__8S20935C2__8S20935C1[] = {
  0,
  ABISELECT(-48,-28),
  ABISELECT(-48,-28),
  (VTBL_ENTRY)&(_ZTI8S20935C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20935C2D1Ev,_ZTv0_n12_N8S20935C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S20935C2D0Ev,_ZTv0_n12_N8S20935C2D0Ev),
  (VTBL_ENTRY)&_ZN8S20935C32v8Ev,
};
static  VTT_ENTRY vtt_S20935C1[] = {
  {&(_ZTV8S20935C1[4]),  4,42},
  {&(_ZTV8S20935C1[25]),  25,42},
  {&(_ZTV8S20935C1[39]),  39,42},
  {&(_tg__ZTV8S20935C2__8S20935C1[3]),  3,13},
  {&(_tg__ZTV8S20935C3__8S20935C2__8S20935C1[4]),  4,7},
};
extern VTBL_ENTRY _ZTI8S20935C1[];
extern  VTBL_ENTRY _ZTV8S20935C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20935C1[];
static VTBL_ENTRY alt_thunk_names166[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20935C2D0Ev,_ZTv0_n12_N8S20935C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20935C2D0Ev,_ZThn28_N8S20935C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20935C2D1Ev,_ZTv0_n12_N8S20935C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S20935C2D1Ev,_ZThn28_N8S20935C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20935C1D0Ev,_ZTv0_n12_N8S20935C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20935C1D0Ev,_ZThn64_N8S20935C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S20935C1D1Ev,_ZTv0_n12_N8S20935C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn128_N8S20935C1D1Ev,_ZThn64_N8S20935C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20935C1D0Ev,_ZTv0_n16_N8S20935C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20935C1D0Ev,_ZThn36_N8S20935C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n32_N8S20935C1D1Ev,_ZTv0_n16_N8S20935C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn80_N8S20935C1D1Ev,_ZThn36_N8S20935C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20935C1 = {  "S20935C1", // class name
  bases_S20935C1, 4,
  &(vtc_S20935C1[0]), // expected_vtbl_contents
  &(vtt_S20935C1[0]), // expected_vtt_contents
  ABISELECT(160,80), // object size
  NSPAIRA(_ZTI8S20935C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20935C1),42, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20935C1),5, //virtual table table var
  4, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names166,
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S22135C1  {
  virtual  ~S22135C1(); // _ZN8S22135C1D1Ev
  virtual void  v1(); // _ZN8S22135C12v1Ev
  virtual void  v2(); // _ZN8S22135C12v2Ev
  virtual void  v3(); // _ZN8S22135C12v3Ev
  virtual void  v4(); // _ZN8S22135C12v4Ev
  virtual void  v5(); // _ZN8S22135C12v5Ev
  virtual void  v6(); // _ZN8S22135C12v6Ev
  virtual void  v7(); // _ZN8S22135C12v7Ev
  virtual void  v8(); // _ZN8S22135C12v8Ev
  virtual void  v9(); // _ZN8S22135C12v9Ev
  virtual void  v10(); // _ZN8S22135C13v10Ev
  virtual void  v11(); // _ZN8S22135C13v11Ev
  virtual void  v12(); // _ZN8S22135C13v12Ev
  virtual void  v13(); // _ZN8S22135C13v13Ev
  virtual void  v14(); // _ZN8S22135C13v14Ev
  virtual void  v15(); // _ZN8S22135C13v15Ev
  virtual void  v16(); // _ZN8S22135C13v16Ev
  virtual void  v17(); // _ZN8S22135C13v17Ev
  virtual void  v18(); // _ZN8S22135C13v18Ev
  virtual void  v19(); // _ZN8S22135C13v19Ev
  virtual void  v20(); // _ZN8S22135C13v20Ev
  virtual void  v21(); // _ZN8S22135C13v21Ev
  virtual void  v22(); // _ZN8S22135C13v22Ev
  virtual void  v23(); // _ZN8S22135C13v23Ev
  virtual void  v24(); // _ZN8S22135C13v24Ev
  S22135C1(); // tgen
};
//SIG(1 S22135C1) 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}


 S22135C1 ::~S22135C1(){ note_dtor("S22135C1", this);}
void  S22135C1 ::v1(){vfunc_called(this, "_ZN8S22135C12v1Ev");}
void  S22135C1 ::v2(){vfunc_called(this, "_ZN8S22135C12v2Ev");}
void  S22135C1 ::v3(){vfunc_called(this, "_ZN8S22135C12v3Ev");}
void  S22135C1 ::v4(){vfunc_called(this, "_ZN8S22135C12v4Ev");}
void  S22135C1 ::v5(){vfunc_called(this, "_ZN8S22135C12v5Ev");}
void  S22135C1 ::v6(){vfunc_called(this, "_ZN8S22135C12v6Ev");}
void  S22135C1 ::v7(){vfunc_called(this, "_ZN8S22135C12v7Ev");}
void  S22135C1 ::v8(){vfunc_called(this, "_ZN8S22135C12v8Ev");}
void  S22135C1 ::v9(){vfunc_called(this, "_ZN8S22135C12v9Ev");}
void  S22135C1 ::v10(){vfunc_called(this, "_ZN8S22135C13v10Ev");}
void  S22135C1 ::v11(){vfunc_called(this, "_ZN8S22135C13v11Ev");}
void  S22135C1 ::v12(){vfunc_called(this, "_ZN8S22135C13v12Ev");}
void  S22135C1 ::v13(){vfunc_called(this, "_ZN8S22135C13v13Ev");}
void  S22135C1 ::v14(){vfunc_called(this, "_ZN8S22135C13v14Ev");}
void  S22135C1 ::v15(){vfunc_called(this, "_ZN8S22135C13v15Ev");}
void  S22135C1 ::v16(){vfunc_called(this, "_ZN8S22135C13v16Ev");}
void  S22135C1 ::v17(){vfunc_called(this, "_ZN8S22135C13v17Ev");}
void  S22135C1 ::v18(){vfunc_called(this, "_ZN8S22135C13v18Ev");}
void  S22135C1 ::v19(){vfunc_called(this, "_ZN8S22135C13v19Ev");}
void  S22135C1 ::v20(){vfunc_called(this, "_ZN8S22135C13v20Ev");}
void  S22135C1 ::v21(){vfunc_called(this, "_ZN8S22135C13v21Ev");}
void  S22135C1 ::v22(){vfunc_called(this, "_ZN8S22135C13v22Ev");}
void  S22135C1 ::v23(){vfunc_called(this, "_ZN8S22135C13v23Ev");}
void  S22135C1 ::v24(){vfunc_called(this, "_ZN8S22135C13v24Ev");}
S22135C1 ::S22135C1(){ note_ctor("S22135C1", this);} // tgen

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

#else // __cplusplus

extern void _ZN8S22135C1C1Ev();
extern void _ZN8S22135C1D1Ev();
Name_Map name_map_S22135C1[] = {
  NSPAIR(_ZN8S22135C1C1Ev),
  NSPAIR(_ZN8S22135C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S22135C1[];
extern void _ZN8S22135C1D1Ev();
extern void _ZN8S22135C1D0Ev();
extern void _ZN8S22135C12v1Ev();
extern void _ZN8S22135C12v2Ev();
extern void _ZN8S22135C12v3Ev();
extern void _ZN8S22135C12v4Ev();
extern void _ZN8S22135C12v5Ev();
extern void _ZN8S22135C12v6Ev();
extern void _ZN8S22135C12v7Ev();
extern void _ZN8S22135C12v8Ev();
extern void _ZN8S22135C12v9Ev();
extern void _ZN8S22135C13v10Ev();
extern void _ZN8S22135C13v11Ev();
extern void _ZN8S22135C13v12Ev();
extern void _ZN8S22135C13v13Ev();
extern void _ZN8S22135C13v14Ev();
extern void _ZN8S22135C13v15Ev();
extern void _ZN8S22135C13v16Ev();
extern void _ZN8S22135C13v17Ev();
extern void _ZN8S22135C13v18Ev();
extern void _ZN8S22135C13v19Ev();
extern void _ZN8S22135C13v20Ev();
extern void _ZN8S22135C13v21Ev();
extern void _ZN8S22135C13v22Ev();
extern void _ZN8S22135C13v23Ev();
extern void _ZN8S22135C13v24Ev();
static  VTBL_ENTRY vtc_S22135C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S22135C1[0]),
  (VTBL_ENTRY)&_ZN8S22135C1D1Ev,
  (VTBL_ENTRY)&_ZN8S22135C1D0Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v1Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v2Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v3Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v4Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v5Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v6Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v7Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v8Ev,
  (VTBL_ENTRY)&_ZN8S22135C12v9Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v10Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v11Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v12Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v13Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v14Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v15Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v16Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v17Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v18Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v19Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v20Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v21Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v22Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v23Ev,
  (VTBL_ENTRY)&_ZN8S22135C13v24Ev,
};
extern VTBL_ENTRY _ZTI8S22135C1[];
extern  VTBL_ENTRY _ZTV8S22135C1[];
Class_Descriptor cd_S22135C1 = {  "S22135C1", // class name
  0,0,//no base classes
  &(vtc_S22135C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S22135C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S22135C1),28, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13454C3_nt  {
  void *s13454c3f0[3];
  char s13454c3f1[60];
  int s13454c3f2;
};
//SIG(-1 S13454C3_nt) C1{ Fp[3] Fc[60] Fi}



//skip512 S13454C3_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13454C4_nt  {
  char s13454c4f0[4];
};
//SIG(-1 S13454C4_nt) C1{ Fc[4]}



//skip512 S13454C4_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13454C2  {
  int s13454c2f0;
  ::S13454C3_nt s13454c2f1;
  int s13454c2f2;
  ::S13454C4_nt s13454c2f3;
  int s13454c2f4[2];
  char s13454c2f5[32];
};
//SIG(-1 S13454C2) C1{ Fi FC2{ Fp[3] Fc[60] Fi} Fi FC3{ Fc[4]} Fi[2] Fc[32]}



static void Test_S13454C2()
{
  {
    init_simple_test("S13454C2");
    S13454C2 lv;
    check2(sizeof(lv), ABISELECT(144,128), "sizeof(S13454C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13454C2)");
    check_field_offset(lv, s13454c2f0, 0, "S13454C2.s13454c2f0");
    check_field_offset(lv, s13454c2f1, ABISELECT(8,4), "S13454C2.s13454c2f1");
    check_field_offset(lv, s13454c2f2, ABISELECT(96,80), "S13454C2.s13454c2f2");
    check_field_offset(lv, s13454c2f3, ABISELECT(100,84), "S13454C2.s13454c2f3");
    check_field_offset(lv, s13454c2f4, ABISELECT(104,88), "S13454C2.s13454c2f4");
    check_field_offset(lv, s13454c2f5, ABISELECT(112,96), "S13454C2.s13454c2f5");
  }
}
static Arrange_To_Call_Me vS13454C2(Test_S13454C2, "S13454C2", ABISELECT(144,128));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13454C5_nt  {
  int s13454c5f0[2];
  char s13454c5f1[32];
};
//SIG(-1 S13454C5_nt) C1{ Fi[2] Fc[32]}



//skip512 S13454C5_nt

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S13454C1  {
  int s13454c1f0[4];
  ::S13454C2 s13454c1f1;
  int s13454c1f2[2];
  ::S13454C5_nt s13454c1f3;
  char s13454c1f4[64];
};
//SIG(1 S13454C1) C1{ Fi[4] FC2{ Fi FC3{ Fp[3] Fc[60] Fi} Fi FC4{ Fc[4]} Fi[2] Fc[32]} Fi[2] FC5{ Fi[2] Fc[32]} Fc[64]}



static void Test_S13454C1()
{
  {
    init_simple_test("S13454C1");
    S13454C1 lv;
    check2(sizeof(lv), ABISELECT(272,256), "sizeof(S13454C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13454C1)");
    check_field_offset(lv, s13454c1f0, 0, "S13454C1.s13454c1f0");
    check_field_offset(lv, s13454c1f1, 16, "S13454C1.s13454c1f1");
    check_field_offset(lv, s13454c1f2, ABISELECT(160,144), "S13454C1.s13454c1f2");
    check_field_offset(lv, s13454c1f3, ABISELECT(168,152), "S13454C1.s13454c1f3");
    check_field_offset(lv, s13454c1f4, ABISELECT(208,192), "S13454C1.s13454c1f4");
  }
}
static Arrange_To_Call_Me vS13454C1(Test_S13454C1, "S13454C1", ABISELECT(272,256));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus

struct  S6812C2  {
  long s6812c2f0;
  virtual void  v4(); // _ZN7S6812C22v4Ev
  virtual void  v5(); // _ZN7S6812C22v5Ev
  virtual void  v6(); // _ZN7S6812C22v6Ev
  virtual void  v7(); // _ZN7S6812C22v7Ev
  virtual void  v8(); // _ZN7S6812C22v8Ev
  ~S6812C2(); // tgen
  S6812C2(); // tgen
};
//SIG(-1 S6812C2) C1{ v1 v2 v3 v4 v5 Fl}


void  S6812C2 ::v4(){vfunc_called(this, "_ZN7S6812C22v4Ev");}
void  S6812C2 ::v5(){vfunc_called(this, "_ZN7S6812C22v5Ev");}
void  S6812C2 ::v6(){vfunc_called(this, "_ZN7S6812C22v6Ev");}
void  S6812C2 ::v7(){vfunc_called(this, "_ZN7S6812C22v7Ev");}
void  S6812C2 ::v8(){vfunc_called(this, "_ZN7S6812C22v8Ev");}
S6812C2 ::~S6812C2(){ note_dtor("S6812C2", this);} // tgen
S6812C2 ::S6812C2(){ note_ctor("S6812C2", this);} // tgen

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

#else // __cplusplus

extern void _ZN7S6812C2C1Ev();
extern void _ZN7S6812C2D1Ev();
Name_Map name_map_S6812C2[] = {
  NSPAIR(_ZN7S6812C2C1Ev),
  NSPAIR(_ZN7S6812C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6812C2[];
extern void _ZN7S6812C22v4Ev();
extern void _ZN7S6812C22v5Ev();
extern void _ZN7S6812C22v6Ev();
extern void _ZN7S6812C22v7Ev();
extern void _ZN7S6812C22v8Ev();
static  VTBL_ENTRY vtc_S6812C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6812C2[0]),
  (VTBL_ENTRY)&_ZN7S6812C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6812C2[];
extern  VTBL_ENTRY _ZTV7S6812C2[];
Class_Descriptor cd_S6812C2 = {  "S6812C2", // class name
  0,0,//no base classes
  &(vtc_S6812C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6812C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6812C2),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  S6812C3  {
  virtual void  v9(); // _ZN7S6812C32v9Ev
  ~S6812C3(); // tgen
  S6812C3(); // tgen
};
//SIG(-1 S6812C3) C1{ v1}


void  S6812C3 ::v9(){vfunc_called(this, "_ZN7S6812C32v9Ev");}
S6812C3 ::~S6812C3(){ note_dtor("S6812C3", this);} // tgen
S6812C3 ::S6812C3(){ note_ctor("S6812C3", this);} // tgen

static void Test_S6812C3()
{
  extern Class_Descriptor cd_S6812C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6812C3, buf);
    S6812C3 *dp, &lv = *(dp=new (buf) S6812C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6812C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6812C3)");
    test_class_info(&lv, &cd_S6812C3);
    dp->~S6812C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6812C3(Test_S6812C3, "S6812C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6812C3C1Ev();
extern void _ZN7S6812C3D1Ev();
Name_Map name_map_S6812C3[] = {
  NSPAIR(_ZN7S6812C3C1Ev),
  NSPAIR(_ZN7S6812C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6812C3[];
extern void _ZN7S6812C32v9Ev();
static  VTBL_ENTRY vtc_S6812C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6812C3[0]),
  (VTBL_ENTRY)&_ZN7S6812C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S6812C3[];
extern  VTBL_ENTRY _ZTV7S6812C3[];
Class_Descriptor cd_S6812C3 = {  "S6812C3", // class name
  0,0,//no base classes
  &(vtc_S6812C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6812C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6812C3),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  S6812C1  : S6812C2 , S6812C3 {
  ::S19534C4 s6812c1f0[2];
  void *s6812c1f1[2];
  int s6812c1f2;
  virtual  ~S6812C1(); // _ZN7S6812C1D1Ev
  virtual void  v1(); // _ZN7S6812C12v1Ev
  virtual void  v2(); // _ZN7S6812C12v2Ev
  virtual void  v3(); // _ZN7S6812C12v3Ev
  S6812C1(); // tgen
};
//SIG(1 S6812C1) C1{ BC2{ v4 v5 v6 v7 v8 Fl} BC3{ v9} vd v1 v2 v3 FC4{ vd v10 v11 v12 v13 v14 v15 Fs}[2] Fp[2] Fi}


 S6812C1 ::~S6812C1(){ note_dtor("S6812C1", this);}
void  S6812C1 ::v1(){vfunc_called(this, "_ZN7S6812C12v1Ev");}
void  S6812C1 ::v2(){vfunc_called(this, "_ZN7S6812C12v2Ev");}
void  S6812C1 ::v3(){vfunc_called(this, "_ZN7S6812C12v3Ev");}
S6812C1 ::S6812C1(){ note_ctor("S6812C1", this);} // tgen

static void Test_S6812C1()
{
  extern Class_Descriptor cd_S6812C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[11];
    init_test(&cd_S6812C1, buf);
    S6812C1 *dp, &lv = *(dp=new (buf) S6812C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S6812C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6812C1)");
    check_base_class_offset(lv, (S6812C2*), 0, "S6812C1");
    check_base_class_offset(lv, (S6812C3*), ABISELECT(16,8), "S6812C1");
    check_field_offset(lv, s6812c1f0, ABISELECT(24,12), "S6812C1.s6812c1f0");
    check_field_offset(lv, s6812c1f1, ABISELECT(56,28), "S6812C1.s6812c1f1");
    check_field_offset(lv, s6812c1f2, ABISELECT(72,36), "S6812C1.s6812c1f2");
    test_class_info(&lv, &cd_S6812C1);
    dp->~S6812C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6812C1(Test_S6812C1, "S6812C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN7S6812C1C1Ev();
extern void _ZN7S6812C1D1Ev();
Name_Map name_map_S6812C1[] = {
  NSPAIR(_ZN7S6812C1C1Ev),
  NSPAIR(_ZN7S6812C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6812C2;
extern VTBL_ENTRY _ZTI7S6812C2[];
extern  VTBL_ENTRY _ZTV7S6812C2[];
extern Class_Descriptor cd_S6812C3;
extern VTBL_ENTRY _ZTI7S6812C3[];
extern  VTBL_ENTRY _ZTV7S6812C3[];
static Base_Class bases_S6812C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6812C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6812C3,    ABISELECT(16,8), //bcp->offset
    12, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6812C1[];
extern void _ZN7S6812C22v4Ev();
extern void _ZN7S6812C22v5Ev();
extern void _ZN7S6812C22v6Ev();
extern void _ZN7S6812C22v7Ev();
extern void _ZN7S6812C22v8Ev();
extern void _ZN7S6812C1D1Ev();
extern void _ZN7S6812C1D0Ev();
extern void _ZN7S6812C12v1Ev();
extern void _ZN7S6812C12v2Ev();
extern void _ZN7S6812C12v3Ev();
extern void _ZN7S6812C32v9Ev();
static  VTBL_ENTRY vtc_S6812C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6812C1[0]),
  (VTBL_ENTRY)&_ZN7S6812C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6812C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6812C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6812C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6812C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6812C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6812C12v3Ev,
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S6812C1[0]),
  (VTBL_ENTRY)&_ZN7S6812C32v9Ev,
};
extern VTBL_ENTRY _ZTI7S6812C1[];
extern  VTBL_ENTRY _ZTV7S6812C1[];
Class_Descriptor cd_S6812C1 = {  "S6812C1", // class name
  bases_S6812C1, 2,
  &(vtc_S6812C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI7S6812C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6812C1),15, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C3_nt  : S20489C10_nt {
};
//SIG(-1 S1064C3_nt) C1{ BC2{ m Fi}}



//skip512 S1064C3_nt

#else // __cplusplus

extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S1064C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1064C3_nt[];
VTBL_ENTRY *P__ZTI10S1064C3_nt = _ZTI10S1064C3_nt; 
Class_Descriptor cd_S1064C3_nt = {  "S1064C3_nt", // class name
  bases_S1064C3_nt, 1,
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S1064C3_nt),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C2_nt  : S1064C3_nt {
  virtual  ~S1064C2_nt(); // _ZN10S1064C2_ntD1Ev
  virtual void  v2(); // _ZN10S1064C2_nt2v2Ev
  S1064C2_nt(); // tgen
};
//SIG(-1 S1064C2_nt) C1{ BC2{ BC3{ m Fi}} vd v1}


 S1064C2_nt ::~S1064C2_nt(){ note_dtor("S1064C2_nt", this);}
void  S1064C2_nt ::v2(){vfunc_called(this, "_ZN10S1064C2_nt2v2Ev");}
S1064C2_nt ::S1064C2_nt(){ note_ctor("S1064C2_nt", this);} // tgen

//skip512 S1064C2_nt

#else // __cplusplus

extern void _ZN10S1064C2_ntC1Ev();
extern void _ZN10S1064C2_ntD1Ev();
Name_Map name_map_S1064C2_nt[] = {
  NSPAIR(_ZN10S1064C2_ntC1Ev),
  NSPAIR(_ZN10S1064C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S1064C3_nt;
extern VTBL_ENTRY _ZTI10S1064C3_nt[];
static Base_Class bases_S1064C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1064C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S1064C2_nt[];
extern void _ZN10S1064C2_ntD1Ev();
extern void _ZN10S1064C2_ntD0Ev();
extern void _ZN10S1064C2_nt2v2Ev();
static  VTBL_ENTRY vtc_S1064C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S1064C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S1064C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S1064C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN10S1064C2_nt2v2Ev,
};
extern VTBL_ENTRY _ZTI10S1064C2_nt[];
VTBL_ENTRY *P__ZTI10S1064C2_nt = _ZTI10S1064C2_nt; 
extern  VTBL_ENTRY _ZTV10S1064C2_nt[];
Class_Descriptor cd_S1064C2_nt = {  "S1064C2_nt", // class name
  bases_S1064C2_nt, 2,
  &(vtc_S1064C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI10S1064C2_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV10S1064C2_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  S1064C5_nt  {
  ::S10296C5_nt s1064c5f0;
  void  mf1064c5(); // _ZN10S1064C5_nt8mf1064c5Ev
};
//SIG(-1 S1064C5_nt) C1{ m FC2{ m Fp}}


void  S1064C5_nt ::mf1064c5(){}

//skip512 S1064C5_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C7_nt  {
  void *s1064c7f0;
  void  mf1064c7(); // _ZN10S1064C7_nt8mf1064c7Ev
};
//SIG(-1 S1064C7_nt) C1{ m Fp}


void  S1064C7_nt ::mf1064c7(){}

//skip512 S1064C7_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C10  {
  int s1064c10f0;
  void *s1064c10f1[5];
};
//SIG(-1 S1064C10) C1{ Fi Fp[5]}



static void Test_S1064C10()
{
  {
    init_simple_test("S1064C10");
    S1064C10 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1064C10)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1064C10)");
    check_field_offset(lv, s1064c10f0, 0, "S1064C10.s1064c10f0");
    check_field_offset(lv, s1064c10f1, ABISELECT(8,4), "S1064C10.s1064c10f1");
  }
}
static Arrange_To_Call_Me vS1064C10(Test_S1064C10, "S1064C10", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C9  {
  ::S1064C10 s1064c9f0;
  void  mf1064c9(); // _ZN7S1064C98mf1064c9Ev
};
//SIG(-1 S1064C9) C1{ m FC2{ Fi Fp[5]}}


void  S1064C9 ::mf1064c9(){}

static void Test_S1064C9()
{
  {
    init_simple_test("S1064C9");
    S1064C9 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1064C9)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1064C9)");
    check_field_offset(lv, s1064c9f0, 0, "S1064C9.s1064c9f0");
  }
}
static Arrange_To_Call_Me vS1064C9(Test_S1064C9, "S1064C9", ABISELECT(48,24));

#else // __cplusplus

Class_Descriptor cd_S1064C9 = {  "S1064C9", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(48,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C8  : S1064C9 {
};
//SIG(-1 S1064C8) C1{ BC2{ m FC3{ Fi Fp[5]}}}



static void Test_S1064C8()
{
  extern Class_Descriptor cd_S1064C8;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S1064C8, buf);
    S1064C8 &lv = *(new (buf) S1064C8());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S1064C8)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1064C8)");
    check_base_class_offset(lv, (S1064C9*), 0, "S1064C8");
    test_class_info(&lv, &cd_S1064C8);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1064C8(Test_S1064C8, "S1064C8", ABISELECT(48,24));

#else // __cplusplus

extern Class_Descriptor cd_S1064C9;
static Base_Class bases_S1064C8[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1064C9,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S1064C8 = {  "S1064C8", // class name
  bases_S1064C8, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(48,24), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S1064C1  : S1064C2_nt {
  ::S1064C5_nt s1064c1f0;
  void *s1064c1f1;
  ::S1064C7_nt s1064c1f2;
  ::S1064C8 s1064c1f3;
  virtual  ~S1064C1(); // _ZN7S1064C1D1Ev
  virtual void  v1(); // _ZN7S1064C12v1Ev
  S1064C1(); // tgen
};
//SIG(1 S1064C1) C1{ BC2{ BC3{ BC4{ m Fi}} vd v2} vd v1 FC5{ m FC6{ m Fp}} Fp FC7{ m Fp} FC8{ BC9{ m FC10{ Fi Fp[5]}}}}


 S1064C1 ::~S1064C1(){ note_dtor("S1064C1", this);}
void  S1064C1 ::v1(){vfunc_called(this, "_ZN7S1064C12v1Ev");}
S1064C1 ::S1064C1(){ note_ctor("S1064C1", this);} // tgen

static void Test_S1064C1()
{
  extern Class_Descriptor cd_S1064C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[12];
    init_test(&cd_S1064C1, buf);
    S1064C1 *dp, &lv = *(dp=new (buf) S1064C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,44), "sizeof(S1064C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S1064C1)");
    check_base_class_offset(lv, (S20489C10_nt*)(S1064C3_nt*)(S1064C2_nt*), ABISELECT(8,4), "S1064C1");
    check_base_class_offset(lv, (S1064C3_nt*)(S1064C2_nt*), ABISELECT(8,4), "S1064C1");
    check_base_class_offset(lv, (S1064C2_nt*), 0, "S1064C1");
    check_field_offset(lv, s1064c1f0, ABISELECT(16,8), "S1064C1.s1064c1f0");
    check_field_offset(lv, s1064c1f1, ABISELECT(24,12), "S1064C1.s1064c1f1");
    check_field_offset(lv, s1064c1f2, ABISELECT(32,16), "S1064C1.s1064c1f2");
    check_field_offset(lv, s1064c1f3, ABISELECT(40,20), "S1064C1.s1064c1f3");
    test_class_info(&lv, &cd_S1064C1);
    dp->~S1064C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS1064C1(Test_S1064C1, "S1064C1", ABISELECT(88,44));

#else // __cplusplus

extern void _ZN7S1064C1C1Ev();
extern void _ZN7S1064C1D1Ev();
Name_Map name_map_S1064C1[] = {
  NSPAIR(_ZN7S1064C1C1Ev),
  NSPAIR(_ZN7S1064C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S1064C3_nt;
extern VTBL_ENTRY _ZTI10S1064C3_nt[];
extern Class_Descriptor cd_S1064C2_nt;
extern VTBL_ENTRY _ZTI10S1064C2_nt[];
extern  VTBL_ENTRY _ZTV10S1064C2_nt[];
static Base_Class bases_S1064C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S1064C3_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S1064C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S1064C1[];
extern void _ZN7S1064C1D1Ev();
extern void _ZN7S1064C1D0Ev();
extern void _ZN10S1064C2_nt2v2Ev();
extern void _ZN7S1064C12v1Ev();
static  VTBL_ENTRY vtc_S1064C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S1064C1[0]),
  (VTBL_ENTRY)&_ZN7S1064C1D1Ev,
  (VTBL_ENTRY)&_ZN7S1064C1D0Ev,
  (VTBL_ENTRY)&_ZN10S1064C2_nt2v2Ev,
  (VTBL_ENTRY)&_ZN7S1064C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S1064C1[];
extern  VTBL_ENTRY _ZTV7S1064C1[];
Class_Descriptor cd_S1064C1 = {  "S1064C1", // class name
  bases_S1064C1, 3,
  &(vtc_S1064C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,44), // object size
  NSPAIRA(_ZTI7S1064C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S1064C1),6, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7195C2  {
  virtual void  v9(); // _ZN7S7195C22v9Ev
  ~S7195C2(); // tgen
  S7195C2(); // tgen
};
//SIG(-1 S7195C2) C1{ v1}


void  S7195C2 ::v9(){vfunc_called(this, "_ZN7S7195C22v9Ev");}
S7195C2 ::~S7195C2(){ note_dtor("S7195C2", this);} // tgen
S7195C2 ::S7195C2(){ note_ctor("S7195C2", this);} // tgen

static void Test_S7195C2()
{
  extern Class_Descriptor cd_S7195C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7195C2, buf);
    S7195C2 *dp, &lv = *(dp=new (buf) S7195C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7195C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7195C2)");
    test_class_info(&lv, &cd_S7195C2);
    dp->~S7195C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7195C2(Test_S7195C2, "S7195C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7195C2C1Ev();
extern void _ZN7S7195C2D1Ev();
Name_Map name_map_S7195C2[] = {
  NSPAIR(_ZN7S7195C2C1Ev),
  NSPAIR(_ZN7S7195C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7195C2[];
extern void _ZN7S7195C22v9Ev();
static  VTBL_ENTRY vtc_S7195C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7195C2[0]),
  (VTBL_ENTRY)&_ZN7S7195C22v9Ev,
};
extern VTBL_ENTRY _ZTI7S7195C2[];
extern  VTBL_ENTRY _ZTV7S7195C2[];
Class_Descriptor cd_S7195C2 = {  "S7195C2", // class name
  0,0,//no base classes
  &(vtc_S7195C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7195C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7195C2),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  S7195C5  : virtual S7195C2 {
  virtual void  v12(); // _ZN7S7195C53v12Ev
  ~S7195C5(); // tgen
  S7195C5(); // tgen
};
//SIG(-1 S7195C5) C1{ VBC2{ v2} v1}


void  S7195C5 ::v12(){vfunc_called(this, "_ZN7S7195C53v12Ev");}
S7195C5 ::~S7195C5(){ note_dtor("S7195C5", this);} // tgen
S7195C5 ::S7195C5(){ note_ctor("S7195C5", this);} // tgen

static void Test_S7195C5()
{
  extern Class_Descriptor cd_S7195C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7195C5, buf);
    S7195C5 *dp, &lv = *(dp=new (buf) S7195C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7195C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7195C5)");
    check_base_class_offset(lv, (S7195C2*), 0, "S7195C5");
    test_class_info(&lv, &cd_S7195C5);
    dp->~S7195C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7195C5(Test_S7195C5, "S7195C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7195C5C1Ev();
extern void _ZN7S7195C5D1Ev();
Name_Map name_map_S7195C5[] = {
  NSPAIR(_ZN7S7195C5C1Ev),
  NSPAIR(_ZN7S7195C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7195C2;
extern VTBL_ENTRY _ZTI7S7195C2[];
extern  VTBL_ENTRY _ZTV7S7195C2[];
static Base_Class bases_S7195C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7195C2,    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 _ZTI7S7195C5[];
extern void _ZN7S7195C22v9Ev();
extern void _ZN7S7195C53v12Ev();
static  VTBL_ENTRY vtc_S7195C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7195C5[0]),
  (VTBL_ENTRY)&_ZN7S7195C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7195C53v12Ev,
};
extern VTBL_ENTRY _ZTV7S7195C5[];
static  VTT_ENTRY vtt_S7195C5[] = {
  {&(_ZTV7S7195C5[4]),  4,6},
  {&(_ZTV7S7195C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7195C5[];
extern  VTBL_ENTRY _ZTV7S7195C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7195C5[];
Class_Descriptor cd_S7195C5 = {  "S7195C5", // class name
  bases_S7195C5, 1,
  &(vtc_S7195C5[0]), // expected_vtbl_contents
  &(vtt_S7195C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7195C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7195C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7195C5),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  S7195C4  : S7195C5 {
  __tsi64 s7195c4f0[10];
  ::S7195C5 s7195c4f1;
  virtual void  v10(); // _ZN7S7195C43v10Ev
  virtual void  v11(); // _ZN7S7195C43v11Ev
  ~S7195C4(); // tgen
  S7195C4(); // tgen
};
//SIG(-1 S7195C4) C1{ BC2{ VBC3{ v3} v4} v1 v2 FL[10] FC2}


void  S7195C4 ::v10(){vfunc_called(this, "_ZN7S7195C43v10Ev");}
void  S7195C4 ::v11(){vfunc_called(this, "_ZN7S7195C43v11Ev");}
S7195C4 ::~S7195C4(){ note_dtor("S7195C4", this);} // tgen
S7195C4 ::S7195C4(){ note_ctor("S7195C4", this);} // tgen

static void Test_S7195C4()
{
  extern Class_Descriptor cd_S7195C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,23)];
    init_test(&cd_S7195C4, buf);
    S7195C4 *dp, &lv = *(dp=new (buf) S7195C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,88), "sizeof(S7195C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7195C4)");
    check_base_class_offset(lv, (S7195C2*)(S7195C5*), 0, "S7195C4");
    check_base_class_offset(lv, (S7195C5*), 0, "S7195C4");
    check_field_offset(lv, s7195c4f0, ABISELECT(8,4), "S7195C4.s7195c4f0");
    check_field_offset(lv, s7195c4f1, ABISELECT(88,84), "S7195C4.s7195c4f1");
    test_class_info(&lv, &cd_S7195C4);
    dp->~S7195C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7195C4(Test_S7195C4, "S7195C4", ABISELECT(96,88));

#else // __cplusplus

extern void _ZN7S7195C4C1Ev();
extern void _ZN7S7195C4D1Ev();
Name_Map name_map_S7195C4[] = {
  NSPAIR(_ZN7S7195C4C1Ev),
  NSPAIR(_ZN7S7195C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7195C2;
extern VTBL_ENTRY _ZTI7S7195C2[];
extern  VTBL_ENTRY _ZTV7S7195C2[];
extern Class_Descriptor cd_S7195C5;
extern VTBL_ENTRY _ZTI7S7195C5[];
extern  VTBL_ENTRY _ZTV7S7195C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7195C5[];
static Base_Class bases_S7195C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7195C2,    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_S7195C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7195C4[];
extern void _ZN7S7195C22v9Ev();
extern void _ZN7S7195C53v12Ev();
extern void _ZN7S7195C43v10Ev();
extern void _ZN7S7195C43v11Ev();
static  VTBL_ENTRY vtc_S7195C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7195C4[0]),
  (VTBL_ENTRY)&_ZN7S7195C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7195C53v12Ev,
  (VTBL_ENTRY)&_ZN7S7195C43v10Ev,
  (VTBL_ENTRY)&_ZN7S7195C43v11Ev,
};
extern VTBL_ENTRY _ZTV7S7195C4[];
extern void _ZN7S7195C22v9Ev();
extern void _ZN7S7195C53v12Ev();
static  VTBL_ENTRY _tg__ZTV7S7195C5__7S7195C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7195C5[0]),
  (VTBL_ENTRY)&_ZN7S7195C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7195C53v12Ev,
};
static  VTT_ENTRY vtt_S7195C4[] = {
  {&(_ZTV7S7195C4[4]),  4,8},
  {&(_tg__ZTV7S7195C5__7S7195C4[4]),  4,6},
  {&(_tg__ZTV7S7195C5__7S7195C4[4]),  4,6},
  {&(_ZTV7S7195C4[4]),  4,8},
};
extern VTBL_ENTRY _ZTI7S7195C4[];
extern  VTBL_ENTRY _ZTV7S7195C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7195C4[];
Class_Descriptor cd_S7195C4 = {  "S7195C4", // class name
  bases_S7195C4, 2,
  &(vtc_S7195C4[0]), // expected_vtbl_contents
  &(vtt_S7195C4[0]), // expected_vtt_contents
  ABISELECT(96,88), // object size
  NSPAIRA(_ZTI7S7195C4),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7195C4),8, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7195C4),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7195C1  : S7195C2 , S9624C48 {
  __tsi64 s7195c1f0[10];
  ::S7195C4 s7195c1f1;
  virtual  ~S7195C1(); // _ZN7S7195C1D1Ev
  virtual void  v1(); // _ZN7S7195C12v1Ev
  virtual void  v2(); // _ZN7S7195C12v2Ev
  virtual void  v3(); // _ZN7S7195C12v3Ev
  virtual void  v4(); // _ZN7S7195C12v4Ev
  virtual void  v5(); // _ZN7S7195C12v5Ev
  virtual void  v6(); // _ZN7S7195C12v6Ev
  virtual void  v7(); // _ZN7S7195C12v7Ev
  virtual void  v8(); // _ZN7S7195C12v8Ev
  S7195C1(); // tgen
};
//SIG(1 S7195C1) C1{ BC2{ v9} BC3{ m} vd v1 v2 v3 v4 v5 v6 v7 v8 FL[10] FC4{ BC5{ VBC2 v12} v10 v11 FL[10] FC5}}


 S7195C1 ::~S7195C1(){ note_dtor("S7195C1", this);}
void  S7195C1 ::v1(){vfunc_called(this, "_ZN7S7195C12v1Ev");}
void  S7195C1 ::v2(){vfunc_called(this, "_ZN7S7195C12v2Ev");}
void  S7195C1 ::v3(){vfunc_called(this, "_ZN7S7195C12v3Ev");}
void  S7195C1 ::v4(){vfunc_called(this, "_ZN7S7195C12v4Ev");}
void  S7195C1 ::v5(){vfunc_called(this, "_ZN7S7195C12v5Ev");}
void  S7195C1 ::v6(){vfunc_called(this, "_ZN7S7195C12v6Ev");}
void  S7195C1 ::v7(){vfunc_called(this, "_ZN7S7195C12v7Ev");}
void  S7195C1 ::v8(){vfunc_called(this, "_ZN7S7195C12v8Ev");}
S7195C1 ::S7195C1(){ note_ctor("S7195C1", this);} // tgen

static void Test_S7195C1()
{
  extern Class_Descriptor cd_S7195C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(24,44)];
    init_test(&cd_S7195C1, buf);
    S7195C1 *dp, &lv = *(dp=new (buf) S7195C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(184,172), "sizeof(S7195C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7195C1)");
    check_base_class_offset(lv, (S7195C2*), 0, "S7195C1");
    check_base_class_offset(lv, (S9624C48*), 0, "S7195C1");
    check_field_offset(lv, s7195c1f0, ABISELECT(8,4), "S7195C1.s7195c1f0");
    check_field_offset(lv, s7195c1f1, ABISELECT(88,84), "S7195C1.s7195c1f1");
    test_class_info(&lv, &cd_S7195C1);
    dp->~S7195C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7195C1(Test_S7195C1, "S7195C1", ABISELECT(184,172));

#else // __cplusplus

extern void _ZN7S7195C1C1Ev();
extern void _ZN7S7195C1D1Ev();
Name_Map name_map_S7195C1[] = {
  NSPAIR(_ZN7S7195C1C1Ev),
  NSPAIR(_ZN7S7195C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7195C2;
extern VTBL_ENTRY _ZTI7S7195C2[];
extern  VTBL_ENTRY _ZTV7S7195C2[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S7195C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7195C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7195C1[];
extern void _ZN7S7195C22v9Ev();
extern void _ZN7S7195C1D1Ev();
extern void _ZN7S7195C1D0Ev();
extern void _ZN7S7195C12v1Ev();
extern void _ZN7S7195C12v2Ev();
extern void _ZN7S7195C12v3Ev();
extern void _ZN7S7195C12v4Ev();
extern void _ZN7S7195C12v5Ev();
extern void _ZN7S7195C12v6Ev();
extern void _ZN7S7195C12v7Ev();
extern void _ZN7S7195C12v8Ev();
static  VTBL_ENTRY vtc_S7195C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7195C1[0]),
  (VTBL_ENTRY)&_ZN7S7195C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7195C1D1Ev,
  (VTBL_ENTRY)&_ZN7S7195C1D0Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v4Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v5Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v6Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v7Ev,
  (VTBL_ENTRY)&_ZN7S7195C12v8Ev,
};
extern VTBL_ENTRY _ZTI7S7195C1[];
extern  VTBL_ENTRY _ZTV7S7195C1[];
Class_Descriptor cd_S7195C1 = {  "S7195C1", // class name
  bases_S7195C1, 2,
  &(vtc_S7195C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(184,172), // object size
  NSPAIRA(_ZTI7S7195C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7195C1),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20031C2  {
  short s20031c2f0[16];
  __tsi64 s20031c2f1;
  void *s20031c2f2;
  int s20031c2f3[9];
  virtual void  v2(); // _ZN8S20031C22v2Ev
  ~S20031C2(); // tgen
  S20031C2(); // tgen
};
//SIG(-1 S20031C2) C1{ v1 Fs[16] FL Fp Fi[9]}


void  S20031C2 ::v2(){vfunc_called(this, "_ZN8S20031C22v2Ev");}
S20031C2 ::~S20031C2(){ note_dtor("S20031C2", this);} // tgen
S20031C2 ::S20031C2(){ note_ctor("S20031C2", this);} // tgen

static void Test_S20031C2()
{
  extern Class_Descriptor cd_S20031C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(13,22)];
    init_test(&cd_S20031C2, buf);
    S20031C2 *dp, &lv = *(dp=new (buf) S20031C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,84), "sizeof(S20031C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20031C2)");
    check_field_offset(lv, s20031c2f0, ABISELECT(8,4), "S20031C2.s20031c2f0");
    check_field_offset(lv, s20031c2f1, ABISELECT(40,36), "S20031C2.s20031c2f1");
    check_field_offset(lv, s20031c2f2, ABISELECT(48,44), "S20031C2.s20031c2f2");
    check_field_offset(lv, s20031c2f3, ABISELECT(56,48), "S20031C2.s20031c2f3");
    test_class_info(&lv, &cd_S20031C2);
    dp->~S20031C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20031C2(Test_S20031C2, "S20031C2", ABISELECT(96,84));

#else // __cplusplus

extern void _ZN8S20031C2C1Ev();
extern void _ZN8S20031C2D1Ev();
Name_Map name_map_S20031C2[] = {
  NSPAIR(_ZN8S20031C2C1Ev),
  NSPAIR(_ZN8S20031C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20031C2[];
extern void _ZN8S20031C22v2Ev();
static  VTBL_ENTRY vtc_S20031C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20031C2[0]),
  (VTBL_ENTRY)&_ZN8S20031C22v2Ev,
};
extern VTBL_ENTRY _ZTI8S20031C2[];
extern  VTBL_ENTRY _ZTV8S20031C2[];
Class_Descriptor cd_S20031C2 = {  "S20031C2", // class name
  0,0,//no base classes
  &(vtc_S20031C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,84), // object size
  NSPAIRA(_ZTI8S20031C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20031C2),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  S20031C3  {
  int s20031c3f0;
  short s20031c3f1[8];
  __tsi64 s20031c3f2[10];
  void *s20031c3f3;
  long double s20031c3f4;
  void *s20031c3f5;
  __tsi64 s20031c3f6;
  void *s20031c3f7[2];
  int s20031c3f8;
  void  mf20031c3(); // _ZN8S20031C39mf20031c3Ev
};
//SIG(-1 S20031C3) C1{ m Fi Fs[8] FL[10] Fp FD Fp FL Fp[2] Fi}


void  S20031C3 ::mf20031c3(){}

static void Test_S20031C3()
{
  {
    init_simple_test("S20031C3");
    S20031C3 lv;
    check2(sizeof(lv), ABISELECT(176,140), "sizeof(S20031C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20031C3)");
    check_field_offset(lv, s20031c3f0, 0, "S20031C3.s20031c3f0");
    check_field_offset(lv, s20031c3f1, 4, "S20031C3.s20031c3f1");
    check_field_offset(lv, s20031c3f2, ABISELECT(24,20), "S20031C3.s20031c3f2");
    check_field_offset(lv, s20031c3f3, ABISELECT(104,100), "S20031C3.s20031c3f3");
    check_field_offset(lv, s20031c3f4, ABISELECT(112,104), "S20031C3.s20031c3f4");
    check_field_offset(lv, s20031c3f5, ABISELECT(128,116), "S20031C3.s20031c3f5");
    check_field_offset(lv, s20031c3f6, ABISELECT(136,120), "S20031C3.s20031c3f6");
    check_field_offset(lv, s20031c3f7, ABISELECT(144,128), "S20031C3.s20031c3f7");
    check_field_offset(lv, s20031c3f8, ABISELECT(160,136), "S20031C3.s20031c3f8");
  }
}
static Arrange_To_Call_Me vS20031C3(Test_S20031C3, "S20031C3", ABISELECT(176,140));

#else // __cplusplus

extern VTBL_ENTRY _ZTI8S20031C3[];
VTBL_ENTRY *P__ZTI8S20031C3 = _ZTI8S20031C3; 
Class_Descriptor cd_S20031C3 = {  "S20031C3", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  ABISELECT(176,140), // object size
  NSPAIRA(_ZTI8S20031C3),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  S20031C1  : virtual S20031C2 {
  char s20031c1f0;
  ::S20031C3 s20031c1f1;
  void *s20031c1f2;
  int s20031c1f3;
  virtual void  v1(); // _ZN8S20031C12v1Ev
  ~S20031C1(); // tgen
  S20031C1(); // tgen
};
//SIG(1 S20031C1) C1{ VBC2{ v2 Fs[16] FL Fp Fi[9]} v1 Fc FC3{ m Fi Fs[8] FL[10] Fp FD Fp FL Fp[2] Fi} Fp Fi}


void  S20031C1 ::v1(){vfunc_called(this, "_ZN8S20031C12v1Ev");}
S20031C1 ::~S20031C1(){ note_dtor("S20031C1", this);} // tgen
S20031C1 ::S20031C1(){ note_ctor("S20031C1", this);} // tgen

static void Test_S20031C1()
{
  extern Class_Descriptor cd_S20031C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(20,61)];
    init_test(&cd_S20031C1, buf);
    S20031C1 *dp, &lv = *(dp=new (buf) S20031C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(304,240), "sizeof(S20031C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20031C1)");
    check_base_class_offset(lv, (S20031C2*), ABISELECT(208,156), "S20031C1");
    check_field_offset(lv, s20031c1f0, ABISELECT(8,4), "S20031C1.s20031c1f0");
    check_field_offset(lv, s20031c1f1, ABISELECT(16,8), "S20031C1.s20031c1f1");
    check_field_offset(lv, s20031c1f2, ABISELECT(192,148), "S20031C1.s20031c1f2");
    check_field_offset(lv, s20031c1f3, ABISELECT(200,152), "S20031C1.s20031c1f3");
    test_class_info(&lv, &cd_S20031C1);
    dp->~S20031C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20031C1(Test_S20031C1, "S20031C1", ABISELECT(304,240));

#else // __cplusplus

extern void _ZN8S20031C1C1Ev();
extern void _ZN8S20031C1D1Ev();
Name_Map name_map_S20031C1[] = {
  NSPAIR(_ZN8S20031C1C1Ev),
  NSPAIR(_ZN8S20031C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20031C2;
extern VTBL_ENTRY _ZTI8S20031C2[];
extern  VTBL_ENTRY _ZTV8S20031C2[];
static Base_Class bases_S20031C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20031C2,    ABISELECT(208,156), //bcp->offset
    4, //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 _ZTI8S20031C1[];
extern void _ZN8S20031C12v1Ev();
extern void _ZN8S20031C22v2Ev();
static  VTBL_ENTRY vtc_S20031C1[] = {
  ABISELECT(208,156),
  0,
  (VTBL_ENTRY)&(_ZTI8S20031C1[0]),
  (VTBL_ENTRY)&_ZN8S20031C12v1Ev,
  0,
  ABISELECT(-208,-156),
  (VTBL_ENTRY)&(_ZTI8S20031C1[0]),
  (VTBL_ENTRY)&_ZN8S20031C22v2Ev,
};
extern VTBL_ENTRY _ZTV8S20031C1[];
static  VTT_ENTRY vtt_S20031C1[] = {
  {&(_ZTV8S20031C1[3]),  3,8},
  {&(_ZTV8S20031C1[7]),  7,8},
};
extern VTBL_ENTRY _ZTI8S20031C1[];
extern  VTBL_ENTRY _ZTV8S20031C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20031C1[];
Class_Descriptor cd_S20031C1 = {  "S20031C1", // class name
  bases_S20031C1, 1,
  &(vtc_S20031C1[0]), // expected_vtbl_contents
  &(vtt_S20031C1[0]), // expected_vtt_contents
  ABISELECT(304,240), // object size
  NSPAIRA(_ZTI8S20031C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20031C1),8, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20031C1),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  S15765C5  {
  ::S10296C46_nt s15765c5f0;
  ::S10296C46_nt s15765c5f1;
  int s15765c5f2;
};
//SIG(-1 S15765C5) C1{ FC2{ m FC3{ m FL}} FC2 Fi}



static void Test_S15765C5()
{
  {
    init_simple_test("S15765C5");
    S15765C5 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S15765C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15765C5)");
    check_field_offset(lv, s15765c5f0, 0, "S15765C5.s15765c5f0");
    check_field_offset(lv, s15765c5f1, 8, "S15765C5.s15765c5f1");
    check_field_offset(lv, s15765c5f2, 16, "S15765C5.s15765c5f2");
  }
}
static Arrange_To_Call_Me vS15765C5(Test_S15765C5, "S15765C5", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15765C1  {
  ::S10296C45_nt s15765c1f0;
  ::S10296C46_nt s15765c1f1[4];
  ::S15765C5 s15765c1f2[4];
  ::S10296C46_nt s15765c1f3;
  ::S15765C5 s15765c1f4;
  ::S15765C5 s15765c1f5;
  ::S10296C46_nt s15765c1f6;
  ::S10296C46_nt s15765c1f7;
  char s15765c1f8;
  ::S10296C46_nt s15765c1f9;
  void  mf15765c1(); // _ZN8S15765C19mf15765c1Ev
};
//SIG(1 S15765C1) C1{ m FC2{ m FC3{ m FC4{ m FL}} FC3} FC3[4] FC5{ FC3 FC3 Fi}[4] FC3 FC5 FC5 FC3 FC3 Fc FC3}


void  S15765C1 ::mf15765c1(){}

static void Test_S15765C1()
{
  {
    init_simple_test("S15765C1");
    S15765C1 lv;
    check2(sizeof(lv), ABISELECT(232,204), "sizeof(S15765C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15765C1)");
    check_field_offset(lv, s15765c1f0, 0, "S15765C1.s15765c1f0");
    check_field_offset(lv, s15765c1f1, 16, "S15765C1.s15765c1f1");
    check_field_offset(lv, s15765c1f2, 48, "S15765C1.s15765c1f2");
    check_field_offset(lv, s15765c1f3, ABISELECT(144,128), "S15765C1.s15765c1f3");
    check_field_offset(lv, s15765c1f4, ABISELECT(152,136), "S15765C1.s15765c1f4");
    check_field_offset(lv, s15765c1f5, ABISELECT(176,156), "S15765C1.s15765c1f5");
    check_field_offset(lv, s15765c1f6, ABISELECT(200,176), "S15765C1.s15765c1f6");
    check_field_offset(lv, s15765c1f7, ABISELECT(208,184), "S15765C1.s15765c1f7");
    check_field_offset(lv, s15765c1f8, ABISELECT(216,192), "S15765C1.s15765c1f8");
    check_field_offset(lv, s15765c1f9, ABISELECT(224,196), "S15765C1.s15765c1f9");
  }
}
static Arrange_To_Call_Me vS15765C1(Test_S15765C1, "S15765C1", ABISELECT(232,204));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S4757C3  {
  ::S9624C14_nt s4757c3f0;
  int s4757c3f1[2];
  char s4757c3f2;
  virtual  ~S4757C3(); // _ZN7S4757C3D1Ev
  virtual void  v3(); // _ZN7S4757C32v3Ev
  virtual void  v4(); // _ZN7S4757C32v4Ev
  virtual void  v5(); // _ZN7S4757C32v5Ev
  S4757C3(); // tgen
};
//SIG(-1 S4757C3) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S4757C3 ::~S4757C3(){ note_dtor("S4757C3", this);}
void  S4757C3 ::v3(){vfunc_called(this, "_ZN7S4757C32v3Ev");}
void  S4757C3 ::v4(){vfunc_called(this, "_ZN7S4757C32v4Ev");}
void  S4757C3 ::v5(){vfunc_called(this, "_ZN7S4757C32v5Ev");}
S4757C3 ::S4757C3(){ note_ctor("S4757C3", this);} // tgen

static void Test_S4757C3()
{
  extern Class_Descriptor cd_S4757C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S4757C3, buf);
    S4757C3 *dp, &lv = *(dp=new (buf) S4757C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S4757C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4757C3)");
    check_field_offset(lv, s4757c3f0, ABISELECT(8,4), "S4757C3.s4757c3f0");
    check_field_offset(lv, s4757c3f1, ABISELECT(24,16), "S4757C3.s4757c3f1");
    check_field_offset(lv, s4757c3f2, ABISELECT(32,24), "S4757C3.s4757c3f2");
    test_class_info(&lv, &cd_S4757C3);
    dp->~S4757C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4757C3(Test_S4757C3, "S4757C3", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S4757C3C1Ev();
extern void _ZN7S4757C3D1Ev();
Name_Map name_map_S4757C3[] = {
  NSPAIR(_ZN7S4757C3C1Ev),
  NSPAIR(_ZN7S4757C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S4757C3[];
extern void _ZN7S4757C3D1Ev();
extern void _ZN7S4757C3D0Ev();
extern void _ZN7S4757C32v3Ev();
extern void _ZN7S4757C32v4Ev();
extern void _ZN7S4757C32v5Ev();
static  VTBL_ENTRY vtc_S4757C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4757C3[0]),
  (VTBL_ENTRY)&_ZN7S4757C3D1Ev,
  (VTBL_ENTRY)&_ZN7S4757C3D0Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v5Ev,
};
extern VTBL_ENTRY _ZTI7S4757C3[];
extern  VTBL_ENTRY _ZTV7S4757C3[];
Class_Descriptor cd_S4757C3 = {  "S4757C3", // class name
  0,0,//no base classes
  &(vtc_S4757C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S4757C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S4757C3),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  S4757C2  : S4757C3 {
  void *s4757c2f0;
  virtual void  v6(); // _ZN7S4757C22v6Ev
  virtual void  v7(); // _ZN7S4757C22v7Ev
  ~S4757C2(); // tgen
  S4757C2(); // tgen
};
//SIG(-1 S4757C2) C1{ BC2{ vd v3 v4 v5 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} v1 v2 Fp}


void  S4757C2 ::v6(){vfunc_called(this, "_ZN7S4757C22v6Ev");}
void  S4757C2 ::v7(){vfunc_called(this, "_ZN7S4757C22v7Ev");}
S4757C2 ::~S4757C2(){ note_dtor("S4757C2", this);} // tgen
S4757C2 ::S4757C2(){ note_ctor("S4757C2", this);} // tgen

static void Test_S4757C2()
{
  extern Class_Descriptor cd_S4757C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,9)];
    init_test(&cd_S4757C2, buf);
    S4757C2 *dp, &lv = *(dp=new (buf) S4757C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S4757C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4757C2)");
    check_base_class_offset(lv, (S4757C3*), 0, "S4757C2");
    check_field_offset(lv, s4757c2f0, ABISELECT(40,28), "S4757C2.s4757c2f0");
    test_class_info(&lv, &cd_S4757C2);
    dp->~S4757C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4757C2(Test_S4757C2, "S4757C2", ABISELECT(48,32));

#else // __cplusplus

extern void _ZN7S4757C2C1Ev();
extern void _ZN7S4757C2D1Ev();
Name_Map name_map_S4757C2[] = {
  NSPAIR(_ZN7S4757C2C1Ev),
  NSPAIR(_ZN7S4757C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4757C3;
extern VTBL_ENTRY _ZTI7S4757C3[];
extern  VTBL_ENTRY _ZTV7S4757C3[];
static Base_Class bases_S4757C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4757C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S4757C2[];
extern void _ZN7S4757C2D1Ev();
extern void _ZN7S4757C2D0Ev();
extern void _ZN7S4757C32v3Ev();
extern void _ZN7S4757C32v4Ev();
extern void _ZN7S4757C32v5Ev();
extern void _ZN7S4757C22v6Ev();
extern void _ZN7S4757C22v7Ev();
static  VTBL_ENTRY vtc_S4757C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4757C2[0]),
  (VTBL_ENTRY)&_ZN7S4757C2D1Ev,
  (VTBL_ENTRY)&_ZN7S4757C2D0Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4757C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4757C22v7Ev,
};
extern VTBL_ENTRY _ZTI7S4757C2[];
extern  VTBL_ENTRY _ZTV7S4757C2[];
Class_Descriptor cd_S4757C2 = {  "S4757C2", // class name
  bases_S4757C2, 1,
  &(vtc_S4757C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,32), // object size
  NSPAIRA(_ZTI7S4757C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4757C2),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  S4757C1  : S4757C2 {
  ::S9624C14_nt s4757c1f0;
  void *s4757c1f1[2];
  int s4757c1f2;
  virtual  ~S4757C1(); // _ZN7S4757C1D1Ev
  virtual void  v1(); // _ZN7S4757C12v1Ev
  virtual void  v2(); // _ZN7S4757C12v2Ev
  S4757C1(); // tgen
};
//SIG(1 S4757C1) C1{ BC2{ BC3{ vd v3 v4 v5 FC4{ m Fp Fi FC5{ m}} Fi[2] Fc} v6 v7 Fp} vd v1 v2 FC4 Fp[2] Fi}


 S4757C1 ::~S4757C1(){ note_dtor("S4757C1", this);}
void  S4757C1 ::v1(){vfunc_called(this, "_ZN7S4757C12v1Ev");}
void  S4757C1 ::v2(){vfunc_called(this, "_ZN7S4757C12v2Ev");}
S4757C1 ::S4757C1(){ note_ctor("S4757C1", this);} // tgen

static void Test_S4757C1()
{
  extern Class_Descriptor cd_S4757C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(12,15)];
    init_test(&cd_S4757C1, buf);
    S4757C1 *dp, &lv = *(dp=new (buf) S4757C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(88,56), "sizeof(S4757C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S4757C1)");
    check_base_class_offset(lv, (S4757C3*)(S4757C2*), 0, "S4757C1");
    check_base_class_offset(lv, (S4757C2*), 0, "S4757C1");
    check_field_offset(lv, s4757c1f0, ABISELECT(48,32), "S4757C1.s4757c1f0");
    check_field_offset(lv, s4757c1f1, ABISELECT(64,44), "S4757C1.s4757c1f1");
    check_field_offset(lv, s4757c1f2, ABISELECT(80,52), "S4757C1.s4757c1f2");
    test_class_info(&lv, &cd_S4757C1);
    dp->~S4757C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS4757C1(Test_S4757C1, "S4757C1", ABISELECT(88,56));

#else // __cplusplus

extern void _ZN7S4757C1C1Ev();
extern void _ZN7S4757C1D1Ev();
Name_Map name_map_S4757C1[] = {
  NSPAIR(_ZN7S4757C1C1Ev),
  NSPAIR(_ZN7S4757C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S4757C3;
extern VTBL_ENTRY _ZTI7S4757C3[];
extern  VTBL_ENTRY _ZTV7S4757C3[];
extern Class_Descriptor cd_S4757C2;
extern VTBL_ENTRY _ZTI7S4757C2[];
extern  VTBL_ENTRY _ZTV7S4757C2[];
static Base_Class bases_S4757C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S4757C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S4757C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S4757C1[];
extern void _ZN7S4757C1D1Ev();
extern void _ZN7S4757C1D0Ev();
extern void _ZN7S4757C32v3Ev();
extern void _ZN7S4757C32v4Ev();
extern void _ZN7S4757C32v5Ev();
extern void _ZN7S4757C22v6Ev();
extern void _ZN7S4757C22v7Ev();
extern void _ZN7S4757C12v1Ev();
extern void _ZN7S4757C12v2Ev();
static  VTBL_ENTRY vtc_S4757C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S4757C1[0]),
  (VTBL_ENTRY)&_ZN7S4757C1D1Ev,
  (VTBL_ENTRY)&_ZN7S4757C1D0Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v3Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v4Ev,
  (VTBL_ENTRY)&_ZN7S4757C32v5Ev,
  (VTBL_ENTRY)&_ZN7S4757C22v6Ev,
  (VTBL_ENTRY)&_ZN7S4757C22v7Ev,
  (VTBL_ENTRY)&_ZN7S4757C12v1Ev,
  (VTBL_ENTRY)&_ZN7S4757C12v2Ev,
};
extern VTBL_ENTRY _ZTI7S4757C1[];
extern  VTBL_ENTRY _ZTV7S4757C1[];
Class_Descriptor cd_S4757C1 = {  "S4757C1", // class name
  bases_S4757C1, 2,
  &(vtc_S4757C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(88,56), // object size
  NSPAIRA(_ZTI7S4757C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S4757C1),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5151C3  {
  void *s5151c3f0[5];
  virtual  ~S5151C3(); // _ZN7S5151C3D1Ev
  virtual void  v4(); // _ZN7S5151C32v4Ev
  virtual void  v5(); // _ZN7S5151C32v5Ev
  virtual void  v6(); // _ZN7S5151C32v6Ev
  virtual void  v7(); // _ZN7S5151C32v7Ev
  virtual void  v8(); // _ZN7S5151C32v8Ev
  virtual void  v9(); // _ZN7S5151C32v9Ev
  virtual void  v10(); // _ZN7S5151C33v10Ev
  virtual void  v11(); // _ZN7S5151C33v11Ev
  virtual void  v12(); // _ZN7S5151C33v12Ev
  S5151C3(); // tgen
};
//SIG(-1 S5151C3) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[5]}


 S5151C3 ::~S5151C3(){ note_dtor("S5151C3", this);}
void  S5151C3 ::v4(){vfunc_called(this, "_ZN7S5151C32v4Ev");}
void  S5151C3 ::v5(){vfunc_called(this, "_ZN7S5151C32v5Ev");}
void  S5151C3 ::v6(){vfunc_called(this, "_ZN7S5151C32v6Ev");}
void  S5151C3 ::v7(){vfunc_called(this, "_ZN7S5151C32v7Ev");}
void  S5151C3 ::v8(){vfunc_called(this, "_ZN7S5151C32v8Ev");}
void  S5151C3 ::v9(){vfunc_called(this, "_ZN7S5151C32v9Ev");}
void  S5151C3 ::v10(){vfunc_called(this, "_ZN7S5151C33v10Ev");}
void  S5151C3 ::v11(){vfunc_called(this, "_ZN7S5151C33v11Ev");}
void  S5151C3 ::v12(){vfunc_called(this, "_ZN7S5151C33v12Ev");}
S5151C3 ::S5151C3(){ note_ctor("S5151C3", this);} // tgen

static void Test_S5151C3()
{
  extern Class_Descriptor cd_S5151C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S5151C3, buf);
    S5151C3 *dp, &lv = *(dp=new (buf) S5151C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S5151C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5151C3)");
    check_field_offset(lv, s5151c3f0, ABISELECT(8,4), "S5151C3.s5151c3f0");
    test_class_info(&lv, &cd_S5151C3);
    dp->~S5151C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5151C3(Test_S5151C3, "S5151C3", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S5151C3C1Ev();
extern void _ZN7S5151C3D1Ev();
Name_Map name_map_S5151C3[] = {
  NSPAIR(_ZN7S5151C3C1Ev),
  NSPAIR(_ZN7S5151C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5151C3[];
extern void _ZN7S5151C3D1Ev();
extern void _ZN7S5151C3D0Ev();
extern void _ZN7S5151C32v4Ev();
extern void _ZN7S5151C32v5Ev();
extern void _ZN7S5151C32v6Ev();
extern void _ZN7S5151C32v7Ev();
extern void _ZN7S5151C32v8Ev();
extern void _ZN7S5151C32v9Ev();
extern void _ZN7S5151C33v10Ev();
extern void _ZN7S5151C33v11Ev();
extern void _ZN7S5151C33v12Ev();
static  VTBL_ENTRY vtc_S5151C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5151C3[0]),
  (VTBL_ENTRY)&_ZN7S5151C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5151C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v12Ev,
};
extern VTBL_ENTRY _ZTI7S5151C3[];
extern  VTBL_ENTRY _ZTV7S5151C3[];
Class_Descriptor cd_S5151C3 = {  "S5151C3", // class name
  0,0,//no base classes
  &(vtc_S5151C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S5151C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5151C3),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5151C2  : S5151C3 {
  virtual  ~S5151C2(); // _ZN7S5151C2D1Ev
  virtual void  v13(); // _ZN7S5151C23v13Ev
  virtual void  v14(); // _ZN7S5151C23v14Ev
  virtual void  v15(); // _ZN7S5151C23v15Ev
  virtual void  v16(); // _ZN7S5151C23v16Ev
  S5151C2(); // tgen
};
//SIG(-1 S5151C2) C1{ BC2{ vd v5 v6 v7 v8 v9 v10 v11 v12 v13 Fp[5]} vd v1 v2 v3 v4}


 S5151C2 ::~S5151C2(){ note_dtor("S5151C2", this);}
void  S5151C2 ::v13(){vfunc_called(this, "_ZN7S5151C23v13Ev");}
void  S5151C2 ::v14(){vfunc_called(this, "_ZN7S5151C23v14Ev");}
void  S5151C2 ::v15(){vfunc_called(this, "_ZN7S5151C23v15Ev");}
void  S5151C2 ::v16(){vfunc_called(this, "_ZN7S5151C23v16Ev");}
S5151C2 ::S5151C2(){ note_ctor("S5151C2", this);} // tgen

static void Test_S5151C2()
{
  extern Class_Descriptor cd_S5151C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S5151C2, buf);
    S5151C2 *dp, &lv = *(dp=new (buf) S5151C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S5151C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5151C2)");
    check_base_class_offset(lv, (S5151C3*), 0, "S5151C2");
    test_class_info(&lv, &cd_S5151C2);
    dp->~S5151C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5151C2(Test_S5151C2, "S5151C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S5151C2C1Ev();
extern void _ZN7S5151C2D1Ev();
Name_Map name_map_S5151C2[] = {
  NSPAIR(_ZN7S5151C2C1Ev),
  NSPAIR(_ZN7S5151C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5151C3;
extern VTBL_ENTRY _ZTI7S5151C3[];
extern  VTBL_ENTRY _ZTV7S5151C3[];
static Base_Class bases_S5151C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5151C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5151C2[];
extern void _ZN7S5151C2D1Ev();
extern void _ZN7S5151C2D0Ev();
extern void _ZN7S5151C32v4Ev();
extern void _ZN7S5151C32v5Ev();
extern void _ZN7S5151C32v6Ev();
extern void _ZN7S5151C32v7Ev();
extern void _ZN7S5151C32v8Ev();
extern void _ZN7S5151C32v9Ev();
extern void _ZN7S5151C33v10Ev();
extern void _ZN7S5151C33v11Ev();
extern void _ZN7S5151C33v12Ev();
extern void _ZN7S5151C23v13Ev();
extern void _ZN7S5151C23v14Ev();
extern void _ZN7S5151C23v15Ev();
extern void _ZN7S5151C23v16Ev();
static  VTBL_ENTRY vtc_S5151C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5151C2[0]),
  (VTBL_ENTRY)&_ZN7S5151C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5151C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v16Ev,
};
extern VTBL_ENTRY _ZTI7S5151C2[];
extern  VTBL_ENTRY _ZTV7S5151C2[];
Class_Descriptor cd_S5151C2 = {  "S5151C2", // class name
  bases_S5151C2, 1,
  &(vtc_S5151C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S5151C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5151C2),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  S5151C1  : S5151C2 {
  virtual  ~S5151C1(); // _ZN7S5151C1D1Ev
  virtual void  v1(); // _ZN7S5151C12v1Ev
  virtual void  v2(); // _ZN7S5151C12v2Ev
  virtual void  v3(); // _ZN7S5151C12v3Ev
  S5151C1(); // tgen
};
//SIG(1 S5151C1) C1{ BC2{ BC3{ vd v4 v5 v6 v7 v8 v9 v10 v11 v12 Fp[5]} vd v13 v14 v15 v16} vd v1 v2 v3}


 S5151C1 ::~S5151C1(){ note_dtor("S5151C1", this);}
void  S5151C1 ::v1(){vfunc_called(this, "_ZN7S5151C12v1Ev");}
void  S5151C1 ::v2(){vfunc_called(this, "_ZN7S5151C12v2Ev");}
void  S5151C1 ::v3(){vfunc_called(this, "_ZN7S5151C12v3Ev");}
S5151C1 ::S5151C1(){ note_ctor("S5151C1", this);} // tgen

static void Test_S5151C1()
{
  extern Class_Descriptor cd_S5151C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S5151C1, buf);
    S5151C1 *dp, &lv = *(dp=new (buf) S5151C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S5151C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5151C1)");
    check_base_class_offset(lv, (S5151C3*)(S5151C2*), 0, "S5151C1");
    check_base_class_offset(lv, (S5151C2*), 0, "S5151C1");
    test_class_info(&lv, &cd_S5151C1);
    dp->~S5151C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5151C1(Test_S5151C1, "S5151C1", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN7S5151C1C1Ev();
extern void _ZN7S5151C1D1Ev();
Name_Map name_map_S5151C1[] = {
  NSPAIR(_ZN7S5151C1C1Ev),
  NSPAIR(_ZN7S5151C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5151C3;
extern VTBL_ENTRY _ZTI7S5151C3[];
extern  VTBL_ENTRY _ZTV7S5151C3[];
extern Class_Descriptor cd_S5151C2;
extern VTBL_ENTRY _ZTI7S5151C2[];
extern  VTBL_ENTRY _ZTV7S5151C2[];
static Base_Class bases_S5151C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5151C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5151C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S5151C1[];
extern void _ZN7S5151C1D1Ev();
extern void _ZN7S5151C1D0Ev();
extern void _ZN7S5151C32v4Ev();
extern void _ZN7S5151C32v5Ev();
extern void _ZN7S5151C32v6Ev();
extern void _ZN7S5151C32v7Ev();
extern void _ZN7S5151C32v8Ev();
extern void _ZN7S5151C32v9Ev();
extern void _ZN7S5151C33v10Ev();
extern void _ZN7S5151C33v11Ev();
extern void _ZN7S5151C33v12Ev();
extern void _ZN7S5151C23v13Ev();
extern void _ZN7S5151C23v14Ev();
extern void _ZN7S5151C23v15Ev();
extern void _ZN7S5151C23v16Ev();
extern void _ZN7S5151C12v1Ev();
extern void _ZN7S5151C12v2Ev();
extern void _ZN7S5151C12v3Ev();
static  VTBL_ENTRY vtc_S5151C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5151C1[0]),
  (VTBL_ENTRY)&_ZN7S5151C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5151C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v4Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v5Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v6Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v7Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5151C32v9Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v10Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v11Ev,
  (VTBL_ENTRY)&_ZN7S5151C33v12Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5151C23v16Ev,
  (VTBL_ENTRY)&_ZN7S5151C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5151C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5151C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S5151C1[];
extern  VTBL_ENTRY _ZTV7S5151C1[];
Class_Descriptor cd_S5151C1 = {  "S5151C1", // class name
  bases_S5151C1, 2,
  &(vtc_S5151C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI7S5151C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5151C1),20, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20833C3  {
  long double s20833c3f0;
  virtual void  v3(); // _ZN8S20833C32v3Ev
  virtual void  v4(); // _ZN8S20833C32v4Ev
  virtual void  v5(); // _ZN8S20833C32v5Ev
  ~S20833C3(); // tgen
  S20833C3(); // tgen
};
//SIG(-1 S20833C3) C1{ v1 v2 v3 FD}


void  S20833C3 ::v3(){vfunc_called(this, "_ZN8S20833C32v3Ev");}
void  S20833C3 ::v4(){vfunc_called(this, "_ZN8S20833C32v4Ev");}
void  S20833C3 ::v5(){vfunc_called(this, "_ZN8S20833C32v5Ev");}
S20833C3 ::~S20833C3(){ note_dtor("S20833C3", this);} // tgen
S20833C3 ::S20833C3(){ note_ctor("S20833C3", this);} // tgen

static void Test_S20833C3()
{
  extern Class_Descriptor cd_S20833C3;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20833C3, buf);
    S20833C3 *dp, &lv = *(dp=new (buf) S20833C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20833C3)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20833C3)");
    check_field_offset(lv, s20833c3f0, ABISELECT(16,4), "S20833C3.s20833c3f0");
    test_class_info(&lv, &cd_S20833C3);
    dp->~S20833C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20833C3(Test_S20833C3, "S20833C3", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20833C3C1Ev();
extern void _ZN8S20833C3D1Ev();
Name_Map name_map_S20833C3[] = {
  NSPAIR(_ZN8S20833C3C1Ev),
  NSPAIR(_ZN8S20833C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20833C3[];
extern void _ZN8S20833C32v3Ev();
extern void _ZN8S20833C32v4Ev();
extern void _ZN8S20833C32v5Ev();
static  VTBL_ENTRY vtc_S20833C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20833C3[0]),
  (VTBL_ENTRY)&_ZN8S20833C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v5Ev,
};
extern VTBL_ENTRY _ZTI8S20833C3[];
extern  VTBL_ENTRY _ZTV8S20833C3[];
Class_Descriptor cd_S20833C3 = {  "S20833C3", // class name
  0,0,//no base classes
  &(vtc_S20833C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20833C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20833C3),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  S20833C2  : virtual S20833C3 {
  virtual  ~S20833C2(); // _ZN8S20833C2D2Ev
  virtual void  v6(); // _ZN8S20833C22v6Ev
  virtual void  v7(); // _ZN8S20833C22v7Ev
  virtual void  v8(); // _ZN8S20833C22v8Ev
  virtual void  v9(); // _ZN8S20833C22v9Ev
  virtual void  v10(); // _ZN8S20833C23v10Ev
  S20833C2(); // tgen
};
//SIG(-1 S20833C2) C1{ VBC2{ v6 v7 v8 FD} vd v1 v2 v3 v4 v5}


 S20833C2 ::~S20833C2(){ note_dtor("S20833C2", this);}
void  S20833C2 ::v6(){vfunc_called(this, "_ZN8S20833C22v6Ev");}
void  S20833C2 ::v7(){vfunc_called(this, "_ZN8S20833C22v7Ev");}
void  S20833C2 ::v8(){vfunc_called(this, "_ZN8S20833C22v8Ev");}
void  S20833C2 ::v9(){vfunc_called(this, "_ZN8S20833C22v9Ev");}
void  S20833C2 ::v10(){vfunc_called(this, "_ZN8S20833C23v10Ev");}
S20833C2 ::S20833C2(){ note_ctor("S20833C2", this);} // tgen

static void Test_S20833C2()
{
  extern Class_Descriptor cd_S20833C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20833C2, buf);
    S20833C2 *dp, &lv = *(dp=new (buf) S20833C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20833C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20833C2)");
    check_base_class_offset(lv, (S20833C3*), ABISELECT(16,4), "S20833C2");
    test_class_info(&lv, &cd_S20833C2);
    dp->~S20833C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20833C2(Test_S20833C2, "S20833C2", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20833C2C1Ev();
extern void _ZN8S20833C2D2Ev();
Name_Map name_map_S20833C2[] = {
  NSPAIR(_ZN8S20833C2C1Ev),
  NSPAIR(_ZN8S20833C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20833C3;
extern VTBL_ENTRY _ZTI8S20833C3[];
extern  VTBL_ENTRY _ZTV8S20833C3[];
static Base_Class bases_S20833C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20833C3,    ABISELECT(16,4), //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 _ZTI8S20833C2[];
extern void _ZN8S20833C2D1Ev();
extern void _ZN8S20833C2D0Ev();
extern void _ZN8S20833C22v6Ev();
extern void _ZN8S20833C22v7Ev();
extern void _ZN8S20833C22v8Ev();
extern void _ZN8S20833C22v9Ev();
extern void _ZN8S20833C23v10Ev();
extern void _ZN8S20833C32v3Ev();
extern void _ZN8S20833C32v4Ev();
extern void _ZN8S20833C32v5Ev();
static  VTBL_ENTRY vtc_S20833C2[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20833C2[0]),
  (VTBL_ENTRY)&_ZN8S20833C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20833C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20833C23v10Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20833C2[0]),
  (VTBL_ENTRY)&_ZN8S20833C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v5Ev,
};
extern VTBL_ENTRY _ZTV8S20833C2[];
static  VTT_ENTRY vtt_S20833C2[] = {
  {&(_ZTV8S20833C2[3]),  3,18},
  {&(_ZTV8S20833C2[15]),  15,18},
};
extern VTBL_ENTRY _ZTI8S20833C2[];
extern  VTBL_ENTRY _ZTV8S20833C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20833C2[];
Class_Descriptor cd_S20833C2 = {  "S20833C2", // class name
  bases_S20833C2, 1,
  &(vtc_S20833C2[0]), // expected_vtbl_contents
  &(vtt_S20833C2[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20833C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20833C2),18, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20833C2),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  S20833C4_nt  {
  void *s20833c4f0[2];
  virtual void  v11(); // _ZN11S20833C4_nt3v11Ev
  virtual void  v12(); // _ZN11S20833C4_nt3v12Ev
  virtual void  v13(); // _ZN11S20833C4_nt3v13Ev
  virtual void  v14(); // _ZN11S20833C4_nt3v14Ev
  ~S20833C4_nt(); // tgen
  S20833C4_nt(); // tgen
};
//SIG(-1 S20833C4_nt) C1{ v1 v2 v3 v4 Fp[2]}


void  S20833C4_nt ::v11(){vfunc_called(this, "_ZN11S20833C4_nt3v11Ev");}
void  S20833C4_nt ::v12(){vfunc_called(this, "_ZN11S20833C4_nt3v12Ev");}
void  S20833C4_nt ::v13(){vfunc_called(this, "_ZN11S20833C4_nt3v13Ev");}
void  S20833C4_nt ::v14(){vfunc_called(this, "_ZN11S20833C4_nt3v14Ev");}
S20833C4_nt ::~S20833C4_nt(){ note_dtor("S20833C4_nt", this);} // tgen
S20833C4_nt ::S20833C4_nt(){ note_ctor("S20833C4_nt", this);} // tgen

//skip512 S20833C4_nt

#else // __cplusplus

extern void _ZN11S20833C4_ntC1Ev();
extern void _ZN11S20833C4_ntD1Ev();
Name_Map name_map_S20833C4_nt[] = {
  NSPAIR(_ZN11S20833C4_ntC1Ev),
  NSPAIR(_ZN11S20833C4_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S20833C4_nt[];
extern void _ZN11S20833C4_nt3v11Ev();
extern void _ZN11S20833C4_nt3v12Ev();
extern void _ZN11S20833C4_nt3v13Ev();
extern void _ZN11S20833C4_nt3v14Ev();
static  VTBL_ENTRY vtc_S20833C4_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S20833C4_nt[0]),
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S20833C4_nt[];
VTBL_ENTRY *P__ZTI11S20833C4_nt = _ZTI11S20833C4_nt; 
extern  VTBL_ENTRY _ZTV11S20833C4_nt[];
Class_Descriptor cd_S20833C4_nt = {  "S20833C4_nt", // class name
  0,0,//no base classes
  &(vtc_S20833C4_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI11S20833C4_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S20833C4_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  S20833C1  : virtual S20833C2 , virtual S20833C4_nt {
  virtual  ~S20833C1(); // _ZN8S20833C1D2Ev
  virtual void  v1(); // _ZN8S20833C12v1Ev
  virtual void  v2(); // _ZN8S20833C12v2Ev
  S20833C1(); // tgen
};
//SIG(1 S20833C1) C1{ VBC2{ VBC3{ v3 v4 v5 FD} vd v6 v7 v8 v9 v10} VBC4{ v11 v12 v13 v14 Fp[2]} vd v1 v2}


 S20833C1 ::~S20833C1(){ note_dtor("S20833C1", this);}
void  S20833C1 ::v1(){vfunc_called(this, "_ZN8S20833C12v1Ev");}
void  S20833C1 ::v2(){vfunc_called(this, "_ZN8S20833C12v2Ev");}
S20833C1 ::S20833C1(){ note_ctor("S20833C1", this);} // tgen

static void Test_S20833C1()
{
  extern Class_Descriptor cd_S20833C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,9)];
    init_test(&cd_S20833C1, buf);
    S20833C1 *dp, &lv = *(dp=new (buf) S20833C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,32), "sizeof(S20833C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20833C1)");
    check_base_class_offset(lv, (S20833C3*)(S20833C2*), ABISELECT(16,4), "S20833C1");
    check_base_class_offset(lv, (S20833C2*), 0, "S20833C1");
    check_base_class_offset(lv, (S20833C4_nt*), ABISELECT(48,20), "S20833C1");
    test_class_info(&lv, &cd_S20833C1);
    dp->~S20833C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20833C1(Test_S20833C1, "S20833C1", ABISELECT(80,32));

#else // __cplusplus

extern void _ZN8S20833C1C1Ev();
extern void _ZN8S20833C1D2Ev();
Name_Map name_map_S20833C1[] = {
  NSPAIR(_ZN8S20833C1C1Ev),
  NSPAIR(_ZN8S20833C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20833C3;
extern VTBL_ENTRY _ZTI8S20833C3[];
extern  VTBL_ENTRY _ZTV8S20833C3[];
extern Class_Descriptor cd_S20833C2;
extern VTBL_ENTRY _ZTI8S20833C2[];
extern  VTBL_ENTRY _ZTV8S20833C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20833C2[];
extern Class_Descriptor cd_S20833C4_nt;
extern VTBL_ENTRY _ZTI11S20833C4_nt[];
extern  VTBL_ENTRY _ZTV11S20833C4_nt[];
static Base_Class bases_S20833C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20833C3,    ABISELECT(16,4), //bcp->offset
    20, //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_S20833C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    9, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20833C4_nt,    ABISELECT(48,20), //bcp->offset
    28, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20833C1[];
extern void _ZN8S20833C1D1Ev();
extern void _ZN8S20833C1D0Ev();
extern void _ZN8S20833C22v6Ev();
extern void _ZN8S20833C22v7Ev();
extern void _ZN8S20833C22v8Ev();
extern void _ZN8S20833C22v9Ev();
extern void _ZN8S20833C23v10Ev();
extern void _ZN8S20833C12v1Ev();
extern void _ZN8S20833C12v2Ev();
extern void _ZN8S20833C32v3Ev();
extern void _ZN8S20833C32v4Ev();
extern void _ZN8S20833C32v5Ev();
extern void _ZN11S20833C4_nt3v11Ev();
extern void _ZN11S20833C4_nt3v12Ev();
extern void _ZN11S20833C4_nt3v13Ev();
extern void _ZN11S20833C4_nt3v14Ev();
static  VTBL_ENTRY vtc_S20833C1[] = {
  ABISELECT(48,20),
  0,
  0,
  0,
  0,
  0,
  0,
  0,
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20833C1[0]),
  (VTBL_ENTRY)&_ZN8S20833C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20833C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20833C23v10Ev,
  (VTBL_ENTRY)&_ZN8S20833C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20833C12v2Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20833C1[0]),
  (VTBL_ENTRY)&_ZN8S20833C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v5Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-48,-20),
  (VTBL_ENTRY)&(_ZTI8S20833C1[0]),
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S20833C4_nt3v14Ev,
};
extern VTBL_ENTRY _ZTV8S20833C1[];
extern void _ZN8S20833C2D1Ev();
extern void _ZN8S20833C2D0Ev();
extern void _ZN8S20833C22v6Ev();
extern void _ZN8S20833C22v7Ev();
extern void _ZN8S20833C22v8Ev();
extern void _ZN8S20833C22v9Ev();
extern void _ZN8S20833C23v10Ev();
static  VTBL_ENTRY _tg__ZTV8S20833C2__8S20833C1[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20833C2[0]),
  (VTBL_ENTRY)&_ZN8S20833C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20833C2D0Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v7Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v8Ev,
  (VTBL_ENTRY)&_ZN8S20833C22v9Ev,
  (VTBL_ENTRY)&_ZN8S20833C23v10Ev,
};
extern void _ZN8S20833C32v3Ev();
extern void _ZN8S20833C32v4Ev();
extern void _ZN8S20833C32v5Ev();
static  VTBL_ENTRY _tg__ZTV8S20833C3__8S20833C2__8S20833C1[] = {
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20833C2[0]),
  (VTBL_ENTRY)&_ZN8S20833C32v3Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20833C32v5Ev,
};
static  VTT_ENTRY vtt_S20833C1[] = {
  {&(_ZTV8S20833C1[11]),  11,38},
  {&(_ZTV8S20833C1[11]),  11,38},
  {&(_ZTV8S20833C1[25]),  25,38},
  {&(_ZTV8S20833C1[34]),  34,38},
  {&(_tg__ZTV8S20833C2__8S20833C1[3]),  3,10},
  {&(_tg__ZTV8S20833C3__8S20833C2__8S20833C1[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S20833C1[];
extern  VTBL_ENTRY _ZTV8S20833C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20833C1[];
Class_Descriptor cd_S20833C1 = {  "S20833C1", // class name
  bases_S20833C1, 3,
  &(vtc_S20833C1[0]), // expected_vtbl_contents
  &(vtt_S20833C1[0]), // expected_vtt_contents
  ABISELECT(80,32), // object size
  NSPAIRA(_ZTI8S20833C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20833C1),38, //virtual function table var
  11, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20833C1),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  S18795C4  {
  virtual void  v9(); // _ZN8S18795C42v9Ev
  ~S18795C4(); // tgen
  S18795C4(); // tgen
};
//SIG(-1 S18795C4) C1{ v1}


void  S18795C4 ::v9(){vfunc_called(this, "_ZN8S18795C42v9Ev");}
S18795C4 ::~S18795C4(){ note_dtor("S18795C4", this);} // tgen
S18795C4 ::S18795C4(){ note_ctor("S18795C4", this);} // tgen

static void Test_S18795C4()
{
  extern Class_Descriptor cd_S18795C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18795C4, buf);
    S18795C4 *dp, &lv = *(dp=new (buf) S18795C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18795C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18795C4)");
    test_class_info(&lv, &cd_S18795C4);
    dp->~S18795C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18795C4(Test_S18795C4, "S18795C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18795C4C1Ev();
extern void _ZN8S18795C4D1Ev();
Name_Map name_map_S18795C4[] = {
  NSPAIR(_ZN8S18795C4C1Ev),
  NSPAIR(_ZN8S18795C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18795C4[];
extern void _ZN8S18795C42v9Ev();
static  VTBL_ENTRY vtc_S18795C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C4[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
};
extern VTBL_ENTRY _ZTI8S18795C4[];
extern  VTBL_ENTRY _ZTV8S18795C4[];
Class_Descriptor cd_S18795C4 = {  "S18795C4", // class name
  0,0,//no base classes
  &(vtc_S18795C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18795C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18795C4),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  S18795C3  : virtual S18795C4 {
  virtual void  v10(); // _ZN8S18795C33v10Ev
  ~S18795C3(); // tgen
  S18795C3(); // tgen
};
//SIG(-1 S18795C3) C1{ VBC2{ v2} v1}


void  S18795C3 ::v10(){vfunc_called(this, "_ZN8S18795C33v10Ev");}
S18795C3 ::~S18795C3(){ note_dtor("S18795C3", this);} // tgen
S18795C3 ::S18795C3(){ note_ctor("S18795C3", this);} // tgen

static void Test_S18795C3()
{
  extern Class_Descriptor cd_S18795C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S18795C3, buf);
    S18795C3 *dp, &lv = *(dp=new (buf) S18795C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S18795C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18795C3)");
    check_base_class_offset(lv, (S18795C4*), 0, "S18795C3");
    test_class_info(&lv, &cd_S18795C3);
    dp->~S18795C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18795C3(Test_S18795C3, "S18795C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S18795C3C1Ev();
extern void _ZN8S18795C3D1Ev();
Name_Map name_map_S18795C3[] = {
  NSPAIR(_ZN8S18795C3C1Ev),
  NSPAIR(_ZN8S18795C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18795C4;
extern VTBL_ENTRY _ZTI8S18795C4[];
extern  VTBL_ENTRY _ZTV8S18795C4[];
static Base_Class bases_S18795C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18795C4,    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 _ZTI8S18795C3[];
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
static  VTBL_ENTRY vtc_S18795C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C3[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
};
extern VTBL_ENTRY _ZTV8S18795C3[];
static  VTT_ENTRY vtt_S18795C3[] = {
  {&(_ZTV8S18795C3[4]),  4,6},
  {&(_ZTV8S18795C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S18795C3[];
extern  VTBL_ENTRY _ZTV8S18795C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C3[];
Class_Descriptor cd_S18795C3 = {  "S18795C3", // class name
  bases_S18795C3, 1,
  &(vtc_S18795C3[0]), // expected_vtbl_contents
  &(vtt_S18795C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S18795C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18795C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18795C3),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  S18795C5  : virtual S18795C3 {
  int s18795c5f0;
  __tsi64 s18795c5f1;
  void *s18795c5f2;
  virtual void  v11(); // _ZN8S18795C53v11Ev
  virtual void  v12(); // _ZN8S18795C53v12Ev
  ~S18795C5(); // tgen
  S18795C5(); // tgen
};
//SIG(-1 S18795C5) C1{ VBC2{ VBC3{ v3} v4} v1 v2 Fi FL Fp}


void  S18795C5 ::v11(){vfunc_called(this, "_ZN8S18795C53v11Ev");}
void  S18795C5 ::v12(){vfunc_called(this, "_ZN8S18795C53v12Ev");}
S18795C5 ::~S18795C5(){ note_dtor("S18795C5", this);} // tgen
S18795C5 ::S18795C5(){ note_ctor("S18795C5", this);} // tgen

static void Test_S18795C5()
{
  extern Class_Descriptor cd_S18795C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S18795C5, buf);
    S18795C5 *dp, &lv = *(dp=new (buf) S18795C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S18795C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18795C5)");
    check_base_class_offset(lv, (S18795C4*)(S18795C3*), 0, "S18795C5");
    check_base_class_offset(lv, (S18795C3*), 0, "S18795C5");
    check_field_offset(lv, s18795c5f0, ABISELECT(8,4), "S18795C5.s18795c5f0");
    check_field_offset(lv, s18795c5f1, ABISELECT(16,8), "S18795C5.s18795c5f1");
    check_field_offset(lv, s18795c5f2, ABISELECT(24,16), "S18795C5.s18795c5f2");
    test_class_info(&lv, &cd_S18795C5);
    dp->~S18795C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18795C5(Test_S18795C5, "S18795C5", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN8S18795C5C1Ev();
extern void _ZN8S18795C5D1Ev();
Name_Map name_map_S18795C5[] = {
  NSPAIR(_ZN8S18795C5C1Ev),
  NSPAIR(_ZN8S18795C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18795C4;
extern VTBL_ENTRY _ZTI8S18795C4[];
extern  VTBL_ENTRY _ZTV8S18795C4[];
extern Class_Descriptor cd_S18795C3;
extern VTBL_ENTRY _ZTI8S18795C3[];
extern  VTBL_ENTRY _ZTV8S18795C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C3[];
static Base_Class bases_S18795C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18795C4,    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_S18795C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18795C5[];
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
extern void _ZN8S18795C53v11Ev();
extern void _ZN8S18795C53v12Ev();
static  VTBL_ENTRY vtc_S18795C5[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C5[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
  (VTBL_ENTRY)&_ZN8S18795C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18795C53v12Ev,
};
extern VTBL_ENTRY _ZTV8S18795C5[];
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S18795C3__8S18795C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C3[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
};
static  VTT_ENTRY vtt_S18795C5[] = {
  {&(_ZTV8S18795C5[6]),  6,10},
  {&(_ZTV8S18795C5[6]),  6,10},
  {&(_ZTV8S18795C5[6]),  6,10},
  {&(_tg__ZTV8S18795C3__8S18795C5[4]),  4,6},
  {&(_tg__ZTV8S18795C3__8S18795C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S18795C5[];
extern  VTBL_ENTRY _ZTV8S18795C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C5[];
Class_Descriptor cd_S18795C5 = {  "S18795C5", // class name
  bases_S18795C5, 2,
  &(vtc_S18795C5[0]), // expected_vtbl_contents
  &(vtt_S18795C5[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI8S18795C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S18795C5),10, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18795C5),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  S18795C2  : S18795C3 , virtual S18795C5 {
  virtual void  v8(); // _ZN8S18795C22v8Ev
  ~S18795C2(); // tgen
  S18795C2(); // tgen
};
//SIG(-1 S18795C2) C1{ BC2{ VBC3{ v2} v3} VBC4{ VBC2 v4 v5 Fi FL Fp} v1}


void  S18795C2 ::v8(){vfunc_called(this, "_ZN8S18795C22v8Ev");}
S18795C2 ::~S18795C2(){ note_dtor("S18795C2", this);} // tgen
S18795C2 ::S18795C2(){ note_ctor("S18795C2", this);} // tgen

static void Test_S18795C2()
{
  extern Class_Descriptor cd_S18795C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S18795C2, buf);
    S18795C2 *dp, &lv = *(dp=new (buf) S18795C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18795C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18795C2)");
    /*is_ambiguous_... S18795C2::S18795C3 */ AMB_check_base_class_offset(lv, (S18795C4*)(S18795C3*), 0, "S18795C2");
    /*is_ambiguous_... S18795C2::S18795C3 */ AMB_check_base_class_offset(lv, (S18795C4*)(S18795C3*), 0, "S18795C2");
    /*is_ambiguous_... S18795C2::S18795C3 */ AMB_check_base_class_offset(lv, (S18795C3*), 0, "S18795C2");
    check_base_class_offset(lv, (S18795C3*)(S18795C5*), ABISELECT(8,4), "S18795C2");
    check_base_class_offset(lv, (S18795C5*), ABISELECT(8,4), "S18795C2");
    test_class_info(&lv, &cd_S18795C2);
    dp->~S18795C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18795C2(Test_S18795C2, "S18795C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S18795C2C1Ev();
extern void _ZN8S18795C2D1Ev();
Name_Map name_map_S18795C2[] = {
  NSPAIR(_ZN8S18795C2C1Ev),
  NSPAIR(_ZN8S18795C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S18795C4;
extern VTBL_ENTRY _ZTI8S18795C4[];
extern  VTBL_ENTRY _ZTV8S18795C4[];
extern Class_Descriptor cd_S18795C3;
extern VTBL_ENTRY _ZTI8S18795C3[];
extern  VTBL_ENTRY _ZTV8S18795C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C3[];
extern Class_Descriptor cd_S18795C3;
extern VTBL_ENTRY _ZTI8S18795C3[];
extern  VTBL_ENTRY _ZTV8S18795C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C3[];
extern Class_Descriptor cd_S18795C5;
extern VTBL_ENTRY _ZTI8S18795C5[];
extern  VTBL_ENTRY _ZTV8S18795C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C5[];
static Base_Class bases_S18795C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S18795C4,    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_S18795C3,    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_S18795C3,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    10, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S18795C5,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    8, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S18795C2[];
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
extern void _ZN8S18795C22v8Ev();
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
extern void _ZN8S18795C53v11Ev();
extern void _ZN8S18795C53v12Ev();
static  VTBL_ENTRY vtc_S18795C2[] = {
  ABISELECT(8,4),
  ABISELECT(8,4),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C2[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
  (VTBL_ENTRY)&_ZN8S18795C22v8Ev,
  0,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S18795C2[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
  (VTBL_ENTRY)&_ZN8S18795C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18795C53v12Ev,
};
extern VTBL_ENTRY _ZTV8S18795C2[];
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S18795C3__A__8S18795C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C3[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
};
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
extern void _ZN8S18795C53v11Ev();
extern void _ZN8S18795C53v12Ev();
static  VTBL_ENTRY _tg__ZTV8S18795C5__8S18795C2[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C5[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
  (VTBL_ENTRY)&_ZN8S18795C53v11Ev,
  (VTBL_ENTRY)&_ZN8S18795C53v12Ev,
};
extern void _ZN8S18795C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S18795C4__8S18795C5__8S18795C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S18795C5[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
};
extern void _ZN8S18795C42v9Ev();
extern void _ZN8S18795C33v10Ev();
static  VTBL_ENTRY _tg__ZTV8S18795C3__A1__8S18795C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C3[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
  (VTBL_ENTRY)&_ZN8S18795C33v10Ev,
};
extern void _ZN8S18795C42v9Ev();
static  VTBL_ENTRY _tg__ZTV8S18795C4__8S18795C3__A1__8S18795C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S18795C3[0]),
  (VTBL_ENTRY)&_ZN8S18795C42v9Ev,
};
static  VTT_ENTRY vtt_S18795C2[] = {
  {&(_ZTV8S18795C2[6]),  6,21},
  {&(_tg__ZTV8S18795C3__A__8S18795C2[4]),  4,6},
  {&(_tg__ZTV8S18795C3__A__8S18795C2[4]),  4,6},
  {&(_ZTV8S18795C2[6]),  6,21},
  {&(_ZTV8S18795C2[17]),  17,21},
  {&(_ZTV8S18795C2[17]),  17,21},
  {&(_tg__ZTV8S18795C5__8S18795C2[6]),  6,10},
  {&(_tg__ZTV8S18795C5__8S18795C2[6]),  6,10},
  {&(_tg__ZTV8S18795C4__8S18795C5__8S18795C2[3]),  3,4},
  {&(_tg__ZTV8S18795C3__A1__8S18795C2[4]),  4,6},
  {&(_tg__ZTV8S18795C4__8S18795C3__A1__8S18795C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S18795C2[];
extern  VTBL_ENTRY _ZTV8S18795C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S18795C2[];
Class_Descriptor cd_S18795C2 = {  "S18795C2", // class name
  bases_S18795C2, 4,
  &(vtc_S18795C2[0]), // expected_vtbl_contents
  &(vtt_S18795C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S18795C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S18795C2),21, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S18795C2),11, //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  S18795C1  {
  ::S18795C2 s18795c1f0;
  long double s18795c1f1[2];
  virtual void  v1(); // _ZN8S18795C12v1Ev
  virtual void  v2(); // _ZN8S18795C12v2Ev
  virtual void  v3(); // _ZN8S18795C12v3Ev
  virtual void  v4(); // _ZN8S18795C12v4Ev
  virtual void  v5(); // _ZN8S18795C12v5Ev
  virtual void  v6(); // _ZN8S18795C12v6Ev
  virtual void  v7(); // _ZN8S18795C12v7Ev
  ~S18795C1(); // tgen
  S18795C1(); // tgen
};
//SIG(1 S18795C1) C1{ v1 v2 v3 v4 v5 v6 v7 FC2{ BC3{ VBC4{ v9} v10} VBC5{ VBC3 v11 v12 Fi FL Fp} v8} FD[2]}


void  S18795C1 ::v1(){vfunc_called(this, "_ZN8S18795C12v1Ev");}
void  S18795C1 ::v2(){vfunc_called(this, "_ZN8S18795C12v2Ev");}
void  S18795C1 ::v3(){vfunc_called(this, "_ZN8S18795C12v3Ev");}
void  S18795C1 ::v4(){vfunc_called(this, "_ZN8S18795C12v4Ev");}
void  S18795C1 ::v5(){vfunc_called(this, "_ZN8S18795C12v5Ev");}
void  S18795C1 ::v6(){vfunc_called(this, "_ZN8S18795C12v6Ev");}
void  S18795C1 ::v7(){vfunc_called(this, "_ZN8S18795C12v7Ev");}
S18795C1 ::~S18795C1(){ note_dtor("S18795C1", this);} // tgen
S18795C1 ::S18795C1(){ note_ctor("S18795C1", this);} // tgen

static void Test_S18795C1()
{
  extern Class_Descriptor cd_S18795C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,14)];
    init_test(&cd_S18795C1, buf);
    S18795C1 *dp, &lv = *(dp=new (buf) S18795C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S18795C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S18795C1)");
    check_field_offset(lv, s18795c1f0, ABISELECT(8,4), "S18795C1.s18795c1f0");
    check_field_offset(lv, s18795c1f1, ABISELECT(48,28), "S18795C1.s18795c1f1");
    test_class_info(&lv, &cd_S18795C1);
    dp->~S18795C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18795C1(Test_S18795C1, "S18795C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN8S18795C1C1Ev();
extern void _ZN8S18795C1D1Ev();
Name_Map name_map_S18795C1[] = {
  NSPAIR(_ZN8S18795C1C1Ev),
  NSPAIR(_ZN8S18795C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18795C1[];
extern void _ZN8S18795C12v1Ev();
extern void _ZN8S18795C12v2Ev();
extern void _ZN8S18795C12v3Ev();
extern void _ZN8S18795C12v4Ev();
extern void _ZN8S18795C12v5Ev();
extern void _ZN8S18795C12v6Ev();
extern void _ZN8S18795C12v7Ev();
static  VTBL_ENTRY vtc_S18795C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18795C1[0]),
  (VTBL_ENTRY)&_ZN8S18795C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18795C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18795C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18795C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18795C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18795C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18795C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S18795C1[];
extern  VTBL_ENTRY _ZTV8S18795C1[];
Class_Descriptor cd_S18795C1 = {  "S18795C1", // class name
  0,0,//no base classes
  &(vtc_S18795C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI8S18795C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18795C1),9, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5428C3  {
  virtual  ~S5428C3(); // _ZN7S5428C3D1Ev
  virtual void  v8(); // _ZN7S5428C32v8Ev
  S5428C3(); // tgen
};
//SIG(-1 S5428C3) C1{ vd v1}


 S5428C3 ::~S5428C3(){ note_dtor("S5428C3", this);}
void  S5428C3 ::v8(){vfunc_called(this, "_ZN7S5428C32v8Ev");}
S5428C3 ::S5428C3(){ note_ctor("S5428C3", this);} // tgen

static void Test_S5428C3()
{
  extern Class_Descriptor cd_S5428C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S5428C3, buf);
    S5428C3 *dp, &lv = *(dp=new (buf) S5428C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S5428C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5428C3)");
    test_class_info(&lv, &cd_S5428C3);
    dp->~S5428C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5428C3(Test_S5428C3, "S5428C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S5428C3C1Ev();
extern void _ZN7S5428C3D1Ev();
Name_Map name_map_S5428C3[] = {
  NSPAIR(_ZN7S5428C3C1Ev),
  NSPAIR(_ZN7S5428C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S5428C3[];
extern void _ZN7S5428C3D1Ev();
extern void _ZN7S5428C3D0Ev();
extern void _ZN7S5428C32v8Ev();
static  VTBL_ENTRY vtc_S5428C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5428C3[0]),
  (VTBL_ENTRY)&_ZN7S5428C3D1Ev,
  (VTBL_ENTRY)&_ZN7S5428C3D0Ev,
  (VTBL_ENTRY)&_ZN7S5428C32v8Ev,
};
extern VTBL_ENTRY _ZTI7S5428C3[];
extern  VTBL_ENTRY _ZTV7S5428C3[];
Class_Descriptor cd_S5428C3 = {  "S5428C3", // class name
  0,0,//no base classes
  &(vtc_S5428C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S5428C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S5428C3),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  S5428C2  : S5428C3 {
  void *s5428c2f0;
  virtual void  v9(); // _ZN7S5428C22v9Ev
  virtual void  v10(); // _ZN7S5428C23v10Ev
  virtual void  v11(); // _ZN7S5428C23v11Ev
  virtual void  v12(); // _ZN7S5428C23v12Ev
  virtual void  v13(); // _ZN7S5428C23v13Ev
  virtual void  v14(); // _ZN7S5428C23v14Ev
  virtual void  v15(); // _ZN7S5428C23v15Ev
  ~S5428C2(); // tgen
  S5428C2(); // tgen
};
//SIG(-1 S5428C2) C1{ BC2{ vd v8} v1 v2 v3 v4 v5 v6 v7 Fp}


void  S5428C2 ::v9(){vfunc_called(this, "_ZN7S5428C22v9Ev");}
void  S5428C2 ::v10(){vfunc_called(this, "_ZN7S5428C23v10Ev");}
void  S5428C2 ::v11(){vfunc_called(this, "_ZN7S5428C23v11Ev");}
void  S5428C2 ::v12(){vfunc_called(this, "_ZN7S5428C23v12Ev");}
void  S5428C2 ::v13(){vfunc_called(this, "_ZN7S5428C23v13Ev");}
void  S5428C2 ::v14(){vfunc_called(this, "_ZN7S5428C23v14Ev");}
void  S5428C2 ::v15(){vfunc_called(this, "_ZN7S5428C23v15Ev");}
S5428C2 ::~S5428C2(){ note_dtor("S5428C2", this);} // tgen
S5428C2 ::S5428C2(){ note_ctor("S5428C2", this);} // tgen

static void Test_S5428C2()
{
  extern Class_Descriptor cd_S5428C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S5428C2, buf);
    S5428C2 *dp, &lv = *(dp=new (buf) S5428C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S5428C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5428C2)");
    check_base_class_offset(lv, (S5428C3*), 0, "S5428C2");
    check_field_offset(lv, s5428c2f0, ABISELECT(8,4), "S5428C2.s5428c2f0");
    test_class_info(&lv, &cd_S5428C2);
    dp->~S5428C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5428C2(Test_S5428C2, "S5428C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S5428C2C1Ev();
extern void _ZN7S5428C2D1Ev();
Name_Map name_map_S5428C2[] = {
  NSPAIR(_ZN7S5428C2C1Ev),
  NSPAIR(_ZN7S5428C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5428C3;
extern VTBL_ENTRY _ZTI7S5428C3[];
extern  VTBL_ENTRY _ZTV7S5428C3[];
static Base_Class bases_S5428C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5428C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S5428C2[];
extern void _ZN7S5428C2D1Ev();
extern void _ZN7S5428C2D0Ev();
extern void _ZN7S5428C32v8Ev();
extern void _ZN7S5428C22v9Ev();
extern void _ZN7S5428C23v10Ev();
extern void _ZN7S5428C23v11Ev();
extern void _ZN7S5428C23v12Ev();
extern void _ZN7S5428C23v13Ev();
extern void _ZN7S5428C23v14Ev();
extern void _ZN7S5428C23v15Ev();
static  VTBL_ENTRY vtc_S5428C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5428C2[0]),
  (VTBL_ENTRY)&_ZN7S5428C2D1Ev,
  (VTBL_ENTRY)&_ZN7S5428C2D0Ev,
  (VTBL_ENTRY)&_ZN7S5428C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5428C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v15Ev,
};
extern VTBL_ENTRY _ZTI7S5428C2[];
extern  VTBL_ENTRY _ZTV7S5428C2[];
Class_Descriptor cd_S5428C2 = {  "S5428C2", // class name
  bases_S5428C2, 1,
  &(vtc_S5428C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S5428C2),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5428C2),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  S5428C1  : S5428C2 {
  char s5428c1f0[2];
  void *s5428c1f1;
  virtual  ~S5428C1(); // _ZN7S5428C1D1Ev
  virtual void  v1(); // _ZN7S5428C12v1Ev
  virtual void  v2(); // _ZN7S5428C12v2Ev
  virtual void  v3(); // _ZN7S5428C12v3Ev
  virtual void  v4(); // _ZN7S5428C12v4Ev
  virtual void  v5(); // _ZN7S5428C12v5Ev
  virtual void  v6(); // _ZN7S5428C12v6Ev
  virtual void  v7(); // _ZN7S5428C12v7Ev
  S5428C1(); // tgen
};
//SIG(1 S5428C1) C1{ BC2{ BC3{ vd v8} v9 v10 v11 v12 v13 v14 v15 Fp} vd v1 v2 v3 v4 v5 v6 v7 Fc[2] Fp}


 S5428C1 ::~S5428C1(){ note_dtor("S5428C1", this);}
void  S5428C1 ::v1(){vfunc_called(this, "_ZN7S5428C12v1Ev");}
void  S5428C1 ::v2(){vfunc_called(this, "_ZN7S5428C12v2Ev");}
void  S5428C1 ::v3(){vfunc_called(this, "_ZN7S5428C12v3Ev");}
void  S5428C1 ::v4(){vfunc_called(this, "_ZN7S5428C12v4Ev");}
void  S5428C1 ::v5(){vfunc_called(this, "_ZN7S5428C12v5Ev");}
void  S5428C1 ::v6(){vfunc_called(this, "_ZN7S5428C12v6Ev");}
void  S5428C1 ::v7(){vfunc_called(this, "_ZN7S5428C12v7Ev");}
S5428C1 ::S5428C1(){ note_ctor("S5428C1", this);} // tgen

static void Test_S5428C1()
{
  extern Class_Descriptor cd_S5428C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S5428C1, buf);
    S5428C1 *dp, &lv = *(dp=new (buf) S5428C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S5428C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5428C1)");
    check_base_class_offset(lv, (S5428C3*)(S5428C2*), 0, "S5428C1");
    check_base_class_offset(lv, (S5428C2*), 0, "S5428C1");
    check_field_offset(lv, s5428c1f0, ABISELECT(16,8), "S5428C1.s5428c1f0");
    check_field_offset(lv, s5428c1f1, ABISELECT(24,12), "S5428C1.s5428c1f1");
    test_class_info(&lv, &cd_S5428C1);
    dp->~S5428C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5428C1(Test_S5428C1, "S5428C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S5428C1C1Ev();
extern void _ZN7S5428C1D1Ev();
Name_Map name_map_S5428C1[] = {
  NSPAIR(_ZN7S5428C1C1Ev),
  NSPAIR(_ZN7S5428C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S5428C3;
extern VTBL_ENTRY _ZTI7S5428C3[];
extern  VTBL_ENTRY _ZTV7S5428C3[];
extern Class_Descriptor cd_S5428C2;
extern VTBL_ENTRY _ZTI7S5428C2[];
extern  VTBL_ENTRY _ZTV7S5428C2[];
static Base_Class bases_S5428C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5428C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S5428C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S5428C1[];
extern void _ZN7S5428C1D1Ev();
extern void _ZN7S5428C1D0Ev();
extern void _ZN7S5428C32v8Ev();
extern void _ZN7S5428C22v9Ev();
extern void _ZN7S5428C23v10Ev();
extern void _ZN7S5428C23v11Ev();
extern void _ZN7S5428C23v12Ev();
extern void _ZN7S5428C23v13Ev();
extern void _ZN7S5428C23v14Ev();
extern void _ZN7S5428C23v15Ev();
extern void _ZN7S5428C12v1Ev();
extern void _ZN7S5428C12v2Ev();
extern void _ZN7S5428C12v3Ev();
extern void _ZN7S5428C12v4Ev();
extern void _ZN7S5428C12v5Ev();
extern void _ZN7S5428C12v6Ev();
extern void _ZN7S5428C12v7Ev();
static  VTBL_ENTRY vtc_S5428C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5428C1[0]),
  (VTBL_ENTRY)&_ZN7S5428C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5428C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5428C32v8Ev,
  (VTBL_ENTRY)&_ZN7S5428C22v9Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v10Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v11Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v12Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v13Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v14Ev,
  (VTBL_ENTRY)&_ZN7S5428C23v15Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v1Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v2Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v3Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v4Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v5Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v6Ev,
  (VTBL_ENTRY)&_ZN7S5428C12v7Ev,
};
extern VTBL_ENTRY _ZTI7S5428C1[];
extern  VTBL_ENTRY _ZTV7S5428C1[];
Class_Descriptor cd_S5428C1 = {  "S5428C1", // class name
  bases_S5428C1, 2,
  &(vtc_S5428C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S5428C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S5428C1),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
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19235C5  {
  virtual void  v1(); // _ZN8S19235C52v1Ev
  ~S19235C5(); // tgen
  S19235C5(); // tgen
};
//SIG(-1 S19235C5) C1{ v1}


void  S19235C5 ::v1(){vfunc_called(this, "_ZN8S19235C52v1Ev");}
S19235C5 ::~S19235C5(){ note_dtor("S19235C5", this);} // tgen
S19235C5 ::S19235C5(){ note_ctor("S19235C5", this);} // tgen

static void Test_S19235C5()
{
  extern Class_Descriptor cd_S19235C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19235C5, buf);
    S19235C5 *dp, &lv = *(dp=new (buf) S19235C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19235C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19235C5)");
    test_class_info(&lv, &cd_S19235C5);
    dp->~S19235C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19235C5(Test_S19235C5, "S19235C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19235C5C1Ev();
extern void _ZN8S19235C5D1Ev();
Name_Map name_map_S19235C5[] = {
  NSPAIR(_ZN8S19235C5C1Ev),
  NSPAIR(_ZN8S19235C5D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19235C5[];
extern void _ZN8S19235C52v1Ev();
static  VTBL_ENTRY vtc_S19235C5[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C5[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
};
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
Class_Descriptor cd_S19235C5 = {  "S19235C5", // class name
  0,0,//no base classes
  &(vtc_S19235C5[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19235C5),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19235C5),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  S19235C7  : virtual S19235C5 {
  virtual  ~S19235C7(); // _ZN8S19235C7D2Ev
  S19235C7(); // tgen
};
//SIG(-1 S19235C7) C1{ VBC2{ v1} vd}


 S19235C7 ::~S19235C7(){ note_dtor("S19235C7", this);}
S19235C7 ::S19235C7(){ note_ctor("S19235C7", this);} // tgen

static void Test_S19235C7()
{
  extern Class_Descriptor cd_S19235C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19235C7, buf);
    S19235C7 *dp, &lv = *(dp=new (buf) S19235C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19235C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19235C7)");
    check_base_class_offset(lv, (S19235C5*), 0, "S19235C7");
    test_class_info(&lv, &cd_S19235C7);
    dp->~S19235C7();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19235C7(Test_S19235C7, "S19235C7", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19235C7C1Ev();
extern void _ZN8S19235C7D2Ev();
Name_Map name_map_S19235C7[] = {
  NSPAIR(_ZN8S19235C7C1Ev),
  NSPAIR(_ZN8S19235C7D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19235C5;
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
static Base_Class bases_S19235C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19235C5,    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 _ZTI8S19235C7[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C7D1Ev();
extern void _ZN8S19235C7D0Ev();
static  VTBL_ENTRY vtc_S19235C7[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C7[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D0Ev,
};
extern VTBL_ENTRY _ZTV8S19235C7[];
static  VTT_ENTRY vtt_S19235C7[] = {
  {&(_ZTV8S19235C7[4]),  4,7},
  {&(_ZTV8S19235C7[4]),  4,7},
};
extern VTBL_ENTRY _ZTI8S19235C7[];
extern  VTBL_ENTRY _ZTV8S19235C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C7[];
Class_Descriptor cd_S19235C7 = {  "S19235C7", // class name
  bases_S19235C7, 1,
  &(vtc_S19235C7[0]), // expected_vtbl_contents
  &(vtt_S19235C7[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19235C7),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19235C7),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19235C7),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  S19235C6  : S19235C7 , virtual S9624C48 {
  ::S20948C8 s19235c6f0;
  virtual  ~S19235C6(); // _ZN8S19235C6D2Ev
  S19235C6(); // tgen
};
//SIG(-1 S19235C6) C1{ BC2{ VBC3{ v1} vd} VBC4{ m} vd FC5{ m Fc[7]}}


 S19235C6 ::~S19235C6(){ note_dtor("S19235C6", this);}
S19235C6 ::S19235C6(){ note_ctor("S19235C6", this);} // tgen

static void Test_S19235C6()
{
  extern Class_Descriptor cd_S19235C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S19235C6, buf);
    S19235C6 *dp, &lv = *(dp=new (buf) S19235C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S19235C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19235C6)");
    check_base_class_offset(lv, (S19235C5*)(S19235C7*), 0, "S19235C6");
    check_base_class_offset(lv, (S19235C7*), 0, "S19235C6");
    check_base_class_offset(lv, (S9624C48*), 0, "S19235C6");
    check_field_offset(lv, s19235c6f0, ABISELECT(8,4), "S19235C6.s19235c6f0");
    test_class_info(&lv, &cd_S19235C6);
    dp->~S19235C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19235C6(Test_S19235C6, "S19235C6", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN8S19235C6C1Ev();
extern void _ZN8S19235C6D2Ev();
Name_Map name_map_S19235C6[] = {
  NSPAIR(_ZN8S19235C6C1Ev),
  NSPAIR(_ZN8S19235C6D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19235C5;
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
extern Class_Descriptor cd_S19235C7;
extern VTBL_ENTRY _ZTI8S19235C7[];
extern  VTBL_ENTRY _ZTV8S19235C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S19235C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19235C5,    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_S19235C7,    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_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S19235C6[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C6D1Ev();
extern void _ZN8S19235C6D0Ev();
static  VTBL_ENTRY vtc_S19235C6[] = {
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C6[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C6D0Ev,
};
extern VTBL_ENTRY _ZTV8S19235C6[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C7D1Ev();
extern void _ZN8S19235C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C7__8S19235C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C7[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D0Ev,
};
static  VTT_ENTRY vtt_S19235C6[] = {
  {&(_ZTV8S19235C6[5]),  5,8},
  {&(_tg__ZTV8S19235C7__8S19235C6[4]),  4,7},
  {&(_tg__ZTV8S19235C7__8S19235C6[4]),  4,7},
  {&(_ZTV8S19235C6[5]),  5,8},
};
extern VTBL_ENTRY _ZTI8S19235C6[];
extern  VTBL_ENTRY _ZTV8S19235C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C6[];
Class_Descriptor cd_S19235C6 = {  "S19235C6", // class name
  bases_S19235C6, 3,
  &(vtc_S19235C6[0]), // expected_vtbl_contents
  &(vtt_S19235C6[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI8S19235C6),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19235C6),8, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19235C6),4, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19235C2  : S9624C48 , virtual S20948C7_nt , S19235C5 , S19235C6 {
  int s19235c2f0;
  virtual  ~S19235C2(); // _ZN8S19235C2D2Ev
  S19235C2(); // tgen
};
//SIG(-1 S19235C2) C1{ BC2{ m} VBC3{ vd m FD} BC4{ v1} BC5{ BC6{ VBC4 vd} VBC2 vd FC7{ m Fc[7]}} vd Fi}


 S19235C2 ::~S19235C2(){ note_dtor("S19235C2", this);}
S19235C2 ::S19235C2(){ note_ctor("S19235C2", this);} // tgen

static void Test_S19235C2()
{
  extern Class_Descriptor cd_S19235C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S19235C2, buf);
    S19235C2 *dp, &lv = *(dp=new (buf) S19235C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19235C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19235C2)");
    /*is_ambiguous_... S19235C2::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S19235C2");
    check_base_class_offset(lv, (S20948C7_nt*), ABISELECT(32,20), "S19235C2");
    /*is_ambiguous_... S19235C2::S19235C5 */ AMB_check_base_class_offset(lv, (S19235C5*), 0, "S19235C2");
    check_base_class_offset(lv, (S19235C5*)(S19235C7*)(S19235C6*), ABISELECT(8,4), "S19235C2");
    check_base_class_offset(lv, (S19235C7*)(S19235C6*), ABISELECT(8,4), "S19235C2");
    check_base_class_offset(lv, (S9624C48*)(S19235C6*), ABISELECT(64,36), "S19235C2");
    check_base_class_offset(lv, (S19235C6*), ABISELECT(8,4), "S19235C2");
    check_field_offset(lv, s19235c2f0, ABISELECT(24,16), "S19235C2.s19235c2f0");
    test_class_info(&lv, &cd_S19235C2);
    dp->~S19235C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19235C2(Test_S19235C2, "S19235C2", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19235C2C1Ev();
extern void _ZN8S19235C2D2Ev();
Name_Map name_map_S19235C2[] = {
  NSPAIR(_ZN8S19235C2C1Ev),
  NSPAIR(_ZN8S19235C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19235C5;
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
extern Class_Descriptor cd_S19235C5;
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
extern Class_Descriptor cd_S19235C7;
extern VTBL_ENTRY _ZTI8S19235C7[];
extern  VTBL_ENTRY _ZTV8S19235C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19235C6;
extern VTBL_ENTRY _ZTI8S19235C6[];
extern  VTBL_ENTRY _ZTV8S19235C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C6[];
static Base_Class bases_S19235C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C7_nt,    ABISELECT(32,20), //bcp->offset
    16, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S19235C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S19235C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    8, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19235C7,    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
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    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, 1},
  {&cd_S19235C6,    ABISELECT(8,4), //bcp->offset
    8, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    7, //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 _ZTI8S19235C2[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C2D1Ev();
extern void _ZN8S19235C2D0Ev();
extern void _ZN8S19235C52v1Ev();
extern void ABISELECT(_ZThn8_N8S19235C2D1Ev,_ZThn4_N8S19235C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S19235C2D0Ev,_ZThn4_N8S19235C2D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19235C2D1Ev,_ZTv0_n12_N8S19235C2D1Ev)();
extern void ABISELECT(_ZThn32_N8S19235C2D1Ev,_ZThn20_N8S19235C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19235C2D0Ev,_ZTv0_n12_N8S19235C2D0Ev)();
extern void ABISELECT(_ZThn32_N8S19235C2D0Ev,_ZThn20_N8S19235C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19235C2[] = {
  ABISELECT(64,36),
  ABISELECT(8,4),
  ABISELECT(32,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C2D0Ev,
  ABISELECT(56,32),
  0,
  0,
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19235C2D1Ev,_ZThn4_N8S19235C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19235C2D0Ev,_ZThn4_N8S19235C2D0Ev),
  ABISELECT(-32,-20),
  ABISELECT(-32,-20),
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19235C2D1Ev,_ZTv0_n12_N8S19235C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19235C2D0Ev,_ZTv0_n12_N8S19235C2D0Ev),
};
extern VTBL_ENTRY _ZTV8S19235C2[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C6D1Ev();
extern void _ZN8S19235C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C6__8S19235C2[] = {
  ABISELECT(56,32),
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C6[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C6D0Ev,
};
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C7D1Ev();
extern void _ZN8S19235C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C78S19235C6__8S19235C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C7[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D0Ev,
};
static  VTT_ENTRY vtt_S19235C2[] = {
  {&(_ZTV8S19235C2[5]),  5,21},
  {&(_tg__ZTV8S19235C6__8S19235C2[5]),  5,8},
  {&(_tg__ZTV8S19235C78S19235C6__8S19235C2[4]),  4,7},
  {&(_tg__ZTV8S19235C78S19235C6__8S19235C2[4]),  4,7},
  {&(_tg__ZTV8S19235C6__8S19235C2[5]),  5,8},
  {&(_ZTV8S19235C2[19]),  19,21},
  {&(_ZTV8S19235C2[13]),  13,21},
  {&(_ZTV8S19235C2[13]),  13,21},
};
extern VTBL_ENTRY _ZTI8S19235C2[];
extern  VTBL_ENTRY _ZTV8S19235C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C2[];
static VTBL_ENTRY alt_thunk_names167[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19235C2D0Ev,_ZTv0_n12_N8S19235C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19235C2D0Ev,_ZThn20_N8S19235C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19235C2D1Ev,_ZTv0_n12_N8S19235C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S19235C2D1Ev,_ZThn20_N8S19235C2D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19235C2 = {  "S19235C2", // class name
  bases_S19235C2, 7,
  &(vtc_S19235C2[0]), // expected_vtbl_contents
  &(vtt_S19235C2[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19235C2),ABISELECT(88,48), //typeinfo_var
  NSPAIRA(_ZTV8S19235C2),21, //virtual function table var
  5, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19235C2),8, //virtual table table var
  5, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names167,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19235C1  : virtual S19235C2 {
  virtual  ~S19235C1(); // _ZN8S19235C1D2Ev
  S19235C1(); // tgen
};
//SIG(1 S19235C1) C1{ VBC2{ BC3{ m} VBC4{ vd m FD} BC5{ v1} BC6{ BC7{ VBC5 vd} VBC3 vd FC8{ m Fc[7]}} vd Fi} vd}


 S19235C1 ::~S19235C1(){ note_dtor("S19235C1", this);}
S19235C1 ::S19235C1(){ note_ctor("S19235C1", this);} // tgen

static void Test_S19235C1()
{
  extern Class_Descriptor cd_S19235C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,11)];
    init_test(&cd_S19235C1, buf);
    S19235C1 *dp, &lv = *(dp=new (buf) S19235C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,40), "sizeof(S19235C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S19235C1)");
    /*is_ambiguous_... S19235C2::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*)(S19235C2*), ABISELECT(8,4), "S19235C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S19235C2*), ABISELECT(48,24), "S19235C1");
    /*is_ambiguous_... S19235C2::S19235C5 */ AMB_check_base_class_offset(lv, (S19235C5*)(S19235C2*), ABISELECT(8,4), "S19235C1");
    check_base_class_offset(lv, (S19235C5*)(S19235C7*)(S19235C6*)(S19235C2*), 0, "S19235C1");
    check_base_class_offset(lv, (S19235C7*)(S19235C6*)(S19235C2*), ABISELECT(16,8), "S19235C1");
    check_base_class_offset(lv, (S9624C48*)(S19235C6*)(S19235C2*), 0, "S19235C1");
    check_base_class_offset(lv, (S19235C6*)(S19235C2*), ABISELECT(16,8), "S19235C1");
    check_base_class_offset(lv, (S19235C2*), ABISELECT(8,4), "S19235C1");
    test_class_info(&lv, &cd_S19235C1);
    dp->~S19235C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19235C1(Test_S19235C1, "S19235C1", ABISELECT(80,40));

#else // __cplusplus

extern void _ZN8S19235C1C1Ev();
extern void _ZN8S19235C1D2Ev();
Name_Map name_map_S19235C1[] = {
  NSPAIR(_ZN8S19235C1C1Ev),
  NSPAIR(_ZN8S19235C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S19235C5;
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
extern Class_Descriptor cd_S19235C5;
extern VTBL_ENTRY _ZTI8S19235C5[];
extern  VTBL_ENTRY _ZTV8S19235C5[];
extern Class_Descriptor cd_S19235C7;
extern VTBL_ENTRY _ZTI8S19235C7[];
extern  VTBL_ENTRY _ZTV8S19235C7[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C7[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S19235C6;
extern VTBL_ENTRY _ZTI8S19235C6[];
extern  VTBL_ENTRY _ZTV8S19235C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C6[];
extern Class_Descriptor cd_S19235C2;
extern VTBL_ENTRY _ZTI8S19235C2[];
extern  VTBL_ENTRY _ZTV8S19235C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C2[];
static Base_Class bases_S19235C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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_S20948C7_nt,    ABISELECT(48,24), //bcp->offset
    28, //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
    7, //immediately_derived
  0, 1},
  {&cd_S19235C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19235C5,    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
    2, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S19235C7,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    8, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    6, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S19235C6,    ABISELECT(16,8), //bcp->offset
    20, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    7, //immediately_derived
  0, 0},
  {&cd_S19235C2,    ABISELECT(8,4), //bcp->offset
    10, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    6, //bcp->base_subarray_index_in_construction_vtbl_array
    6, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S19235C1[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C1D1Ev();
extern void _ZN8S19235C1D0Ev();
extern void _ZN8S19235C52v1Ev();
extern void ABISELECT(_ZTv0_n56_N8S19235C1D1Ev,_ZTv0_n28_N8S19235C1D1Ev)();
extern void ABISELECT(_ZThn8_N8S19235C1D1Ev,_ZThn4_N8S19235C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n56_N8S19235C1D0Ev,_ZTv0_n28_N8S19235C1D0Ev)();
extern void ABISELECT(_ZThn8_N8S19235C1D0Ev,_ZThn4_N8S19235C1D0Ev)() __attribute__((weak));
extern void _ZN8S19235C52v1Ev();
extern void ABISELECT(_ZTvn8_n56_N8S19235C1D1Ev,_ZTvn4_n28_N8S19235C1D1Ev)();
extern void ABISELECT(_ZTvn8_n56_N8S19235C1D0Ev,_ZTvn4_n28_N8S19235C1D0Ev)();
extern void ABISELECT(_ZTv0_n24_N8S19235C1D1Ev,_ZTv0_n12_N8S19235C1D1Ev)();
extern void ABISELECT(_ZThn48_N8S19235C1D1Ev,_ZThn24_N8S19235C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19235C1D0Ev,_ZTv0_n12_N8S19235C1D0Ev)();
extern void ABISELECT(_ZThn48_N8S19235C1D0Ev,_ZThn24_N8S19235C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S19235C1[] = {
  0,
  0,
  ABISELECT(48,24),
  ABISELECT(8,4),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C1[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C1D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C1D0Ev,
  ABISELECT(-8,-4),
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19235C1[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19235C1D1Ev,_ZTv0_n28_N8S19235C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n56_N8S19235C1D0Ev,_ZTv0_n28_N8S19235C1D0Ev),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI8S19235C1[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19235C1D1Ev,_ZTvn4_n28_N8S19235C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTvn8_n56_N8S19235C1D0Ev,_ZTvn4_n28_N8S19235C1D0Ev),
  ABISELECT(-48,-24),
  ABISELECT(-48,-24),
  (VTBL_ENTRY)&(_ZTI8S19235C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19235C1D1Ev,_ZTv0_n12_N8S19235C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19235C1D0Ev,_ZTv0_n12_N8S19235C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S19235C1[];
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C2D1Ev();
extern void _ZN8S19235C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C2__8S19235C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C2D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C2D0Ev,
};
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C6D1Ev();
extern void _ZN8S19235C6D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C68S19235C2__8S19235C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C6[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C6D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C6D0Ev,
};
extern void _ZN8S19235C52v1Ev();
extern void _ZN8S19235C7D1Ev();
extern void _ZN8S19235C7D0Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C78S19235C68S19235C2__8S19235C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  0,
  (VTBL_ENTRY)&(_ZTI8S19235C7[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D1Ev,
  (VTBL_ENTRY)&_ZN8S19235C7D0Ev,
};
extern void _ZN8S19235C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C5__8S19235C78S19235C68S19235C2__8S19235C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19235C7[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
};
extern void _ZN8S19235C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C5__8S19235C68S19235C2__8S19235C1[] = {
  0,
  ABISELECT(16,8),
  (VTBL_ENTRY)&(_ZTI8S19235C6[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
};
extern void ABISELECT(_ZTv0_n24_N8S19235C2D1Ev,_ZTv0_n12_N8S19235C2D1Ev)();
extern void ABISELECT(_ZThn40_N8S19235C2D1Ev,_ZThn20_N8S19235C2D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n24_N8S19235C2D0Ev,_ZTv0_n12_N8S19235C2D0Ev)();
extern void ABISELECT(_ZThn40_N8S19235C2D0Ev,_ZThn20_N8S19235C2D0Ev)() __attribute__((weak));
static  VTBL_ENTRY _tg__ZTV11S20948C7_nt__8S19235C2__8S19235C1[] = {
  ABISELECT(-40,-20),
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19235C2D1Ev,_ZTv0_n12_N8S19235C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n24_N8S19235C2D0Ev,_ZTv0_n12_N8S19235C2D0Ev),
};
extern void _ZN8S19235C52v1Ev();
extern void ABISELECT(_ZThn8_N8S19235C2D1Ev,_ZThn4_N8S19235C2D1Ev)();
extern void ABISELECT(_ZThn8_N8S19235C2D0Ev,_ZThn4_N8S19235C2D0Ev)();
static  VTBL_ENTRY _tg__ZTV8S19235C6__8S19235C2__8S19235C1[] = {
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-16,-8),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19235C2D1Ev,_ZThn4_N8S19235C2D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZThn8_N8S19235C2D0Ev,_ZThn4_N8S19235C2D0Ev),
};
extern void _ZN8S19235C52v1Ev();
static  VTBL_ENTRY _tg__ZTV8S19235C5__A1__8S19235C2__8S19235C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S19235C2[0]),
  (VTBL_ENTRY)&_ZN8S19235C52v1Ev,
};
static  VTT_ENTRY vtt_S19235C1[] = {
  {&(_ZTV8S19235C1[7]),  7,33},
  {&(_ZTV8S19235C1[17]),  17,33},
  {&(_ZTV8S19235C1[31]),  31,33},
  {&(_ZTV8S19235C1[25]),  25,33},
  {&(_ZTV8S19235C1[7]),  7,33},
  {&(_tg__ZTV8S19235C2__8S19235C1[5]),  5,8},
  {&(_tg__ZTV8S19235C68S19235C2__8S19235C1[5]),  5,8},
  {&(_tg__ZTV8S19235C78S19235C68S19235C2__8S19235C1[4]),  4,7},
  {&(_tg__ZTV8S19235C5__8S19235C78S19235C68S19235C2__8S19235C1[3]),  3,4},
  {&(_tg__ZTV8S19235C5__8S19235C68S19235C2__8S19235C1[3]),  3,4},
  {&(_tg__ZTV11S20948C7_nt__8S19235C2__8S19235C1[3]),  3,5},
  {&(_tg__ZTV8S19235C6__8S19235C2__8S19235C1[5]),  5,8},
  {&(_tg__ZTV8S19235C5__A1__8S19235C2__8S19235C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S19235C1[];
extern  VTBL_ENTRY _ZTV8S19235C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19235C1[];
static VTBL_ENTRY alt_thunk_names168[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19235C2D0Ev,_ZTv0_n12_N8S19235C2D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19235C2D0Ev,_ZThn20_N8S19235C2D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19235C2D1Ev,_ZTv0_n12_N8S19235C2D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn40_N8S19235C2D1Ev,_ZThn20_N8S19235C2D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19235C1D0Ev,_ZTv0_n12_N8S19235C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19235C1D0Ev,_ZThn24_N8S19235C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n24_N8S19235C1D1Ev,_ZTv0_n12_N8S19235C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn48_N8S19235C1D1Ev,_ZThn24_N8S19235C1D1Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19235C1D0Ev,_ZTv0_n28_N8S19235C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19235C1D0Ev,_ZThn4_N8S19235C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n56_N8S19235C1D1Ev,_ZTv0_n28_N8S19235C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn8_N8S19235C1D1Ev,_ZThn4_N8S19235C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S19235C1 = {  "S19235C1", // class name
  bases_S19235C1, 8,
  &(vtc_S19235C1[0]), // expected_vtbl_contents
  &(vtt_S19235C1[0]), // expected_vtt_contents
  ABISELECT(80,40), // object size
  NSPAIRA(_ZTI8S19235C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19235C1),33, //virtual function table var
  7, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19235C1),13, //virtual table table var
  6, // n_initialized_bases
  1, // has_virtual_bases
  1, // has_class_type_fields
  alt_thunk_names168,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5764C1  : S20031C3 {
  int s5764c1f0[4];
  ::S20031C3 s5764c1f1[4];
  long s5764c1f2;
  int s5764c1f3;
  long double s5764c1f4[10];
  int s5764c1f5;
};
//SIG(1 S5764C1) C1{ BC2{ m Fi Fs[8] FL[10] Fp FD Fp FL Fp[2] Fi} Fi[4] FC2[4] Fl Fi FD[10] Fi}



static void Test_S5764C1()
{
  extern Class_Descriptor cd_S5764C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(69,213)];
    init_test(&cd_S5764C1, buf);
    S5764C1 &lv = *(new (buf) S5764C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(1088,848), "sizeof(S5764C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5764C1)");
    check_base_class_offset(lv, (S20031C3*), 0, "S5764C1");
    check_field_offset(lv, s5764c1f0, ABISELECT(176,140), "S5764C1.s5764c1f0");
    check_field_offset(lv, s5764c1f1, ABISELECT(192,156), "S5764C1.s5764c1f1");
    check_field_offset(lv, s5764c1f2, ABISELECT(896,716), "S5764C1.s5764c1f2");
    check_field_offset(lv, s5764c1f3, ABISELECT(904,720), "S5764C1.s5764c1f3");
    check_field_offset(lv, s5764c1f4, ABISELECT(912,724), "S5764C1.s5764c1f4");
    check_field_offset(lv, s5764c1f5, ABISELECT(1072,844), "S5764C1.s5764c1f5");
    test_class_info(&lv, &cd_S5764C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5764C1(Test_S5764C1, "S5764C1", ABISELECT(1088,848));

#else // __cplusplus

extern Class_Descriptor cd_S20031C3;
extern VTBL_ENTRY _ZTI8S20031C3[];
static Base_Class bases_S5764C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20031C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5764C1 = {  "S5764C1", // class name
  bases_S5764C1, 1,
  0, // no vftv
  0, //no vtt
  ABISELECT(1088,848), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10127C2  {
  void *s10127c2f0[5];
  virtual  ~S10127C2(); // _ZN8S10127C2D1Ev
  virtual void  v7(); // _ZN8S10127C22v7Ev
  virtual void  v8(); // _ZN8S10127C22v8Ev
  virtual void  v9(); // _ZN8S10127C22v9Ev
  virtual void  v10(); // _ZN8S10127C23v10Ev
  virtual void  v11(); // _ZN8S10127C23v11Ev
  virtual void  v12(); // _ZN8S10127C23v12Ev
  virtual void  v13(); // _ZN8S10127C23v13Ev
  virtual void  v14(); // _ZN8S10127C23v14Ev
  virtual void  v15(); // _ZN8S10127C23v15Ev
  S10127C2(); // tgen
};
//SIG(-1 S10127C2) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 v9 Fp[5]}


 S10127C2 ::~S10127C2(){ note_dtor("S10127C2", this);}
void  S10127C2 ::v7(){vfunc_called(this, "_ZN8S10127C22v7Ev");}
void  S10127C2 ::v8(){vfunc_called(this, "_ZN8S10127C22v8Ev");}
void  S10127C2 ::v9(){vfunc_called(this, "_ZN8S10127C22v9Ev");}
void  S10127C2 ::v10(){vfunc_called(this, "_ZN8S10127C23v10Ev");}
void  S10127C2 ::v11(){vfunc_called(this, "_ZN8S10127C23v11Ev");}
void  S10127C2 ::v12(){vfunc_called(this, "_ZN8S10127C23v12Ev");}
void  S10127C2 ::v13(){vfunc_called(this, "_ZN8S10127C23v13Ev");}
void  S10127C2 ::v14(){vfunc_called(this, "_ZN8S10127C23v14Ev");}
void  S10127C2 ::v15(){vfunc_called(this, "_ZN8S10127C23v15Ev");}
S10127C2 ::S10127C2(){ note_ctor("S10127C2", this);} // tgen

static void Test_S10127C2()
{
  extern Class_Descriptor cd_S10127C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[7];
    init_test(&cd_S10127C2, buf);
    S10127C2 *dp, &lv = *(dp=new (buf) S10127C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S10127C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10127C2)");
    check_field_offset(lv, s10127c2f0, ABISELECT(8,4), "S10127C2.s10127c2f0");
    test_class_info(&lv, &cd_S10127C2);
    dp->~S10127C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10127C2(Test_S10127C2, "S10127C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S10127C2C1Ev();
extern void _ZN8S10127C2D1Ev();
Name_Map name_map_S10127C2[] = {
  NSPAIR(_ZN8S10127C2C1Ev),
  NSPAIR(_ZN8S10127C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S10127C2[];
extern void _ZN8S10127C2D1Ev();
extern void _ZN8S10127C2D0Ev();
extern void _ZN8S10127C22v7Ev();
extern void _ZN8S10127C22v8Ev();
extern void _ZN8S10127C22v9Ev();
extern void _ZN8S10127C23v10Ev();
extern void _ZN8S10127C23v11Ev();
extern void _ZN8S10127C23v12Ev();
extern void _ZN8S10127C23v13Ev();
extern void _ZN8S10127C23v14Ev();
extern void _ZN8S10127C23v15Ev();
static  VTBL_ENTRY vtc_S10127C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10127C2[0]),
  (VTBL_ENTRY)&_ZN8S10127C2D1Ev,
  (VTBL_ENTRY)&_ZN8S10127C2D0Ev,
  (VTBL_ENTRY)&_ZN8S10127C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10127C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10127C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v15Ev,
};
extern VTBL_ENTRY _ZTI8S10127C2[];
extern  VTBL_ENTRY _ZTV8S10127C2[];
Class_Descriptor cd_S10127C2 = {  "S10127C2", // class name
  0,0,//no base classes
  &(vtc_S10127C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S10127C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S10127C2),13, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10127C1  : S10127C2 {
  void *s10127c1f0;
  virtual  ~S10127C1(); // _ZN8S10127C1D1Ev
  virtual void  v1(); // _ZN8S10127C12v1Ev
  virtual void  v2(); // _ZN8S10127C12v2Ev
  virtual void  v3(); // _ZN8S10127C12v3Ev
  virtual void  v4(); // _ZN8S10127C12v4Ev
  virtual void  v5(); // _ZN8S10127C12v5Ev
  virtual void  v6(); // _ZN8S10127C12v6Ev
  S10127C1(); // tgen
};
//SIG(1 S10127C1) C1{ BC2{ vd v7 v8 v9 v10 v11 v12 v13 v14 v15 Fp[5]} vd v1 v2 v3 v4 v5 v6 Fp}


 S10127C1 ::~S10127C1(){ note_dtor("S10127C1", this);}
void  S10127C1 ::v1(){vfunc_called(this, "_ZN8S10127C12v1Ev");}
void  S10127C1 ::v2(){vfunc_called(this, "_ZN8S10127C12v2Ev");}
void  S10127C1 ::v3(){vfunc_called(this, "_ZN8S10127C12v3Ev");}
void  S10127C1 ::v4(){vfunc_called(this, "_ZN8S10127C12v4Ev");}
void  S10127C1 ::v5(){vfunc_called(this, "_ZN8S10127C12v5Ev");}
void  S10127C1 ::v6(){vfunc_called(this, "_ZN8S10127C12v6Ev");}
S10127C1 ::S10127C1(){ note_ctor("S10127C1", this);} // tgen

static void Test_S10127C1()
{
  extern Class_Descriptor cd_S10127C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[8];
    init_test(&cd_S10127C1, buf);
    S10127C1 *dp, &lv = *(dp=new (buf) S10127C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S10127C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10127C1)");
    check_base_class_offset(lv, (S10127C2*), 0, "S10127C1");
    check_field_offset(lv, s10127c1f0, ABISELECT(48,24), "S10127C1.s10127c1f0");
    test_class_info(&lv, &cd_S10127C1);
    dp->~S10127C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10127C1(Test_S10127C1, "S10127C1", ABISELECT(56,28));

#else // __cplusplus

extern void _ZN8S10127C1C1Ev();
extern void _ZN8S10127C1D1Ev();
Name_Map name_map_S10127C1[] = {
  NSPAIR(_ZN8S10127C1C1Ev),
  NSPAIR(_ZN8S10127C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10127C2;
extern VTBL_ENTRY _ZTI8S10127C2[];
extern  VTBL_ENTRY _ZTV8S10127C2[];
static Base_Class bases_S10127C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10127C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10127C1[];
extern void _ZN8S10127C1D1Ev();
extern void _ZN8S10127C1D0Ev();
extern void _ZN8S10127C22v7Ev();
extern void _ZN8S10127C22v8Ev();
extern void _ZN8S10127C22v9Ev();
extern void _ZN8S10127C23v10Ev();
extern void _ZN8S10127C23v11Ev();
extern void _ZN8S10127C23v12Ev();
extern void _ZN8S10127C23v13Ev();
extern void _ZN8S10127C23v14Ev();
extern void _ZN8S10127C23v15Ev();
extern void _ZN8S10127C12v1Ev();
extern void _ZN8S10127C12v2Ev();
extern void _ZN8S10127C12v3Ev();
extern void _ZN8S10127C12v4Ev();
extern void _ZN8S10127C12v5Ev();
extern void _ZN8S10127C12v6Ev();
static  VTBL_ENTRY vtc_S10127C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10127C1[0]),
  (VTBL_ENTRY)&_ZN8S10127C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10127C1D0Ev,
  (VTBL_ENTRY)&_ZN8S10127C22v7Ev,
  (VTBL_ENTRY)&_ZN8S10127C22v8Ev,
  (VTBL_ENTRY)&_ZN8S10127C22v9Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v10Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v11Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v12Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v13Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v14Ev,
  (VTBL_ENTRY)&_ZN8S10127C23v15Ev,
  (VTBL_ENTRY)&_ZN8S10127C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10127C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10127C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10127C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10127C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10127C12v6Ev,
};
extern VTBL_ENTRY _ZTI8S10127C1[];
extern  VTBL_ENTRY _ZTV8S10127C1[];
Class_Descriptor cd_S10127C1 = {  "S10127C1", // class name
  bases_S10127C1, 1,
  &(vtc_S10127C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,28), // object size
  NSPAIRA(_ZTI8S10127C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10127C1),19, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S9656C2  {
  ::S9624C14_nt s9656c2f0;
  int s9656c2f1[2];
  char s9656c2f2;
  virtual  ~S9656C2(); // _ZN7S9656C2D1Ev
  virtual void  v4(); // _ZN7S9656C22v4Ev
  virtual void  v5(); // _ZN7S9656C22v5Ev
  virtual void  v6(); // _ZN7S9656C22v6Ev
  S9656C2(); // tgen
};
//SIG(-1 S9656C2) C1{ vd v1 v2 v3 FC2{ m Fp Fi FC3{ m}} Fi[2] Fc}


 S9656C2 ::~S9656C2(){ note_dtor("S9656C2", this);}
void  S9656C2 ::v4(){vfunc_called(this, "_ZN7S9656C22v4Ev");}
void  S9656C2 ::v5(){vfunc_called(this, "_ZN7S9656C22v5Ev");}
void  S9656C2 ::v6(){vfunc_called(this, "_ZN7S9656C22v6Ev");}
S9656C2 ::S9656C2(){ note_ctor("S9656C2", this);} // tgen

static void Test_S9656C2()
{
  extern Class_Descriptor cd_S9656C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,8)];
    init_test(&cd_S9656C2, buf);
    S9656C2 *dp, &lv = *(dp=new (buf) S9656C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,28), "sizeof(S9656C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9656C2)");
    check_field_offset(lv, s9656c2f0, ABISELECT(8,4), "S9656C2.s9656c2f0");
    check_field_offset(lv, s9656c2f1, ABISELECT(24,16), "S9656C2.s9656c2f1");
    check_field_offset(lv, s9656c2f2, ABISELECT(32,24), "S9656C2.s9656c2f2");
    test_class_info(&lv, &cd_S9656C2);
    dp->~S9656C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9656C2(Test_S9656C2, "S9656C2", ABISELECT(40,28));

#else // __cplusplus

extern void _ZN7S9656C2C1Ev();
extern void _ZN7S9656C2D1Ev();
Name_Map name_map_S9656C2[] = {
  NSPAIR(_ZN7S9656C2C1Ev),
  NSPAIR(_ZN7S9656C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S9656C2[];
extern void _ZN7S9656C2D1Ev();
extern void _ZN7S9656C2D0Ev();
extern void _ZN7S9656C22v4Ev();
extern void _ZN7S9656C22v5Ev();
extern void _ZN7S9656C22v6Ev();
static  VTBL_ENTRY vtc_S9656C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9656C2[0]),
  (VTBL_ENTRY)&_ZN7S9656C2D1Ev,
  (VTBL_ENTRY)&_ZN7S9656C2D0Ev,
  (VTBL_ENTRY)&_ZN7S9656C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9656C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9656C22v6Ev,
};
extern VTBL_ENTRY _ZTI7S9656C2[];
extern  VTBL_ENTRY _ZTV7S9656C2[];
Class_Descriptor cd_S9656C2 = {  "S9656C2", // class name
  0,0,//no base classes
  &(vtc_S9656C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,28), // object size
  NSPAIRA(_ZTI7S9656C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S9656C2),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  S9656C1  : S9656C2 {
  ::S9624C14_nt s9656c1f0;
  char s9656c1f1;
  void *s9656c1f2[2];
  virtual  ~S9656C1(); // _ZN7S9656C1D1Ev
  virtual void  v1(); // _ZN7S9656C12v1Ev
  virtual void  v2(); // _ZN7S9656C12v2Ev
  virtual void  v3(); // _ZN7S9656C12v3Ev
  S9656C1(); // tgen
};
//SIG(1 S9656C1) C1{ BC2{ vd v4 v5 v6 FC3{ m Fp Fi FC4{ m}} Fi[2] Fc} vd v1 v2 v3 FC3 Fc Fp[2]}


 S9656C1 ::~S9656C1(){ note_dtor("S9656C1", this);}
void  S9656C1 ::v1(){vfunc_called(this, "_ZN7S9656C12v1Ev");}
void  S9656C1 ::v2(){vfunc_called(this, "_ZN7S9656C12v2Ev");}
void  S9656C1 ::v3(){vfunc_called(this, "_ZN7S9656C12v3Ev");}
S9656C1 ::S9656C1(){ note_ctor("S9656C1", this);} // tgen

static void Test_S9656C1()
{
  extern Class_Descriptor cd_S9656C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,14)];
    init_test(&cd_S9656C1, buf);
    S9656C1 *dp, &lv = *(dp=new (buf) S9656C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,52), "sizeof(S9656C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S9656C1)");
    check_base_class_offset(lv, (S9656C2*), 0, "S9656C1");
    check_field_offset(lv, s9656c1f0, ABISELECT(40,28), "S9656C1.s9656c1f0");
    check_field_offset(lv, s9656c1f1, ABISELECT(56,40), "S9656C1.s9656c1f1");
    check_field_offset(lv, s9656c1f2, ABISELECT(64,44), "S9656C1.s9656c1f2");
    test_class_info(&lv, &cd_S9656C1);
    dp->~S9656C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS9656C1(Test_S9656C1, "S9656C1", ABISELECT(80,52));

#else // __cplusplus

extern void _ZN7S9656C1C1Ev();
extern void _ZN7S9656C1D1Ev();
Name_Map name_map_S9656C1[] = {
  NSPAIR(_ZN7S9656C1C1Ev),
  NSPAIR(_ZN7S9656C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9656C2;
extern VTBL_ENTRY _ZTI7S9656C2[];
extern  VTBL_ENTRY _ZTV7S9656C2[];
static Base_Class bases_S9656C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9656C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S9656C1[];
extern void _ZN7S9656C1D1Ev();
extern void _ZN7S9656C1D0Ev();
extern void _ZN7S9656C22v4Ev();
extern void _ZN7S9656C22v5Ev();
extern void _ZN7S9656C22v6Ev();
extern void _ZN7S9656C12v1Ev();
extern void _ZN7S9656C12v2Ev();
extern void _ZN7S9656C12v3Ev();
static  VTBL_ENTRY vtc_S9656C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S9656C1[0]),
  (VTBL_ENTRY)&_ZN7S9656C1D1Ev,
  (VTBL_ENTRY)&_ZN7S9656C1D0Ev,
  (VTBL_ENTRY)&_ZN7S9656C22v4Ev,
  (VTBL_ENTRY)&_ZN7S9656C22v5Ev,
  (VTBL_ENTRY)&_ZN7S9656C22v6Ev,
  (VTBL_ENTRY)&_ZN7S9656C12v1Ev,
  (VTBL_ENTRY)&_ZN7S9656C12v2Ev,
  (VTBL_ENTRY)&_ZN7S9656C12v3Ev,
};
extern VTBL_ENTRY _ZTI7S9656C1[];
extern  VTBL_ENTRY _ZTV7S9656C1[];
Class_Descriptor cd_S9656C1 = {  "S9656C1", // class name
  bases_S9656C1, 1,
  &(vtc_S9656C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,52), // object size
  NSPAIRA(_ZTI7S9656C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S9656C1),10, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16219C1  {
  ::S9624C14_nt s16219c1f0;
  ::S9624C14_nt s16219c1f1;
  ::S9624C35 s16219c1f2;
  char s16219c1f3[7];
  ::S9624C14_nt s16219c1f4[6];
  ::S9624C14_nt s16219c1f5[6];
  void  mf16219c1(); // _ZN8S16219C19mf16219c1Ev
};
//SIG(1 S16219C1) C1{ m FC2{ m Fp Fi FC3{ m}} FC2 FC4{ m Fp Fi[2] FC5{ m}} Fc[7] FC2[6] FC2[6]}


void  S16219C1 ::mf16219c1(){}

static void Test_S16219C1()
{
  {
    init_simple_test("S16219C1");
    S16219C1 lv;
    check2(sizeof(lv), ABISELECT(256,192), "sizeof(S16219C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16219C1)");
    check_field_offset(lv, s16219c1f0, 0, "S16219C1.s16219c1f0");
    check_field_offset(lv, s16219c1f1, ABISELECT(16,12), "S16219C1.s16219c1f1");
    check_field_offset(lv, s16219c1f2, ABISELECT(32,24), "S16219C1.s16219c1f2");
    check_field_offset(lv, s16219c1f3, ABISELECT(56,40), "S16219C1.s16219c1f3");
    check_field_offset(lv, s16219c1f4, ABISELECT(64,48), "S16219C1.s16219c1f4");
    check_field_offset(lv, s16219c1f5, ABISELECT(160,120), "S16219C1.s16219c1f5");
  }
}
static Arrange_To_Call_Me vS16219C1(Test_S16219C1, "S16219C1", ABISELECT(256,192));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3680C4  : virtual S20948C8 {
  ~S3680C4(); // tgen
  S3680C4(); // tgen
};
//SIG(-1 S3680C4) C1{ VBC2{ m Fc[7]}}


S3680C4 ::~S3680C4(){ note_dtor("S3680C4", this);} // tgen
S3680C4 ::S3680C4(){ note_ctor("S3680C4", this);} // tgen

static void Test_S3680C4()
{
  extern Class_Descriptor cd_S3680C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3680C4, buf);
    S3680C4 *dp, &lv = *(dp=new (buf) S3680C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3680C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3680C4)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S3680C4");
    test_class_info(&lv, &cd_S3680C4);
    dp->~S3680C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3680C4(Test_S3680C4, "S3680C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3680C4C1Ev();
extern void _ZN7S3680C4D1Ev();
Name_Map name_map_S3680C4[] = {
  NSPAIR(_ZN7S3680C4C1Ev),
  NSPAIR(_ZN7S3680C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S3680C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3680C4[];
static  VTBL_ENTRY vtc_S3680C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3680C4[0]),
};
extern VTBL_ENTRY _ZTV7S3680C4[];
static  VTT_ENTRY vtt_S3680C4[] = {
  {&(_ZTV7S3680C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3680C4[];
extern  VTBL_ENTRY _ZTV7S3680C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3680C4[];
Class_Descriptor cd_S3680C4 = {  "S3680C4", // class name
  bases_S3680C4, 1,
  &(vtc_S3680C4[0]), // expected_vtbl_contents
  &(vtt_S3680C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3680C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3680C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3680C4),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  S3680C6  : S9624C48 {
  ::S9624C39 s3680c6f0;
  ::S9624C48 s3680c6f1;
};
//SIG(-1 S3680C6) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S3680C6()
{
  extern Class_Descriptor cd_S3680C6;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S3680C6, buf);
    S3680C6 &lv = *(new (buf) S3680C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S3680C6)");
    check2(__alignof__(lv), 1, "__alignof__(S3680C6)");
    check_base_class_offset(lv, (S9624C48*), 0, "S3680C6");
    check_field_offset(lv, s3680c6f0, 0, "S3680C6.s3680c6f0");
    check_field_offset(lv, s3680c6f1, 1, "S3680C6.s3680c6f1");
    test_class_info(&lv, &cd_S3680C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3680C6(Test_S3680C6, "S3680C6", 2);

#else // __cplusplus

extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S3680C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3680C6[];
Class_Descriptor cd_S3680C6 = {  "S3680C6", // class name
  bases_S3680C6, 1,
  0, // no vftv
  0, //no vtt
  2, // object size
  NSPAIRA(_ZTI7S3680C6),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3680C2  : S19861C23_nt , S3680C4 , virtual S3680C6 {
  ~S3680C2(); // tgen
  S3680C2(); // tgen
};
//SIG(-1 S3680C2) C1{ BC2{ vd m Fi} BC3{ VBC4{ m Fc[7]}} VBC5{ BC6{ m} FC7{ m} FC6}}


S3680C2 ::~S3680C2(){ note_dtor("S3680C2", this);} // tgen
S3680C2 ::S3680C2(){ note_ctor("S3680C2", this);} // tgen

static void Test_S3680C2()
{
  extern Class_Descriptor cd_S3680C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S3680C2, buf);
    S3680C2 *dp, &lv = *(dp=new (buf) S3680C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3680C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3680C2)");
    check_base_class_offset(lv, (S19861C23_nt*), 0, "S3680C2");
    check_base_class_offset(lv, (S20948C8*)(S3680C4*), ABISELECT(24,12), "S3680C2");
    check_base_class_offset(lv, (S3680C4*), ABISELECT(16,8), "S3680C2");
    check_base_class_offset(lv, (S9624C48*)(S3680C6*), ABISELECT(31,19), "S3680C2");
    check_base_class_offset(lv, (S3680C6*), ABISELECT(31,19), "S3680C2");
    test_class_info(&lv, &cd_S3680C2);
    dp->~S3680C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3680C2(Test_S3680C2, "S3680C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S3680C2C1Ev();
extern void _ZN7S3680C2D1Ev();
Name_Map name_map_S3680C2[] = {
  NSPAIR(_ZN7S3680C2C1Ev),
  NSPAIR(_ZN7S3680C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3680C4;
extern VTBL_ENTRY _ZTI7S3680C4[];
extern  VTBL_ENTRY _ZTV7S3680C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3680C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3680C6;
extern VTBL_ENTRY _ZTI7S3680C6[];
static Base_Class bases_S3680C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3680C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(31,19), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3680C6,    ABISELECT(31,19), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3680C2[];
extern void _ZN7S3680C2D1Ev();
extern void _ZN7S3680C2D0Ev();
static  VTBL_ENTRY vtc_S3680C2[] = {
  ABISELECT(31,19),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3680C2[0]),
  (VTBL_ENTRY)&_ZN7S3680C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3680C2D0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3680C2[0]),
};
extern VTBL_ENTRY _ZTV7S3680C2[];
static  VTBL_ENTRY _tg__ZTV7S3680C4__7S3680C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3680C4[0]),
};
static  VTT_ENTRY vtt_S3680C2[] = {
  {&(_ZTV7S3680C2[4]),  4,9},
  {&(_tg__ZTV7S3680C4__7S3680C2[3]),  3,3},
  {&(_ZTV7S3680C2[9]),  9,9},
};
extern VTBL_ENTRY _ZTI7S3680C2[];
extern  VTBL_ENTRY _ZTV7S3680C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3680C2[];
Class_Descriptor cd_S3680C2 = {  "S3680C2", // class name
  bases_S3680C2, 5,
  &(vtc_S3680C2[0]), // expected_vtbl_contents
  &(vtt_S3680C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3680C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3680C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3680C2),3, //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  S3680C1  : S3680C2 {
  ::S10296C15_nt s3680c1f0;
  void *s3680c1f1;
  virtual  ~S3680C1(); // _ZN7S3680C1D2Ev
  S3680C1(); // tgen
};
//SIG(1 S3680C1) C1{ BC2{ BC3{ vd m Fi} BC4{ VBC5{ m Fc[7]}} VBC6{ BC7{ m} FC8{ m} FC7}} vd FC9{} Fp}


 S3680C1 ::~S3680C1(){ note_dtor("S3680C1", this);}
S3680C1 ::S3680C1(){ note_ctor("S3680C1", this);} // tgen

static void Test_S3680C1()
{
  extern Class_Descriptor cd_S3680C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,9)];
    init_test(&cd_S3680C1, buf);
    S3680C1 *dp, &lv = *(dp=new (buf) S3680C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,32), "sizeof(S3680C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3680C1)");
    check_base_class_offset(lv, (S19861C23_nt*)(S3680C2*), 0, "S3680C1");
    check_base_class_offset(lv, (S20948C8*)(S3680C4*)(S3680C2*), ABISELECT(40,20), "S3680C1");
    check_base_class_offset(lv, (S3680C4*)(S3680C2*), ABISELECT(16,8), "S3680C1");
    check_base_class_offset(lv, (S9624C48*)(S3680C6*), ABISELECT(47,27), "S3680C1");
    check_base_class_offset(lv, (S3680C6*)(S3680C2*), ABISELECT(47,27), "S3680C1");
    check_base_class_offset(lv, (S3680C2*), 0, "S3680C1");
    check_field_offset(lv, s3680c1f0, ABISELECT(24,12), "S3680C1.s3680c1f0");
    check_field_offset(lv, s3680c1f1, ABISELECT(32,16), "S3680C1.s3680c1f1");
    test_class_info(&lv, &cd_S3680C1);
    dp->~S3680C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3680C1(Test_S3680C1, "S3680C1", ABISELECT(56,32));

#else // __cplusplus

extern void _ZN7S3680C1C1Ev();
extern void _ZN7S3680C1D2Ev();
Name_Map name_map_S3680C1[] = {
  NSPAIR(_ZN7S3680C1C1Ev),
  NSPAIR(_ZN7S3680C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3680C4;
extern VTBL_ENTRY _ZTI7S3680C4[];
extern  VTBL_ENTRY _ZTV7S3680C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3680C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3680C6;
extern VTBL_ENTRY _ZTI7S3680C6[];
extern Class_Descriptor cd_S3680C2;
extern VTBL_ENTRY _ZTI7S3680C2[];
extern  VTBL_ENTRY _ZTV7S3680C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3680C2[];
static Base_Class bases_S3680C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S3680C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(47,27), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3680C6,    ABISELECT(47,27), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3680C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S3680C1[];
extern void _ZN7S3680C1D1Ev();
extern void _ZN7S3680C1D0Ev();
static  VTBL_ENTRY vtc_S3680C1[] = {
  ABISELECT(47,27),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3680C1[0]),
  (VTBL_ENTRY)&_ZN7S3680C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3680C1D0Ev,
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3680C1[0]),
};
extern VTBL_ENTRY _ZTV7S3680C1[];
extern void _ZN7S3680C2D1Ev();
extern void _ZN7S3680C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3680C2__7S3680C1[] = {
  ABISELECT(47,27),
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI7S3680C2[0]),
  (VTBL_ENTRY)&_ZN7S3680C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3680C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3680C47S3680C2__7S3680C1[] = {
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3680C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3680C4__7S3680C2__7S3680C1[] = {
  ABISELECT(24,12),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3680C2[0]),
};
static  VTT_ENTRY vtt_S3680C1[] = {
  {&(_ZTV7S3680C1[4]),  4,9},
  {&(_tg__ZTV7S3680C2__7S3680C1[4]),  4,6},
  {&(_tg__ZTV7S3680C47S3680C2__7S3680C1[3]),  3,3},
  {&(_tg__ZTV7S3680C4__7S3680C2__7S3680C1[3]),  3,3},
  {&(_ZTV7S3680C1[9]),  9,9},
};
extern VTBL_ENTRY _ZTI7S3680C1[];
extern  VTBL_ENTRY _ZTV7S3680C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3680C1[];
Class_Descriptor cd_S3680C1 = {  "S3680C1", // class name
  bases_S3680C1, 6,
  &(vtc_S3680C1[0]), // expected_vtbl_contents
  &(vtt_S3680C1[0]), // expected_vtt_contents
  ABISELECT(56,32), // object size
  NSPAIRA(_ZTI7S3680C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3680C1),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3680C1),5, //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  S18847C1  {
  ::S18795C5 s18847c1f0;
  virtual  ~S18847C1(); // _ZN8S18847C1D1Ev
  virtual void  v1(); // _ZN8S18847C12v1Ev
  virtual void  v2(); // _ZN8S18847C12v2Ev
  virtual void  v3(); // _ZN8S18847C12v3Ev
  virtual void  v4(); // _ZN8S18847C12v4Ev
  virtual void  v5(); // _ZN8S18847C12v5Ev
  virtual void  v6(); // _ZN8S18847C12v6Ev
  virtual void  v7(); // _ZN8S18847C12v7Ev
  virtual void  v8(); // _ZN8S18847C12v8Ev
  S18847C1(); // tgen
};
//SIG(1 S18847C1) C1{ vd v1 v2 v3 v4 v5 v6 v7 v8 FC2{ VBC3{ VBC4{ v11} v12} v9 v10 Fi FL Fp}}


 S18847C1 ::~S18847C1(){ note_dtor("S18847C1", this);}
void  S18847C1 ::v1(){vfunc_called(this, "_ZN8S18847C12v1Ev");}
void  S18847C1 ::v2(){vfunc_called(this, "_ZN8S18847C12v2Ev");}
void  S18847C1 ::v3(){vfunc_called(this, "_ZN8S18847C12v3Ev");}
void  S18847C1 ::v4(){vfunc_called(this, "_ZN8S18847C12v4Ev");}
void  S18847C1 ::v5(){vfunc_called(this, "_ZN8S18847C12v5Ev");}
void  S18847C1 ::v6(){vfunc_called(this, "_ZN8S18847C12v6Ev");}
void  S18847C1 ::v7(){vfunc_called(this, "_ZN8S18847C12v7Ev");}
void  S18847C1 ::v8(){vfunc_called(this, "_ZN8S18847C12v8Ev");}
S18847C1 ::S18847C1(){ note_ctor("S18847C1", this);} // tgen

static void Test_S18847C1()
{
  extern Class_Descriptor cd_S18847C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S18847C1, buf);
    S18847C1 *dp, &lv = *(dp=new (buf) S18847C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S18847C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18847C1)");
    check_field_offset(lv, s18847c1f0, ABISELECT(8,4), "S18847C1.s18847c1f0");
    test_class_info(&lv, &cd_S18847C1);
    dp->~S18847C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18847C1(Test_S18847C1, "S18847C1", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN8S18847C1C1Ev();
extern void _ZN8S18847C1D1Ev();
Name_Map name_map_S18847C1[] = {
  NSPAIR(_ZN8S18847C1C1Ev),
  NSPAIR(_ZN8S18847C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18847C1[];
extern void _ZN8S18847C1D1Ev();
extern void _ZN8S18847C1D0Ev();
extern void _ZN8S18847C12v1Ev();
extern void _ZN8S18847C12v2Ev();
extern void _ZN8S18847C12v3Ev();
extern void _ZN8S18847C12v4Ev();
extern void _ZN8S18847C12v5Ev();
extern void _ZN8S18847C12v6Ev();
extern void _ZN8S18847C12v7Ev();
extern void _ZN8S18847C12v8Ev();
static  VTBL_ENTRY vtc_S18847C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18847C1[0]),
  (VTBL_ENTRY)&_ZN8S18847C1D1Ev,
  (VTBL_ENTRY)&_ZN8S18847C1D0Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v5Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v6Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v7Ev,
  (VTBL_ENTRY)&_ZN8S18847C12v8Ev,
};
extern VTBL_ENTRY _ZTI8S18847C1[];
extern  VTBL_ENTRY _ZTV8S18847C1[];
Class_Descriptor cd_S18847C1 = {  "S18847C1", // class name
  0,0,//no base classes
  &(vtc_S18847C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI8S18847C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18847C1),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
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15743C3_nt  {
  char s15743c3f0[8];
  void  mf15743c3(); // _ZN11S15743C3_nt9mf15743c3Ev
};
//SIG(-1 S15743C3_nt) C1{ m Fc[8]}


void  S15743C3_nt ::mf15743c3(){}

//skip512 S15743C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15743C2  {
  ::S15743C3_nt s15743c2f0;
  char s15743c2f1[100];
  short s15743c2f2;
  char s15743c2f3[2];
  void  mf15743c2(); // _ZN8S15743C29mf15743c2Ev
};
//SIG(1 S15743C2) C1{ m FC2{ m Fc[8]} Fc[100] Fs Fc[2]}


void  S15743C2 ::mf15743c2(){}

static void Test_S15743C2()
{
  {
    init_simple_test("S15743C2");
    S15743C2 lv;
    check2(sizeof(lv), 112, "sizeof(S15743C2)");
    check2(__alignof__(lv), 2, "__alignof__(S15743C2)");
    check_field_offset(lv, s15743c2f0, 0, "S15743C2.s15743c2f0");
    check_field_offset(lv, s15743c2f1, 8, "S15743C2.s15743c2f1");
    check_field_offset(lv, s15743c2f2, 108, "S15743C2.s15743c2f2");
    check_field_offset(lv, s15743c2f3, 110, "S15743C2.s15743c2f3");
  }
}
static Arrange_To_Call_Me vS15743C2(Test_S15743C2, "S15743C2", 112);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15743C1  {
  ::S15743C2 s15743c1f0[4];
  ::S1540C29 s15743c1f1;
  int s15743c1f2;
  void  mf15743c1(); // _ZN8S15743C19mf15743c1Ev
};
//SIG(1 S15743C1) C1{ m FC2{ m FC3{ m Fc[8]} Fc[100] Fs Fc[2]}[4] FC4{ BC5{ m Fp Fi[2]}} Fi}


void  S15743C1 ::mf15743c1(){}

static void Test_S15743C1()
{
  {
    init_simple_test("S15743C1");
    S15743C1 lv;
    check2(sizeof(lv), ABISELECT(472,464), "sizeof(S15743C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15743C1)");
    check_field_offset(lv, s15743c1f0, 0, "S15743C1.s15743c1f0");
    check_field_offset(lv, s15743c1f1, 448, "S15743C1.s15743c1f1");
    check_field_offset(lv, s15743c1f2, ABISELECT(464,460), "S15743C1.s15743c1f2");
  }
}
static Arrange_To_Call_Me vS15743C1(Test_S15743C1, "S15743C1", ABISELECT(472,464));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21432C1  {
  ::S9859C32_nt s21432c1f0;
  ::S9857C34_nt s21432c1f1;
  ::S9624C47 s21432c1f2;
  void  mf21432c1(); // _ZN8S21432C19mf21432c1Ev
  virtual  ~S21432C1(); // _ZN8S21432C1D1Ev
  S21432C1(); // tgen
};
//SIG(1 S21432C1) C1{ vd m FC2{ m FL[4]} FC3{ m Fp FC4{ Fi[4]}} FC5{ m Fp Fi FC6{ m} FC6}}


void  S21432C1 ::mf21432c1(){}
 S21432C1 ::~S21432C1(){ note_dtor("S21432C1", this);}
S21432C1 ::S21432C1(){ note_ctor("S21432C1", this);} // tgen

static void Test_S21432C1()
{
  extern Class_Descriptor cd_S21432C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(11,18)];
    init_test(&cd_S21432C1, buf);
    S21432C1 *dp, &lv = *(dp=new (buf) S21432C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,68), "sizeof(S21432C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21432C1)");
    check_field_offset(lv, s21432c1f0, ABISELECT(8,4), "S21432C1.s21432c1f0");
    check_field_offset(lv, s21432c1f1, ABISELECT(40,36), "S21432C1.s21432c1f1");
    check_field_offset(lv, s21432c1f2, ABISELECT(64,56), "S21432C1.s21432c1f2");
    test_class_info(&lv, &cd_S21432C1);
    dp->~S21432C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21432C1(Test_S21432C1, "S21432C1", ABISELECT(80,68));

#else // __cplusplus

extern void _ZN8S21432C1C1Ev();
extern void _ZN8S21432C1D1Ev();
Name_Map name_map_S21432C1[] = {
  NSPAIR(_ZN8S21432C1C1Ev),
  NSPAIR(_ZN8S21432C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21432C1[];
extern void _ZN8S21432C1D1Ev();
extern void _ZN8S21432C1D0Ev();
static  VTBL_ENTRY vtc_S21432C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21432C1[0]),
  (VTBL_ENTRY)&_ZN8S21432C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21432C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21432C1[];
extern  VTBL_ENTRY _ZTV8S21432C1[];
Class_Descriptor cd_S21432C1 = {  "S21432C1", // class name
  0,0,//no base classes
  &(vtc_S21432C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(80,68), // object size
  NSPAIRA(_ZTI8S21432C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21432C1),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  S6888C2  {
  char s6888c2f0;
  void *s6888c2f1;
  int s6888c2f2;
  __tsi64 s6888c2f3:8;
  virtual void  v5(); // _ZN7S6888C22v5Ev
  virtual void  v6(); // _ZN7S6888C22v6Ev
  virtual void  v7(); // _ZN7S6888C22v7Ev
  virtual void  v8(); // _ZN7S6888C22v8Ev
  ~S6888C2(); // tgen
  S6888C2(); // tgen
};
//SIG(-1 S6888C2) C1{ v1 v2 v3 v4 Fc Fp Fi FL:8}


void  S6888C2 ::v5(){vfunc_called(this, "_ZN7S6888C22v5Ev");}
void  S6888C2 ::v6(){vfunc_called(this, "_ZN7S6888C22v6Ev");}
void  S6888C2 ::v7(){vfunc_called(this, "_ZN7S6888C22v7Ev");}
void  S6888C2 ::v8(){vfunc_called(this, "_ZN7S6888C22v8Ev");}
S6888C2 ::~S6888C2(){ note_dtor("S6888C2", this);} // tgen
S6888C2 ::S6888C2(){ note_ctor("S6888C2", this);} // tgen

static void Test_S6888C2()
{
  extern Class_Descriptor cd_S6888C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S6888C2, buf);
    S6888C2 *dp, &lv = *(dp=new (buf) S6888C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S6888C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6888C2)");
    check_field_offset(lv, s6888c2f0, ABISELECT(8,4), "S6888C2.s6888c2f0");
    check_field_offset(lv, s6888c2f1, ABISELECT(16,8), "S6888C2.s6888c2f1");
    check_field_offset(lv, s6888c2f2, ABISELECT(24,12), "S6888C2.s6888c2f2");
    set_bf_and_test(lv, s6888c2f3, ABISELECT(28,16), 0, 8, 1, "S6888C2");
    set_bf_and_test(lv, s6888c2f3, ABISELECT(28,16), 0, 8, hide_sll(1LL<<7), "S6888C2");
    test_class_info(&lv, &cd_S6888C2);
    dp->~S6888C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6888C2(Test_S6888C2, "S6888C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S6888C2C1Ev();
extern void _ZN7S6888C2D1Ev();
Name_Map name_map_S6888C2[] = {
  NSPAIR(_ZN7S6888C2C1Ev),
  NSPAIR(_ZN7S6888C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6888C2[];
extern void _ZN7S6888C22v5Ev();
extern void _ZN7S6888C22v6Ev();
extern void _ZN7S6888C22v7Ev();
extern void _ZN7S6888C22v8Ev();
static  VTBL_ENTRY vtc_S6888C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6888C2[0]),
  (VTBL_ENTRY)&_ZN7S6888C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6888C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6888C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6888C22v8Ev,
};
extern VTBL_ENTRY _ZTI7S6888C2[];
extern  VTBL_ENTRY _ZTV7S6888C2[];
Class_Descriptor cd_S6888C2 = {  "S6888C2", // class name
  0,0,//no base classes
  &(vtc_S6888C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S6888C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6888C2),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  S6888C4  {
  virtual void  v9(); // _ZN7S6888C42v9Ev
  ~S6888C4(); // tgen
  S6888C4(); // tgen
};
//SIG(-1 S6888C4) C1{ v1}


void  S6888C4 ::v9(){vfunc_called(this, "_ZN7S6888C42v9Ev");}
S6888C4 ::~S6888C4(){ note_dtor("S6888C4", this);} // tgen
S6888C4 ::S6888C4(){ note_ctor("S6888C4", this);} // tgen

static void Test_S6888C4()
{
  extern Class_Descriptor cd_S6888C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6888C4, buf);
    S6888C4 *dp, &lv = *(dp=new (buf) S6888C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6888C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6888C4)");
    test_class_info(&lv, &cd_S6888C4);
    dp->~S6888C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6888C4(Test_S6888C4, "S6888C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6888C4C1Ev();
extern void _ZN7S6888C4D1Ev();
Name_Map name_map_S6888C4[] = {
  NSPAIR(_ZN7S6888C4C1Ev),
  NSPAIR(_ZN7S6888C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6888C4[];
extern void _ZN7S6888C42v9Ev();
static  VTBL_ENTRY vtc_S6888C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6888C4[0]),
  (VTBL_ENTRY)&_ZN7S6888C42v9Ev,
};
extern VTBL_ENTRY _ZTI7S6888C4[];
extern  VTBL_ENTRY _ZTV7S6888C4[];
Class_Descriptor cd_S6888C4 = {  "S6888C4", // class name
  0,0,//no base classes
  &(vtc_S6888C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6888C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6888C4),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  S6888C3  : virtual S6888C4 {
  virtual void  v10(); // _ZN7S6888C33v10Ev
  ~S6888C3(); // tgen
  S6888C3(); // tgen
};
//SIG(-1 S6888C3) C1{ VBC2{ v2} v1}


void  S6888C3 ::v10(){vfunc_called(this, "_ZN7S6888C33v10Ev");}
S6888C3 ::~S6888C3(){ note_dtor("S6888C3", this);} // tgen
S6888C3 ::S6888C3(){ note_ctor("S6888C3", this);} // tgen

static void Test_S6888C3()
{
  extern Class_Descriptor cd_S6888C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S6888C3, buf);
    S6888C3 *dp, &lv = *(dp=new (buf) S6888C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S6888C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6888C3)");
    check_base_class_offset(lv, (S6888C4*), 0, "S6888C3");
    test_class_info(&lv, &cd_S6888C3);
    dp->~S6888C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6888C3(Test_S6888C3, "S6888C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S6888C3C1Ev();
extern void _ZN7S6888C3D1Ev();
Name_Map name_map_S6888C3[] = {
  NSPAIR(_ZN7S6888C3C1Ev),
  NSPAIR(_ZN7S6888C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6888C4;
extern VTBL_ENTRY _ZTI7S6888C4[];
extern  VTBL_ENTRY _ZTV7S6888C4[];
static Base_Class bases_S6888C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6888C4,    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 _ZTI7S6888C3[];
extern void _ZN7S6888C42v9Ev();
extern void _ZN7S6888C33v10Ev();
static  VTBL_ENTRY vtc_S6888C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6888C3[0]),
  (VTBL_ENTRY)&_ZN7S6888C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6888C33v10Ev,
};
extern VTBL_ENTRY _ZTV7S6888C3[];
static  VTT_ENTRY vtt_S6888C3[] = {
  {&(_ZTV7S6888C3[4]),  4,6},
  {&(_ZTV7S6888C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6888C3[];
extern  VTBL_ENTRY _ZTV7S6888C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6888C3[];
Class_Descriptor cd_S6888C3 = {  "S6888C3", // class name
  bases_S6888C3, 1,
  &(vtc_S6888C3[0]), // expected_vtbl_contents
  &(vtt_S6888C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S6888C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S6888C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6888C3),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  S6888C1  : S6888C2 , virtual S6888C3 {
  int s6888c1f0;
  virtual void  v1(); // _ZN7S6888C12v1Ev
  virtual void  v2(); // _ZN7S6888C12v2Ev
  virtual void  v3(); // _ZN7S6888C12v3Ev
  virtual void  v4(); // _ZN7S6888C12v4Ev
  ~S6888C1(); // tgen
  S6888C1(); // tgen
};
//SIG(1 S6888C1) C1{ BC2{ v5 v6 v7 v8 Fc Fp Fi FL:8} VBC3{ VBC4{ v9} v10} v1 v2 v3 v4 Fi}


void  S6888C1 ::v1(){vfunc_called(this, "_ZN7S6888C12v1Ev");}
void  S6888C1 ::v2(){vfunc_called(this, "_ZN7S6888C12v2Ev");}
void  S6888C1 ::v3(){vfunc_called(this, "_ZN7S6888C12v3Ev");}
void  S6888C1 ::v4(){vfunc_called(this, "_ZN7S6888C12v4Ev");}
S6888C1 ::~S6888C1(){ note_dtor("S6888C1", this);} // tgen
S6888C1 ::S6888C1(){ note_ctor("S6888C1", this);} // tgen

static void Test_S6888C1()
{
  extern Class_Descriptor cd_S6888C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S6888C1, buf);
    S6888C1 *dp, &lv = *(dp=new (buf) S6888C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6888C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6888C1)");
    check_base_class_offset(lv, (S6888C2*), 0, "S6888C1");
    check_base_class_offset(lv, (S6888C4*)(S6888C3*), ABISELECT(40,24), "S6888C1");
    check_base_class_offset(lv, (S6888C3*), ABISELECT(40,24), "S6888C1");
    check_field_offset(lv, s6888c1f0, ABISELECT(32,20), "S6888C1.s6888c1f0");
    test_class_info(&lv, &cd_S6888C1);
    dp->~S6888C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6888C1(Test_S6888C1, "S6888C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6888C1C1Ev();
extern void _ZN7S6888C1D1Ev();
Name_Map name_map_S6888C1[] = {
  NSPAIR(_ZN7S6888C1C1Ev),
  NSPAIR(_ZN7S6888C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6888C2;
extern VTBL_ENTRY _ZTI7S6888C2[];
extern  VTBL_ENTRY _ZTV7S6888C2[];
extern Class_Descriptor cd_S6888C4;
extern VTBL_ENTRY _ZTI7S6888C4[];
extern  VTBL_ENTRY _ZTV7S6888C4[];
extern Class_Descriptor cd_S6888C3;
extern VTBL_ENTRY _ZTI7S6888C3[];
extern  VTBL_ENTRY _ZTV7S6888C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6888C3[];
static Base_Class bases_S6888C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6888C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S6888C4,    ABISELECT(40,24), //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
    2, //immediately_derived
  0, 1},
  {&cd_S6888C3,    ABISELECT(40,24), //bcp->offset
    12, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6888C1[];
extern void _ZN7S6888C22v5Ev();
extern void _ZN7S6888C22v6Ev();
extern void _ZN7S6888C22v7Ev();
extern void _ZN7S6888C22v8Ev();
extern void _ZN7S6888C12v1Ev();
extern void _ZN7S6888C12v2Ev();
extern void _ZN7S6888C12v3Ev();
extern void _ZN7S6888C12v4Ev();
extern void _ZN7S6888C42v9Ev();
extern void _ZN7S6888C33v10Ev();
static  VTBL_ENTRY vtc_S6888C1[] = {
  ABISELECT(40,24),
  ABISELECT(40,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6888C1[0]),
  (VTBL_ENTRY)&_ZN7S6888C22v5Ev,
  (VTBL_ENTRY)&_ZN7S6888C22v6Ev,
  (VTBL_ENTRY)&_ZN7S6888C22v7Ev,
  (VTBL_ENTRY)&_ZN7S6888C22v8Ev,
  (VTBL_ENTRY)&_ZN7S6888C12v1Ev,
  (VTBL_ENTRY)&_ZN7S6888C12v2Ev,
  (VTBL_ENTRY)&_ZN7S6888C12v3Ev,
  (VTBL_ENTRY)&_ZN7S6888C12v4Ev,
  0,
  0,
  0,
  ABISELECT(-40,-24),
  (VTBL_ENTRY)&(_ZTI7S6888C1[0]),
  (VTBL_ENTRY)&_ZN7S6888C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6888C33v10Ev,
};
extern VTBL_ENTRY _ZTV7S6888C1[];
extern void _ZN7S6888C42v9Ev();
extern void _ZN7S6888C33v10Ev();
static  VTBL_ENTRY _tg__ZTV7S6888C3__7S6888C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6888C3[0]),
  (VTBL_ENTRY)&_ZN7S6888C42v9Ev,
  (VTBL_ENTRY)&_ZN7S6888C33v10Ev,
};
static  VTT_ENTRY vtt_S6888C1[] = {
  {&(_ZTV7S6888C1[4]),  4,19},
  {&(_ZTV7S6888C1[17]),  17,19},
  {&(_ZTV7S6888C1[17]),  17,19},
  {&(_tg__ZTV7S6888C3__7S6888C1[4]),  4,6},
  {&(_tg__ZTV7S6888C3__7S6888C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S6888C1[];
extern  VTBL_ENTRY _ZTV7S6888C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6888C1[];
Class_Descriptor cd_S6888C1 = {  "S6888C1", // class name
  bases_S6888C1, 3,
  &(vtc_S6888C1[0]), // expected_vtbl_contents
  &(vtt_S6888C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6888C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S6888C1),19, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6888C1),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  S5765C1  : S20031C3 {
  int s5765c1f0[3];
  char s5765c1f1;
  short s5765c1f2;
  virtual  ~S5765C1(); // _ZN7S5765C1D1Ev
  virtual void  v1(); // _ZN7S5765C12v1Ev
  S5765C1(); // tgen
};
//SIG(1 S5765C1) C1{ BC2{ m Fi Fs[8] FL[10] Fp FD Fp FL Fp[2] Fi} vd v1 Fi[3] Fc Fs}


 S5765C1 ::~S5765C1(){ note_dtor("S5765C1", this);}
void  S5765C1 ::v1(){vfunc_called(this, "_ZN7S5765C12v1Ev");}
S5765C1 ::S5765C1(){ note_ctor("S5765C1", this);} // tgen

static void Test_S5765C1()
{
  extern Class_Descriptor cd_S5765C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(14,41)];
    init_test(&cd_S5765C1, buf);
    S5765C1 *dp, &lv = *(dp=new (buf) S5765C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(208,160), "sizeof(S5765C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S5765C1)");
    check_base_class_offset(lv, (S20031C3*), ABISELECT(16,4), "S5765C1");
    check_field_offset(lv, s5765c1f0, ABISELECT(192,144), "S5765C1.s5765c1f0");
    check_field_offset(lv, s5765c1f1, ABISELECT(204,156), "S5765C1.s5765c1f1");
    check_field_offset(lv, s5765c1f2, ABISELECT(206,158), "S5765C1.s5765c1f2");
    test_class_info(&lv, &cd_S5765C1);
    dp->~S5765C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5765C1(Test_S5765C1, "S5765C1", ABISELECT(208,160));

#else // __cplusplus

extern void _ZN7S5765C1C1Ev();
extern void _ZN7S5765C1D1Ev();
Name_Map name_map_S5765C1[] = {
  NSPAIR(_ZN7S5765C1C1Ev),
  NSPAIR(_ZN7S5765C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20031C3;
extern VTBL_ENTRY _ZTI8S20031C3[];
static Base_Class bases_S5765C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20031C3,    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 _ZTI7S5765C1[];
extern void _ZN7S5765C1D1Ev();
extern void _ZN7S5765C1D0Ev();
extern void _ZN7S5765C12v1Ev();
static  VTBL_ENTRY vtc_S5765C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S5765C1[0]),
  (VTBL_ENTRY)&_ZN7S5765C1D1Ev,
  (VTBL_ENTRY)&_ZN7S5765C1D0Ev,
  (VTBL_ENTRY)&_ZN7S5765C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S5765C1[];
extern  VTBL_ENTRY _ZTV7S5765C1[];
Class_Descriptor cd_S5765C1 = {  "S5765C1", // class name
  bases_S5765C1, 1,
  &(vtc_S5765C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(208,160), // object size
  NSPAIRA(_ZTI7S5765C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S5765C1),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  S10246C2_nt  {
  virtual  ~S10246C2_nt(); // _ZN11S10246C2_ntD1Ev
  virtual void  v8(); // _ZN11S10246C2_nt2v8Ev
  virtual void  v9(); // _ZN11S10246C2_nt2v9Ev
  virtual void  v10(); // _ZN11S10246C2_nt3v10Ev
  virtual void  v11(); // _ZN11S10246C2_nt3v11Ev
  virtual void  v12(); // _ZN11S10246C2_nt3v12Ev
  virtual void  v13(); // _ZN11S10246C2_nt3v13Ev
  virtual void  v14(); // _ZN11S10246C2_nt3v14Ev
  S10246C2_nt(); // tgen
};
//SIG(-1 S10246C2_nt) C1{ vd v1 v2 v3 v4 v5 v6 v7}


 S10246C2_nt ::~S10246C2_nt(){ note_dtor("S10246C2_nt", this);}
void  S10246C2_nt ::v8(){vfunc_called(this, "_ZN11S10246C2_nt2v8Ev");}
void  S10246C2_nt ::v9(){vfunc_called(this, "_ZN11S10246C2_nt2v9Ev");}
void  S10246C2_nt ::v10(){vfunc_called(this, "_ZN11S10246C2_nt3v10Ev");}
void  S10246C2_nt ::v11(){vfunc_called(this, "_ZN11S10246C2_nt3v11Ev");}
void  S10246C2_nt ::v12(){vfunc_called(this, "_ZN11S10246C2_nt3v12Ev");}
void  S10246C2_nt ::v13(){vfunc_called(this, "_ZN11S10246C2_nt3v13Ev");}
void  S10246C2_nt ::v14(){vfunc_called(this, "_ZN11S10246C2_nt3v14Ev");}
S10246C2_nt ::S10246C2_nt(){ note_ctor("S10246C2_nt", this);} // tgen

//skip512 S10246C2_nt

#else // __cplusplus

extern void _ZN11S10246C2_ntC1Ev();
extern void _ZN11S10246C2_ntD1Ev();
Name_Map name_map_S10246C2_nt[] = {
  NSPAIR(_ZN11S10246C2_ntC1Ev),
  NSPAIR(_ZN11S10246C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI11S10246C2_nt[];
extern void _ZN11S10246C2_ntD1Ev();
extern void _ZN11S10246C2_ntD0Ev();
extern void _ZN11S10246C2_nt2v8Ev();
extern void _ZN11S10246C2_nt2v9Ev();
extern void _ZN11S10246C2_nt3v10Ev();
extern void _ZN11S10246C2_nt3v11Ev();
extern void _ZN11S10246C2_nt3v12Ev();
extern void _ZN11S10246C2_nt3v13Ev();
extern void _ZN11S10246C2_nt3v14Ev();
static  VTBL_ENTRY vtc_S10246C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI11S10246C2_nt[0]),
  (VTBL_ENTRY)&_ZN11S10246C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_ntD0Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v14Ev,
};
extern VTBL_ENTRY _ZTI11S10246C2_nt[];
VTBL_ENTRY *P__ZTI11S10246C2_nt = _ZTI11S10246C2_nt; 
extern  VTBL_ENTRY _ZTV11S10246C2_nt[];
Class_Descriptor cd_S10246C2_nt = {  "S10246C2_nt", // class name
  0,0,//no base classes
  &(vtc_S10246C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S10246C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV11S10246C2_nt),11, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10246C1  : S10246C2_nt {
  void *s10246c1f0;
  virtual  ~S10246C1(); // _ZN8S10246C1D1Ev
  virtual void  v1(); // _ZN8S10246C12v1Ev
  virtual void  v2(); // _ZN8S10246C12v2Ev
  virtual void  v3(); // _ZN8S10246C12v3Ev
  virtual void  v4(); // _ZN8S10246C12v4Ev
  virtual void  v5(); // _ZN8S10246C12v5Ev
  virtual void  v6(); // _ZN8S10246C12v6Ev
  virtual void  v7(); // _ZN8S10246C12v7Ev
  S10246C1(); // tgen
};
//SIG(1 S10246C1) C1{ BC2{ vd v8 v9 v10 v11 v12 v13 v14} vd v1 v2 v3 v4 v5 v6 v7 Fp}


 S10246C1 ::~S10246C1(){ note_dtor("S10246C1", this);}
void  S10246C1 ::v1(){vfunc_called(this, "_ZN8S10246C12v1Ev");}
void  S10246C1 ::v2(){vfunc_called(this, "_ZN8S10246C12v2Ev");}
void  S10246C1 ::v3(){vfunc_called(this, "_ZN8S10246C12v3Ev");}
void  S10246C1 ::v4(){vfunc_called(this, "_ZN8S10246C12v4Ev");}
void  S10246C1 ::v5(){vfunc_called(this, "_ZN8S10246C12v5Ev");}
void  S10246C1 ::v6(){vfunc_called(this, "_ZN8S10246C12v6Ev");}
void  S10246C1 ::v7(){vfunc_called(this, "_ZN8S10246C12v7Ev");}
S10246C1 ::S10246C1(){ note_ctor("S10246C1", this);} // tgen

static void Test_S10246C1()
{
  extern Class_Descriptor cd_S10246C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S10246C1, buf);
    S10246C1 *dp, &lv = *(dp=new (buf) S10246C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S10246C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10246C1)");
    check_base_class_offset(lv, (S10246C2_nt*), 0, "S10246C1");
    check_field_offset(lv, s10246c1f0, ABISELECT(8,4), "S10246C1.s10246c1f0");
    test_class_info(&lv, &cd_S10246C1);
    dp->~S10246C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS10246C1(Test_S10246C1, "S10246C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S10246C1C1Ev();
extern void _ZN8S10246C1D1Ev();
Name_Map name_map_S10246C1[] = {
  NSPAIR(_ZN8S10246C1C1Ev),
  NSPAIR(_ZN8S10246C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S10246C2_nt;
extern VTBL_ENTRY _ZTI11S10246C2_nt[];
extern  VTBL_ENTRY _ZTV11S10246C2_nt[];
static Base_Class bases_S10246C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S10246C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S10246C1[];
extern void _ZN8S10246C1D1Ev();
extern void _ZN8S10246C1D0Ev();
extern void _ZN11S10246C2_nt2v8Ev();
extern void _ZN11S10246C2_nt2v9Ev();
extern void _ZN11S10246C2_nt3v10Ev();
extern void _ZN11S10246C2_nt3v11Ev();
extern void _ZN11S10246C2_nt3v12Ev();
extern void _ZN11S10246C2_nt3v13Ev();
extern void _ZN11S10246C2_nt3v14Ev();
extern void _ZN8S10246C12v1Ev();
extern void _ZN8S10246C12v2Ev();
extern void _ZN8S10246C12v3Ev();
extern void _ZN8S10246C12v4Ev();
extern void _ZN8S10246C12v5Ev();
extern void _ZN8S10246C12v6Ev();
extern void _ZN8S10246C12v7Ev();
static  VTBL_ENTRY vtc_S10246C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S10246C1[0]),
  (VTBL_ENTRY)&_ZN8S10246C1D1Ev,
  (VTBL_ENTRY)&_ZN8S10246C1D0Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt2v8Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt2v9Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v10Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v11Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v12Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v13Ev,
  (VTBL_ENTRY)&_ZN11S10246C2_nt3v14Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v1Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v2Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v3Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v4Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v5Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v6Ev,
  (VTBL_ENTRY)&_ZN8S10246C12v7Ev,
};
extern VTBL_ENTRY _ZTI8S10246C1[];
extern  VTBL_ENTRY _ZTV8S10246C1[];
Class_Descriptor cd_S10246C1 = {  "S10246C1", // class name
  bases_S10246C1, 1,
  &(vtc_S10246C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S10246C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV8S10246C1),18, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3679C4  : virtual S20948C8 {
  ~S3679C4(); // tgen
  S3679C4(); // tgen
};
//SIG(-1 S3679C4) C1{ VBC2{ m Fc[7]}}


S3679C4 ::~S3679C4(){ note_dtor("S3679C4", this);} // tgen
S3679C4 ::S3679C4(){ note_ctor("S3679C4", this);} // tgen

static void Test_S3679C4()
{
  extern Class_Descriptor cd_S3679C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S3679C4, buf);
    S3679C4 *dp, &lv = *(dp=new (buf) S3679C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S3679C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3679C4)");
    check_base_class_offset(lv, (S20948C8*), ABISELECT(8,4), "S3679C4");
    test_class_info(&lv, &cd_S3679C4);
    dp->~S3679C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3679C4(Test_S3679C4, "S3679C4", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S3679C4C1Ev();
extern void _ZN7S3679C4D1Ev();
Name_Map name_map_S3679C4[] = {
  NSPAIR(_ZN7S3679C4C1Ev),
  NSPAIR(_ZN7S3679C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
static Base_Class bases_S3679C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20948C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3679C4[];
static  VTBL_ENTRY vtc_S3679C4[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C4[0]),
};
extern VTBL_ENTRY _ZTV7S3679C4[];
static  VTT_ENTRY vtt_S3679C4[] = {
  {&(_ZTV7S3679C4[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S3679C4[];
extern  VTBL_ENTRY _ZTV7S3679C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C4[];
Class_Descriptor cd_S3679C4 = {  "S3679C4", // class name
  bases_S3679C4, 1,
  &(vtc_S3679C4[0]), // expected_vtbl_contents
  &(vtt_S3679C4[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S3679C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S3679C4),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3679C4),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  S3679C6  : S9624C48 {
  ::S9624C39 s3679c6f0;
  ::S9624C48 s3679c6f1;
};
//SIG(-1 S3679C6) C1{ BC2{ m} FC3{ m} FC2}



static void Test_S3679C6()
{
  extern Class_Descriptor cd_S3679C6;
  void *lvp;
  {
    char buf[2];
    init_test(&cd_S3679C6, buf);
    S3679C6 &lv = *(new (buf) S3679C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), 2, "sizeof(S3679C6)");
    check2(__alignof__(lv), 1, "__alignof__(S3679C6)");
    check_base_class_offset(lv, (S9624C48*), 0, "S3679C6");
    check_field_offset(lv, s3679c6f0, 0, "S3679C6.s3679c6f0");
    check_field_offset(lv, s3679c6f1, 1, "S3679C6.s3679c6f1");
    test_class_info(&lv, &cd_S3679C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3679C6(Test_S3679C6, "S3679C6", 2);

#else // __cplusplus

extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S3679C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3679C6[];
Class_Descriptor cd_S3679C6 = {  "S3679C6", // class name
  bases_S3679C6, 1,
  0, // no vftv
  0, //no vtt
  2, // object size
  NSPAIRA(_ZTI7S3679C6),ABISELECT(24,12), //typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3679C2  : S19861C23_nt , S3679C4 , virtual S3679C6 {
  ~S3679C2(); // tgen
  S3679C2(); // tgen
};
//SIG(-1 S3679C2) C1{ BC2{ vd m Fi} BC3{ VBC4{ m Fc[7]}} VBC5{ BC6{ m} FC7{ m} FC6}}


S3679C2 ::~S3679C2(){ note_dtor("S3679C2", this);} // tgen
S3679C2 ::S3679C2(){ note_ctor("S3679C2", this);} // tgen

static void Test_S3679C2()
{
  extern Class_Descriptor cd_S3679C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S3679C2, buf);
    S3679C2 *dp, &lv = *(dp=new (buf) S3679C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S3679C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3679C2)");
    check_base_class_offset(lv, (S19861C23_nt*), 0, "S3679C2");
    check_base_class_offset(lv, (S20948C8*)(S3679C4*), ABISELECT(24,12), "S3679C2");
    check_base_class_offset(lv, (S3679C4*), ABISELECT(16,8), "S3679C2");
    check_base_class_offset(lv, (S9624C48*)(S3679C6*), ABISELECT(31,19), "S3679C2");
    check_base_class_offset(lv, (S3679C6*), ABISELECT(31,19), "S3679C2");
    test_class_info(&lv, &cd_S3679C2);
    dp->~S3679C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3679C2(Test_S3679C2, "S3679C2", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S3679C2C1Ev();
extern void _ZN7S3679C2D1Ev();
Name_Map name_map_S3679C2[] = {
  NSPAIR(_ZN7S3679C2C1Ev),
  NSPAIR(_ZN7S3679C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3679C4;
extern VTBL_ENTRY _ZTI7S3679C4[];
extern  VTBL_ENTRY _ZTV7S3679C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3679C6;
extern VTBL_ENTRY _ZTI7S3679C6[];
static Base_Class bases_S3679C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20948C8,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    2, //immediately_derived
  0, 1},
  {&cd_S3679C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    ABISELECT(31,19), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3679C6,    ABISELECT(31,19), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI7S3679C2[];
extern void _ZN7S3679C2D1Ev();
extern void _ZN7S3679C2D0Ev();
static  VTBL_ENTRY vtc_S3679C2[] = {
  ABISELECT(31,19),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C2[0]),
  (VTBL_ENTRY)&_ZN7S3679C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3679C2D0Ev,
  ABISELECT(8,4),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3679C2[0]),
};
extern VTBL_ENTRY _ZTV7S3679C2[];
static  VTBL_ENTRY _tg__ZTV7S3679C4__7S3679C2[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C4[0]),
};
static  VTT_ENTRY vtt_S3679C2[] = {
  {&(_ZTV7S3679C2[4]),  4,9},
  {&(_tg__ZTV7S3679C4__7S3679C2[3]),  3,3},
  {&(_ZTV7S3679C2[9]),  9,9},
};
extern VTBL_ENTRY _ZTI7S3679C2[];
extern  VTBL_ENTRY _ZTV7S3679C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C2[];
Class_Descriptor cd_S3679C2 = {  "S3679C2", // class name
  bases_S3679C2, 5,
  &(vtc_S3679C2[0]), // expected_vtbl_contents
  &(vtt_S3679C2[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S3679C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S3679C2),9, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3679C2),3, //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  S3679C1  : S3679C2 , S3679C4 {
  ~S3679C1(); // tgen
  S3679C1(); // tgen
};
//SIG(1 S3679C1) C1{ BC2{ BC3{ vd m Fi} BC4{ VBC5{ m Fc[7]}} VBC6{ BC7{ m} FC8{ m} FC7}} BC4}


S3679C1 ::~S3679C1(){ note_dtor("S3679C1", this);} // tgen
S3679C1 ::S3679C1(){ note_ctor("S3679C1", this);} // tgen

static void Test_S3679C1()
{
  extern Class_Descriptor cd_S3679C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S3679C1, buf);
    S3679C1 *dp, &lv = *(dp=new (buf) S3679C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S3679C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3679C1)");
    check_base_class_offset(lv, (S19861C23_nt*)(S3679C2*), 0, "S3679C1");
    check_base_class_offset(lv, (S20948C8*)(S3679C4*)(S3679C2*), ABISELECT(32,16), "S3679C1");
    /*is_ambiguous_... S3679C1::S3679C4 */ AMB_check_base_class_offset(lv, (S20948C8*)(S3679C4*), ABISELECT(32,16), "S3679C1");
    check_base_class_offset(lv, (S3679C4*)(S3679C2*), ABISELECT(16,8), "S3679C1");
    check_base_class_offset(lv, (S9624C48*)(S3679C6*), ABISELECT(39,23), "S3679C1");
    check_base_class_offset(lv, (S3679C6*)(S3679C2*), ABISELECT(39,23), "S3679C1");
    check_base_class_offset(lv, (S3679C2*), 0, "S3679C1");
    /*is_ambiguous_... S3679C1::S3679C4 */ AMB_check_base_class_offset(lv, (S3679C4*), ABISELECT(24,12), "S3679C1");
    test_class_info(&lv, &cd_S3679C1);
    dp->~S3679C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3679C1(Test_S3679C1, "S3679C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S3679C1C1Ev();
extern void _ZN7S3679C1D1Ev();
Name_Map name_map_S3679C1[] = {
  NSPAIR(_ZN7S3679C1C1Ev),
  NSPAIR(_ZN7S3679C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S20948C8;
extern VTBL_ENTRY _ZTI8S20948C8[];
extern Class_Descriptor cd_S3679C4;
extern VTBL_ENTRY _ZTI7S3679C4[];
extern  VTBL_ENTRY _ZTV7S3679C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C4[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S3679C6;
extern VTBL_ENTRY _ZTI7S3679C6[];
extern Class_Descriptor cd_S3679C2;
extern VTBL_ENTRY _ZTI7S3679C2[];
extern  VTBL_ENTRY _ZTV7S3679C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C2[];
extern Class_Descriptor cd_S3679C4;
extern VTBL_ENTRY _ZTI7S3679C4[];
extern  VTBL_ENTRY _ZTV7S3679C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C4[];
static Base_Class bases_S3679C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20948C8,    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
    2, //immediately_derived
  0, 1},
  {&cd_S3679C4,    ABISELECT(16,8), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    5, //immediately_derived
  0, 0},
  {&cd_S9624C48,    ABISELECT(39,23), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3679C6,    ABISELECT(39,23), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S3679C2,    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_S3679C4,    ABISELECT(24,12), //bcp->offset
    9, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S3679C1[];
extern void _ZN7S3679C1D1Ev();
extern void _ZN7S3679C1D0Ev();
static  VTBL_ENTRY vtc_S3679C1[] = {
  ABISELECT(39,23),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C1[0]),
  (VTBL_ENTRY)&_ZN7S3679C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3679C1D0Ev,
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3679C1[0]),
  ABISELECT(8,4),
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI7S3679C1[0]),
};
extern VTBL_ENTRY _ZTV7S3679C1[];
extern void _ZN7S3679C2D1Ev();
extern void _ZN7S3679C2D0Ev();
static  VTBL_ENTRY _tg__ZTV7S3679C2__7S3679C1[] = {
  ABISELECT(39,23),
  ABISELECT(32,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C2[0]),
  (VTBL_ENTRY)&_ZN7S3679C2D1Ev,
  (VTBL_ENTRY)&_ZN7S3679C2D0Ev,
};
static  VTBL_ENTRY _tg__ZTV7S3679C47S3679C2__7S3679C1[] = {
  ABISELECT(16,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C4[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3679C4__7S3679C2__7S3679C1[] = {
  ABISELECT(16,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S3679C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S3679C4__A1__7S3679C1[] = {
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI7S3679C4[0]),
};
static  VTT_ENTRY vtt_S3679C1[] = {
  {&(_ZTV7S3679C1[4]),  4,12},
  {&(_tg__ZTV7S3679C2__7S3679C1[4]),  4,6},
  {&(_tg__ZTV7S3679C47S3679C2__7S3679C1[3]),  3,3},
  {&(_tg__ZTV7S3679C4__7S3679C2__7S3679C1[3]),  3,3},
  {&(_tg__ZTV7S3679C4__A1__7S3679C1[3]),  3,3},
  {&(_ZTV7S3679C1[9]),  9,12},
  {&(_ZTV7S3679C1[12]),  12,12},
};
extern VTBL_ENTRY _ZTI7S3679C1[];
extern  VTBL_ENTRY _ZTV7S3679C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S3679C1[];
Class_Descriptor cd_S3679C1 = {  "S3679C1", // class name
  bases_S3679C1, 7,
  &(vtc_S3679C1[0]), // expected_vtbl_contents
  &(vtt_S3679C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S3679C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S3679C1),12, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S3679C1),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  S15120C2  {
  int s15120c2f0[2];
  ::S9624C35 s15120c2f1;
  void  mf15120c2(); // _ZN8S15120C29mf15120c2Ev
};
//SIG(-1 S15120C2) C1{ m Fi[2] FC2{ m Fp Fi[2] FC3{ m}}}


void  S15120C2 ::mf15120c2(){}

static void Test_S15120C2()
{
  {
    init_simple_test("S15120C2");
    S15120C2 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15120C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15120C2)");
    check_field_offset(lv, s15120c2f0, 0, "S15120C2.s15120c2f0");
    check_field_offset(lv, s15120c2f1, 8, "S15120C2.s15120c2f1");
  }
}
static Arrange_To_Call_Me vS15120C2(Test_S15120C2, "S15120C2", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15120C1  {
  char s15120c1f0;
  __tsi64 s15120c1f1;
  int s15120c1f2;
  ::S15120C2 s15120c1f3;
  __tsi64 s15120c1f4[2];
  int s15120c1f5;
  char s15120c1f6;
  void  mf15120c1(); // _ZN8S15120C19mf15120c1Ev
};
//SIG(1 S15120C1) C1{ m Fc FL Fi FC2{ m Fi[2] FC3{ m Fp Fi[2] FC4{ m}}} FL[2] Fi Fc}


void  S15120C1 ::mf15120c1(){}

static void Test_S15120C1()
{
  {
    init_simple_test("S15120C1");
    S15120C1 lv;
    check2(sizeof(lv), ABISELECT(80,64), "sizeof(S15120C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15120C1)");
    check_field_offset(lv, s15120c1f0, 0, "S15120C1.s15120c1f0");
    check_field_offset(lv, s15120c1f1, ABISELECT(8,4), "S15120C1.s15120c1f1");
    check_field_offset(lv, s15120c1f2, ABISELECT(16,12), "S15120C1.s15120c1f2");
    check_field_offset(lv, s15120c1f3, ABISELECT(24,16), "S15120C1.s15120c1f3");
    check_field_offset(lv, s15120c1f4, ABISELECT(56,40), "S15120C1.s15120c1f4");
    check_field_offset(lv, s15120c1f5, ABISELECT(72,56), "S15120C1.s15120c1f5");
    check_field_offset(lv, s15120c1f6, ABISELECT(76,60), "S15120C1.s15120c1f6");
  }
}
static Arrange_To_Call_Me vS15120C1(Test_S15120C1, "S15120C1", ABISELECT(80,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15542C2  {
  int s15542c2f0;
  ::S9624C14_nt s15542c2f1;
  ::S9624C14_nt s15542c2f2;
  ::S9624C14_nt s15542c2f3;
  short s15542c2f4;
  char s15542c2f5[2];
  int s15542c2f6[2];
};
//SIG(-1 S15542C2) C1{ Fi FC2{ m Fp Fi FC3{ m}} FC2 FC2 Fs Fc[2] Fi[2]}



static void Test_S15542C2()
{
  {
    init_simple_test("S15542C2");
    S15542C2 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S15542C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15542C2)");
    check_field_offset(lv, s15542c2f0, 0, "S15542C2.s15542c2f0");
    check_field_offset(lv, s15542c2f1, ABISELECT(8,4), "S15542C2.s15542c2f1");
    check_field_offset(lv, s15542c2f2, ABISELECT(24,16), "S15542C2.s15542c2f2");
    check_field_offset(lv, s15542c2f3, ABISELECT(40,28), "S15542C2.s15542c2f3");
    check_field_offset(lv, s15542c2f4, ABISELECT(56,40), "S15542C2.s15542c2f4");
    check_field_offset(lv, s15542c2f5, ABISELECT(58,42), "S15542C2.s15542c2f5");
    check_field_offset(lv, s15542c2f6, ABISELECT(60,44), "S15542C2.s15542c2f6");
  }
}
static Arrange_To_Call_Me vS15542C2(Test_S15542C2, "S15542C2", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15542C1  {
  ::S15542C2 s15542c1f0;
  int s15542c1f1[3];
  void  mf15542c1(); // _ZN8S15542C19mf15542c1Ev
};
//SIG(1 S15542C1) C1{ m FC2{ Fi FC3{ m Fp Fi FC4{ m}} FC3 FC3 Fs Fc[2] Fi[2]} Fi[3]}


void  S15542C1 ::mf15542c1(){}

static void Test_S15542C1()
{
  {
    init_simple_test("S15542C1");
    S15542C1 lv;
    check2(sizeof(lv), ABISELECT(88,64), "sizeof(S15542C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15542C1)");
    check_field_offset(lv, s15542c1f0, 0, "S15542C1.s15542c1f0");
    check_field_offset(lv, s15542c1f1, ABISELECT(72,52), "S15542C1.s15542c1f1");
  }
}
static Arrange_To_Call_Me vS15542C1(Test_S15542C1, "S15542C1", ABISELECT(88,64));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17486C7  : S1540C8_nt {
};
//SIG(-1 S17486C7) C1{ BC2{ m Fp Fi[2]}}



static void Test_S17486C7()
{
  extern Class_Descriptor cd_S17486C7;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S17486C7, buf);
    S17486C7 &lv = *(new (buf) S17486C7());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S17486C7)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17486C7)");
    check_base_class_offset(lv, (S1540C8_nt*), 0, "S17486C7");
    test_class_info(&lv, &cd_S17486C7);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17486C7(Test_S17486C7, "S17486C7", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
static Base_Class bases_S17486C7[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S17486C7 = {  "S17486C7", // class name
  bases_S17486C7, 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  S17486C6  : S17486C7 {
};
//SIG(-1 S17486C6) C1{ BC2{ BC3{ m Fp Fi[2]}}}



static void Test_S17486C6()
{
  extern Class_Descriptor cd_S17486C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S17486C6, buf);
    S17486C6 &lv = *(new (buf) S17486C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S17486C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17486C6)");
    check_base_class_offset(lv, (S1540C8_nt*)(S17486C7*), 0, "S17486C6");
    check_base_class_offset(lv, (S17486C7*), 0, "S17486C6");
    test_class_info(&lv, &cd_S17486C6);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS17486C6(Test_S17486C6, "S17486C6", ABISELECT(16,12));

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
extern Class_Descriptor cd_S17486C7;
static Base_Class bases_S17486C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S17486C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S17486C6 = {  "S17486C6", // class name
  bases_S17486C6, 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  S17486C5_nt  : S17486C6 {
};
//SIG(-1 S17486C5_nt) C1{ BC2{ BC3{ BC4{ m Fp Fi[2]}}}}



//skip512 S17486C5_nt

#else // __cplusplus

extern Class_Descriptor cd_S1540C8_nt;
extern Class_Descriptor cd_S17486C7;
extern Class_Descriptor cd_S17486C6;
static Base_Class bases_S17486C5_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C8_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S17486C7,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S17486C6,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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  S17486C1  {
  void *s17486c1f0;
  ::S1540C28 s17486c1f1;
  ::S17486C5_nt s17486c1f2;
  int s17486c1f3;
  unsigned int s17486c1f4:1;
  void  mf17486c1(); // _ZN8S17486C19mf17486c1Ev
};
//SIG(1 S17486C1) C1{ m Fp FC2{ BC3{ BC4{ m Fp Fi[2]}}} FC5{ BC6{ BC7{ BC4}}} Fi Fi:1}


void  S17486C1 ::mf17486c1(){}

static void Test_S17486C1()
{
  {
    init_simple_test("S17486C1");
    static S17486C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S17486C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17486C1)");
    check_field_offset(lv, s17486c1f0, 0, "S17486C1.s17486c1f0");
    check_field_offset(lv, s17486c1f1, ABISELECT(8,4), "S17486C1.s17486c1f1");
    check_field_offset(lv, s17486c1f2, ABISELECT(24,16), "S17486C1.s17486c1f2");
    check_field_offset(lv, s17486c1f3, ABISELECT(40,28), "S17486C1.s17486c1f3");
    set_bf_and_test(lv, s17486c1f4, ABISELECT(44,32), 0, 1, 1, "S17486C1");
  }
}
static Arrange_To_Call_Me vS17486C1(Test_S17486C1, "S17486C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18259C3  {
  ::S9624C14_nt s18259c3f0;
  __tsi64 s18259c3f1[2];
  void  mf18259c3(); // _ZN8S18259C39mf18259c3Ev
};
//SIG(-1 S18259C3) C1{ m FC2{ m Fp Fi FC3{ m}} FL[2]}


void  S18259C3 ::mf18259c3(){}

static void Test_S18259C3()
{
  {
    init_simple_test("S18259C3");
    S18259C3 lv;
    check2(sizeof(lv), ABISELECT(32,28), "sizeof(S18259C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18259C3)");
    check_field_offset(lv, s18259c3f0, 0, "S18259C3.s18259c3f0");
    check_field_offset(lv, s18259c3f1, ABISELECT(16,12), "S18259C3.s18259c3f1");
  }
}
static Arrange_To_Call_Me vS18259C3(Test_S18259C3, "S18259C3", ABISELECT(32,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18259C2  {
  __tsi64 s18259c2f0;
  ::S18259C3 s18259c2f1;
  void  mf18259c2(); // _ZN8S18259C29mf18259c2Ev
};
//SIG(-1 S18259C2) C1{ m FL FC2{ m FC3{ m Fp Fi FC4{ m}} FL[2]}}


void  S18259C2 ::mf18259c2(){}

static void Test_S18259C2()
{
  {
    init_simple_test("S18259C2");
    S18259C2 lv;
    check2(sizeof(lv), ABISELECT(40,36), "sizeof(S18259C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18259C2)");
    check_field_offset(lv, s18259c2f0, 0, "S18259C2.s18259c2f0");
    check_field_offset(lv, s18259c2f1, 8, "S18259C2.s18259c2f1");
  }
}
static Arrange_To_Call_Me vS18259C2(Test_S18259C2, "S18259C2", ABISELECT(40,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18259C1  {
  void *s18259c1f0[3];
  ::S18259C2 s18259c1f1;
  char s18259c1f2[2];
  void  mf18259c1(); // _ZN8S18259C19mf18259c1Ev
};
//SIG(1 S18259C1) C1{ m Fp[3] FC2{ m FL FC3{ m FC4{ m Fp Fi FC5{ m}} FL[2]}} Fc[2]}


void  S18259C1 ::mf18259c1(){}

static void Test_S18259C1()
{
  {
    init_simple_test("S18259C1");
    S18259C1 lv;
    check2(sizeof(lv), ABISELECT(72,52), "sizeof(S18259C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18259C1)");
    check_field_offset(lv, s18259c1f0, 0, "S18259C1.s18259c1f0");
    check_field_offset(lv, s18259c1f1, ABISELECT(24,12), "S18259C1.s18259c1f1");
    check_field_offset(lv, s18259c1f2, ABISELECT(64,48), "S18259C1.s18259c1f2");
  }
}
static Arrange_To_Call_Me vS18259C1(Test_S18259C1, "S18259C1", ABISELECT(72,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3791C2_nt  : S19861C23_nt {
  int s3791c2f0;
  virtual  ~S3791C2_nt(); // _ZN10S3791C2_ntD1Ev
  S3791C2_nt(); // tgen
};
//SIG(-1 S3791C2_nt) C1{ BC2{ vd m Fi} vd Fi}


 S3791C2_nt ::~S3791C2_nt(){ note_dtor("S3791C2_nt", this);}
S3791C2_nt ::S3791C2_nt(){ note_ctor("S3791C2_nt", this);} // tgen

//skip512 S3791C2_nt

#else // __cplusplus

extern void _ZN10S3791C2_ntC1Ev();
extern void _ZN10S3791C2_ntD1Ev();
Name_Map name_map_S3791C2_nt[] = {
  NSPAIR(_ZN10S3791C2_ntC1Ev),
  NSPAIR(_ZN10S3791C2_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
static Base_Class bases_S3791C2_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI10S3791C2_nt[];
extern void _ZN10S3791C2_ntD1Ev();
extern void _ZN10S3791C2_ntD0Ev();
static  VTBL_ENTRY vtc_S3791C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S3791C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S3791C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S3791C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S3791C2_nt[];
VTBL_ENTRY *P__ZTI10S3791C2_nt = _ZTI10S3791C2_nt; 
extern  VTBL_ENTRY _ZTV10S3791C2_nt[];
Class_Descriptor cd_S3791C2_nt = {  "S3791C2_nt", // class name
  bases_S3791C2_nt, 1,
  &(vtc_S3791C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S3791C2_nt),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV10S3791C2_nt),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S3791C1  : S3791C2_nt {
  void *s3791c1f0;
  int s3791c1f1;
  ::S9624C35 s3791c1f2;
  virtual  ~S3791C1(); // _ZN7S3791C1D1Ev
  S3791C1(); // tgen
};
//SIG(1 S3791C1) C1{ BC2{ BC3{ vd m Fi} vd Fi} vd Fp Fi FC4{ m Fp Fi[2] FC5{ m}}}


 S3791C1 ::~S3791C1(){ note_dtor("S3791C1", this);}
S3791C1 ::S3791C1(){ note_ctor("S3791C1", this);} // tgen

static void Test_S3791C1()
{
  extern Class_Descriptor cd_S3791C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S3791C1, buf);
    S3791C1 *dp, &lv = *(dp=new (buf) S3791C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S3791C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S3791C1)");
    check_base_class_offset(lv, (S19861C23_nt*)(S3791C2_nt*), 0, "S3791C1");
    check_base_class_offset(lv, (S3791C2_nt*), 0, "S3791C1");
    check_field_offset(lv, s3791c1f0, ABISELECT(16,12), "S3791C1.s3791c1f0");
    check_field_offset(lv, s3791c1f1, ABISELECT(24,16), "S3791C1.s3791c1f1");
    check_field_offset(lv, s3791c1f2, ABISELECT(32,20), "S3791C1.s3791c1f2");
    test_class_info(&lv, &cd_S3791C1);
    dp->~S3791C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS3791C1(Test_S3791C1, "S3791C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S3791C1C1Ev();
extern void _ZN7S3791C1D1Ev();
Name_Map name_map_S3791C1[] = {
  NSPAIR(_ZN7S3791C1C1Ev),
  NSPAIR(_ZN7S3791C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
extern Class_Descriptor cd_S3791C2_nt;
extern VTBL_ENTRY _ZTI10S3791C2_nt[];
extern  VTBL_ENTRY _ZTV10S3791C2_nt[];
static Base_Class bases_S3791C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S3791C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(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 _ZTI7S3791C1[];
extern void _ZN7S3791C1D1Ev();
extern void _ZN7S3791C1D0Ev();
static  VTBL_ENTRY vtc_S3791C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S3791C1[0]),
  (VTBL_ENTRY)&_ZN7S3791C1D1Ev,
  (VTBL_ENTRY)&_ZN7S3791C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S3791C1[];
extern  VTBL_ENTRY _ZTV7S3791C1[];
Class_Descriptor cd_S3791C1 = {  "S3791C1", // class name
  bases_S3791C1, 2,
  &(vtc_S3791C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S3791C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S3791C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  2, // n_initialized_bases
  0, // has_virtual_bases
  1, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17620C1  {
  void *s17620c1f0;
  ::S9624C47 s17620c1f1;
  ::S9856C33_nt s17620c1f2;
  int s17620c1f3;
  char s17620c1f4;
  void  mf17620c1(); // _ZN8S17620C19mf17620c1Ev
};
//SIG(1 S17620C1) C1{ m Fp FC2{ m Fp Fi FC3{ m} FC3} FC4{ m FC5{ Fl[4]}} Fi Fc}


void  S17620C1 ::mf17620c1(){}

static void Test_S17620C1()
{
  {
    init_simple_test("S17620C1");
    S17620C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S17620C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17620C1)");
    check_field_offset(lv, s17620c1f0, 0, "S17620C1.s17620c1f0");
    check_field_offset(lv, s17620c1f1, ABISELECT(8,4), "S17620C1.s17620c1f1");
    check_field_offset(lv, s17620c1f2, ABISELECT(24,16), "S17620C1.s17620c1f2");
    check_field_offset(lv, s17620c1f3, ABISELECT(56,32), "S17620C1.s17620c1f3");
    check_field_offset(lv, s17620c1f4, ABISELECT(60,36), "S17620C1.s17620c1f4");
  }
}
static Arrange_To_Call_Me vS17620C1(Test_S17620C1, "S17620C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15707C1  {
  ::S9857C33_nt s15707c1f0;
  ::S9624C46_nt s15707c1f1;
  void  mf15707c1(); // _ZN8S15707C19mf15707c1Ev
};
//SIG(1 S15707C1) C1{ m FC2{ m FC3{ FL[4]}} FC4{ m FC5{ m Fp Fi FC6{ m} FC6}}}


void  S15707C1 ::mf15707c1(){}

static void Test_S15707C1()
{
  {
    init_simple_test("S15707C1");
    S15707C1 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S15707C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15707C1)");
    check_field_offset(lv, s15707c1f0, 0, "S15707C1.s15707c1f0");
    check_field_offset(lv, s15707c1f1, 32, "S15707C1.s15707c1f1");
  }
}
static Arrange_To_Call_Me vS15707C1(Test_S15707C1, "S15707C1", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6098C3  : S20489C8 , virtual S9624C48 , S20489C10_nt {
  __tsi64 s6098c3f0;
  int s6098c3f1;
  ~S6098C3(); // tgen
  S6098C3(); // tgen
};
//SIG(-1 S6098C3) C1{ BC2{ m Fi:0 Fp} VBC3{ m} BC4{ m Fi} FL Fi}


S6098C3 ::~S6098C3(){ note_dtor("S6098C3", this);} // tgen
S6098C3 ::S6098C3(){ note_ctor("S6098C3", this);} // tgen

static void Test_S6098C3()
{
  extern Class_Descriptor cd_S6098C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,7)];
    init_test(&cd_S6098C3, buf);
    S6098C3 *dp, &lv = *(dp=new (buf) S6098C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,24), "sizeof(S6098C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6098C3)");
    check_base_class_offset(lv, (S20489C8*), ABISELECT(8,4), "S6098C3");
    check_base_class_offset(lv, (S9624C48*), 0, "S6098C3");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(16,8), "S6098C3");
    check_field_offset(lv, s6098c3f0, ABISELECT(24,12), "S6098C3.s6098c3f0");
    check_field_offset(lv, s6098c3f1, ABISELECT(32,20), "S6098C3.s6098c3f1");
    test_class_info(&lv, &cd_S6098C3);
    dp->~S6098C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6098C3(Test_S6098C3, "S6098C3", ABISELECT(40,24));

#else // __cplusplus

extern void _ZN7S6098C3C1Ev();
extern void _ZN7S6098C3D1Ev();
Name_Map name_map_S6098C3[] = {
  NSPAIR(_ZN7S6098C3C1Ev),
  NSPAIR(_ZN7S6098C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S6098C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20489C10_nt,    ABISELECT(16,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6098C3[];
static  VTBL_ENTRY vtc_S6098C3[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S6098C3[0]),
};
extern VTBL_ENTRY _ZTV7S6098C3[];
static  VTT_ENTRY vtt_S6098C3[] = {
  {&(_ZTV7S6098C3[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6098C3[];
extern  VTBL_ENTRY _ZTV7S6098C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6098C3[];
Class_Descriptor cd_S6098C3 = {  "S6098C3", // class name
  bases_S6098C3, 3,
  &(vtc_S6098C3[0]), // expected_vtbl_contents
  &(vtt_S6098C3[0]), // expected_vtt_contents
  ABISELECT(40,24), // object size
  NSPAIRA(_ZTI7S6098C3),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6098C3),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6098C3),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  S6098C1  : S9624C48 , S6098C3 , virtual S20489C8 {
  virtual  ~S6098C1(); // _ZN7S6098C1D2Ev
  S6098C1(); // tgen
};
//SIG(1 S6098C1) C1{ BC2{ m} BC3{ BC4{ m Fi:0 Fp} VBC2 BC5{ m Fi} FL Fi} VBC4 vd}


 S6098C1 ::~S6098C1(){ note_dtor("S6098C1", this);}
S6098C1 ::S6098C1(){ note_ctor("S6098C1", this);} // tgen

static void Test_S6098C1()
{
  extern Class_Descriptor cd_S6098C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,8)];
    init_test(&cd_S6098C1, buf);
    S6098C1 *dp, &lv = *(dp=new (buf) S6098C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S6098C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6098C1)");
    /*is_ambiguous_... S6098C1::S9624C48 */ AMB_check_base_class_offset(lv, (S9624C48*), 0, "S6098C1");
    check_base_class_offset(lv, (S20489C8*)(S6098C3*), ABISELECT(8,4), "S6098C1");
    check_base_class_offset(lv, (S9624C48*)(S6098C3*), ABISELECT(36,24), "S6098C1");
    check_base_class_offset(lv, (S20489C10_nt*)(S6098C3*), ABISELECT(16,8), "S6098C1");
    check_base_class_offset(lv, (S6098C3*), 0, "S6098C1");
    /*is_ambiguous_... S6098C1::S20489C8 */ AMB_check_base_class_offset(lv, (S20489C8*), ABISELECT(40,24), "S6098C1");
    test_class_info(&lv, &cd_S6098C1);
    dp->~S6098C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6098C1(Test_S6098C1, "S6098C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN7S6098C1C1Ev();
extern void _ZN7S6098C1D2Ev();
Name_Map name_map_S6098C1[] = {
  NSPAIR(_ZN7S6098C1C1Ev),
  NSPAIR(_ZN7S6098C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S6098C3;
extern VTBL_ENTRY _ZTI7S6098C3[];
extern  VTBL_ENTRY _ZTV7S6098C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6098C3[];
extern Class_Descriptor cd_S20489C8;
extern VTBL_ENTRY _ZTI8S20489C8[];
static Base_Class bases_S6098C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C8,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S9624C48,    ABISELECT(36,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 1},
  {&cd_S20489C10_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
    4, //immediately_derived
  0, 0},
  {&cd_S6098C3,    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_S20489C8,    ABISELECT(40,24), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S6098C1[];
extern void _ZN7S6098C1D1Ev();
extern void _ZN7S6098C1D0Ev();
static  VTBL_ENTRY vtc_S6098C1[] = {
  ABISELECT(40,24),
  ABISELECT(36,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6098C1[0]),
  (VTBL_ENTRY)&_ZN7S6098C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6098C1D0Ev,
};
extern VTBL_ENTRY _ZTV7S6098C1[];
static  VTBL_ENTRY _tg__ZTV7S6098C3__7S6098C1[] = {
  ABISELECT(36,24),
  0,
  (VTBL_ENTRY)&(_ZTI7S6098C3[0]),
};
static  VTT_ENTRY vtt_S6098C1[] = {
  {&(_ZTV7S6098C1[4]),  4,6},
  {&(_tg__ZTV7S6098C3__7S6098C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S6098C1[];
extern  VTBL_ENTRY _ZTV7S6098C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S6098C1[];
Class_Descriptor cd_S6098C1 = {  "S6098C1", // class name
  bases_S6098C1, 6,
  &(vtc_S6098C1[0]), // expected_vtbl_contents
  &(vtt_S6098C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI7S6098C1),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV7S6098C1),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S6098C1),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  S6305C1  : S9624C48 {
  ::S9624C14_nt s6305c1f0;
  ::S10296C5_nt s6305c1f1;
  ::S1064C7_nt s6305c1f2;
  ::S9624C14_nt s6305c1f3;
  virtual  ~S6305C1(); // _ZN7S6305C1D1Ev
  S6305C1(); // tgen
};
//SIG(1 S6305C1) C1{ BC2{ m} vd FC3{ m Fp Fi FC4{ m}} FC5{ m Fp} FC6{ m Fp} FC3}


 S6305C1 ::~S6305C1(){ note_dtor("S6305C1", this);}
S6305C1 ::S6305C1(){ note_ctor("S6305C1", this);} // tgen

static void Test_S6305C1()
{
  extern Class_Descriptor cd_S6305C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(8,10)];
    init_test(&cd_S6305C1, buf);
    S6305C1 *dp, &lv = *(dp=new (buf) S6305C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(56,36), "sizeof(S6305C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6305C1)");
    check_base_class_offset(lv, (S9624C48*), 0, "S6305C1");
    check_field_offset(lv, s6305c1f0, ABISELECT(8,4), "S6305C1.s6305c1f0");
    check_field_offset(lv, s6305c1f1, ABISELECT(24,16), "S6305C1.s6305c1f1");
    check_field_offset(lv, s6305c1f2, ABISELECT(32,20), "S6305C1.s6305c1f2");
    check_field_offset(lv, s6305c1f3, ABISELECT(40,24), "S6305C1.s6305c1f3");
    test_class_info(&lv, &cd_S6305C1);
    dp->~S6305C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6305C1(Test_S6305C1, "S6305C1", ABISELECT(56,36));

#else // __cplusplus

extern void _ZN7S6305C1C1Ev();
extern void _ZN7S6305C1D1Ev();
Name_Map name_map_S6305C1[] = {
  NSPAIR(_ZN7S6305C1C1Ev),
  NSPAIR(_ZN7S6305C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S6305C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6305C1[];
extern void _ZN7S6305C1D1Ev();
extern void _ZN7S6305C1D0Ev();
static  VTBL_ENTRY vtc_S6305C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6305C1[0]),
  (VTBL_ENTRY)&_ZN7S6305C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6305C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S6305C1[];
extern  VTBL_ENTRY _ZTV7S6305C1[];
Class_Descriptor cd_S6305C1 = {  "S6305C1", // class name
  bases_S6305C1, 1,
  &(vtc_S6305C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(56,36), // object size
  NSPAIRA(_ZTI7S6305C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6305C1),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  S18344C1  {
  void *s18344c1f0[4];
  ::S17486C6 s18344c1f1;
  void *s18344c1f2;
  ::S1540C5_nt s18344c1f3;
  void  mf18344c1(); // _ZN8S18344C19mf18344c1Ev
};
//SIG(1 S18344C1) C1{ m Fp[4] FC2{ BC3{ BC4{ m Fp Fi[2]}}} Fp FC5{ m Fi[2]}}


void  S18344C1 ::mf18344c1(){}

static void Test_S18344C1()
{
  {
    init_simple_test("S18344C1");
    S18344C1 lv;
    check2(sizeof(lv), ABISELECT(64,40), "sizeof(S18344C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18344C1)");
    check_field_offset(lv, s18344c1f0, 0, "S18344C1.s18344c1f0");
    check_field_offset(lv, s18344c1f1, ABISELECT(32,16), "S18344C1.s18344c1f1");
    check_field_offset(lv, s18344c1f2, ABISELECT(48,28), "S18344C1.s18344c1f2");
    check_field_offset(lv, s18344c1f3, ABISELECT(56,32), "S18344C1.s18344c1f3");
  }
}
static Arrange_To_Call_Me vS18344C1(Test_S18344C1, "S18344C1", ABISELECT(64,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15985C1  {
  ::S1540C5_nt s15985c1f0;
  ::S17486C5_nt s15985c1f1;
  ::S17486C5_nt s15985c1f2;
  void  mf15985c1(); // _ZN8S15985C19mf15985c1Ev
};
//SIG(1 S15985C1) C1{ m FC2{ m Fi[2]} FC3{ BC4{ BC5{ BC6{ m Fp Fi[2]}}}} FC3}


void  S15985C1 ::mf15985c1(){}

static void Test_S15985C1()
{
  {
    init_simple_test("S15985C1");
    S15985C1 lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S15985C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15985C1)");
    check_field_offset(lv, s15985c1f0, 0, "S15985C1.s15985c1f0");
    check_field_offset(lv, s15985c1f1, 8, "S15985C1.s15985c1f1");
    check_field_offset(lv, s15985c1f2, ABISELECT(24,20), "S15985C1.s15985c1f2");
  }
}
static Arrange_To_Call_Me vS15985C1(Test_S15985C1, "S15985C1", ABISELECT(40,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11424C2_nt  {
  int s11424c2f0;
  void *s11424c2f1[3];
  int s11424c2f2;
  void *s11424c2f3;
  int s11424c2f4[17];
};
//SIG(-1 S11424C2_nt) C1{ Fi Fp[3] Fi Fp Fi[17]}



//skip512 S11424C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11424C3_nt  {
  long s11424c3f0;
};
//SIG(-1 S11424C3_nt) C1{ Fl}



//skip512 S11424C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11424C1  {
  ::S11424C2_nt s11424c1f0;
  long s11424c1f1;
  ::S11424C3_nt s11424c1f2;
  int s11424c1f3[2];
  void *s11424c1f4;
  int s11424c1f5;
};
//SIG(1 S11424C1) C1{ FC2{ Fi Fp[3] Fi Fp Fi[17]} Fl FC3{ Fl} Fi[2] Fp Fi}



static void Test_S11424C1()
{
  {
    init_simple_test("S11424C1");
    S11424C1 lv;
    check2(sizeof(lv), ABISELECT(160,116), "sizeof(S11424C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11424C1)");
    check_field_offset(lv, s11424c1f0, 0, "S11424C1.s11424c1f0");
    check_field_offset(lv, s11424c1f1, ABISELECT(120,92), "S11424C1.s11424c1f1");
    check_field_offset(lv, s11424c1f2, ABISELECT(128,96), "S11424C1.s11424c1f2");
    check_field_offset(lv, s11424c1f3, ABISELECT(136,100), "S11424C1.s11424c1f3");
    check_field_offset(lv, s11424c1f4, ABISELECT(144,108), "S11424C1.s11424c1f4");
    check_field_offset(lv, s11424c1f5, ABISELECT(152,112), "S11424C1.s11424c1f5");
  }
}
static Arrange_To_Call_Me vS11424C1(Test_S11424C1, "S11424C1", ABISELECT(160,116));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13696C3  {
  ::S5081C9_nt s13696c3f0;
  ::S5081C9_nt s13696c3f1;
  int s13696c3f2;
};
//SIG(-1 S13696C3) C1{ FC2{ FC3{ Fc[20]} Fc[16]} FC2 Fi}



static void Test_S13696C3()
{
  {
    init_simple_test("S13696C3");
    S13696C3 lv;
    check2(sizeof(lv), 76, "sizeof(S13696C3)");
    check2(__alignof__(lv), 4, "__alignof__(S13696C3)");
    check_field_offset(lv, s13696c3f0, 0, "S13696C3.s13696c3f0");
    check_field_offset(lv, s13696c3f1, 36, "S13696C3.s13696c3f1");
    check_field_offset(lv, s13696c3f2, 72, "S13696C3.s13696c3f2");
  }
}
static Arrange_To_Call_Me vS13696C3(Test_S13696C3, "S13696C3", 76);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13696C2  {
  ::S13696C3 s13696c2f0;
  char s13696c2f1[0];
};
//SIG(-1 S13696C2) C1{ FC2{ FC3{ FC4{ Fc[20]} Fc[16]} FC3 Fi} Fc[0]}



static void Test_S13696C2()
{
  {
    init_simple_test("S13696C2");
    S13696C2 lv;
    check2(sizeof(lv), 76, "sizeof(S13696C2)");
    check2(__alignof__(lv), 4, "__alignof__(S13696C2)");
    check_field_offset(lv, s13696c2f0, 0, "S13696C2.s13696c2f0");
    check_field_offset(lv, s13696c2f1, 76, "S13696C2.s13696c2f1");
  }
}
static Arrange_To_Call_Me vS13696C2(Test_S13696C2, "S13696C2", 76);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13696C1  {
  __tsi64 s13696c1f0;
  ::S13696C2 s13696c1f1;
};
//SIG(1 S13696C1) C1{ FL FC2{ FC3{ FC4{ FC5{ Fc[20]} Fc[16]} FC4 Fi} Fc[0]}}



static void Test_S13696C1()
{
  {
    init_simple_test("S13696C1");
    S13696C1 lv;
    check2(sizeof(lv), ABISELECT(88,84), "sizeof(S13696C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13696C1)");
    check_field_offset(lv, s13696c1f0, 0, "S13696C1.s13696c1f0");
    check_field_offset(lv, s13696c1f1, 8, "S13696C1.s13696c1f1");
  }
}
static Arrange_To_Call_Me vS13696C1(Test_S13696C1, "S13696C1", ABISELECT(88,84));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13695C1  {
  long s13695c1f0;
  ::S13696C2 s13695c1f1;
};
//SIG(1 S13695C1) C1{ Fl FC2{ FC3{ FC4{ FC5{ Fc[20]} Fc[16]} FC4 Fi} Fc[0]}}



static void Test_S13695C1()
{
  {
    init_simple_test("S13695C1");
    S13695C1 lv;
    check2(sizeof(lv), ABISELECT(88,80), "sizeof(S13695C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13695C1)");
    check_field_offset(lv, s13695c1f0, 0, "S13695C1.s13695c1f0");
    check_field_offset(lv, s13695c1f1, ABISELECT(8,4), "S13695C1.s13695c1f1");
  }
}
static Arrange_To_Call_Me vS13695C1(Test_S13695C1, "S13695C1", ABISELECT(88,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12407C1  {
  int s12407c1f0;
  ::S13696C2 s12407c1f1;
};
//SIG(1 S12407C1) C1{ Fi FC2{ FC3{ FC4{ FC5{ Fc[20]} Fc[16]} FC4 Fi} Fc[0]}}



static void Test_S12407C1()
{
  {
    init_simple_test("S12407C1");
    S12407C1 lv;
    check2(sizeof(lv), 80, "sizeof(S12407C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12407C1)");
    check_field_offset(lv, s12407c1f0, 0, "S12407C1.s12407c1f0");
    check_field_offset(lv, s12407c1f1, 4, "S12407C1.s12407c1f1");
  }
}
static Arrange_To_Call_Me vS12407C1(Test_S12407C1, "S12407C1", 80);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21051C4  {
  virtual void  v1(); // _ZN8S21051C42v1Ev
  ~S21051C4(); // tgen
  S21051C4(); // tgen
};
//SIG(-1 S21051C4) C1{ v1}


void  S21051C4 ::v1(){vfunc_called(this, "_ZN8S21051C42v1Ev");}
S21051C4 ::~S21051C4(){ note_dtor("S21051C4", this);} // tgen
S21051C4 ::S21051C4(){ note_ctor("S21051C4", this);} // tgen

static void Test_S21051C4()
{
  extern Class_Descriptor cd_S21051C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21051C4, buf);
    S21051C4 *dp, &lv = *(dp=new (buf) S21051C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21051C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21051C4)");
    test_class_info(&lv, &cd_S21051C4);
    dp->~S21051C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21051C4(Test_S21051C4, "S21051C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21051C4C1Ev();
extern void _ZN8S21051C4D1Ev();
Name_Map name_map_S21051C4[] = {
  NSPAIR(_ZN8S21051C4C1Ev),
  NSPAIR(_ZN8S21051C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21051C4[];
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY vtc_S21051C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C4[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
extern VTBL_ENTRY _ZTI8S21051C4[];
extern  VTBL_ENTRY _ZTV8S21051C4[];
Class_Descriptor cd_S21051C4 = {  "S21051C4", // class name
  0,0,//no base classes
  &(vtc_S21051C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21051C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21051C4),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  S21051C3_nt  : virtual S21051C4 {
  ~S21051C3_nt(); // tgen
  S21051C3_nt(); // tgen
};
//SIG(-1 S21051C3_nt) C1{ VBC2{ v1}}


S21051C3_nt ::~S21051C3_nt(){ note_dtor("S21051C3_nt", this);} // tgen
S21051C3_nt ::S21051C3_nt(){ note_ctor("S21051C3_nt", this);} // tgen

//skip512 S21051C3_nt

#else // __cplusplus

extern void _ZN11S21051C3_ntC1Ev();
extern void _ZN11S21051C3_ntD1Ev();
Name_Map name_map_S21051C3_nt[] = {
  NSPAIR(_ZN11S21051C3_ntC1Ev),
  NSPAIR(_ZN11S21051C3_ntD1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21051C4;
extern VTBL_ENTRY _ZTI8S21051C4[];
extern  VTBL_ENTRY _ZTV8S21051C4[];
static Base_Class bases_S21051C3_nt[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21051C4,    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 _ZTI11S21051C3_nt[];
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY vtc_S21051C3_nt[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21051C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
extern VTBL_ENTRY _ZTV11S21051C3_nt[];
static  VTT_ENTRY vtt_S21051C3_nt[] = {
  {&(_ZTV11S21051C3_nt[4]),  4,5},
  {&(_ZTV11S21051C3_nt[4]),  4,5},
};
extern VTBL_ENTRY _ZTI11S21051C3_nt[];
VTBL_ENTRY *P__ZTI11S21051C3_nt = _ZTI11S21051C3_nt; 
extern  VTBL_ENTRY _ZTV11S21051C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21051C3_nt[];
Class_Descriptor cd_S21051C3_nt = {  "S21051C3_nt", // class name
  bases_S21051C3_nt, 1,
  &(vtc_S21051C3_nt[0]), // expected_vtbl_contents
  &(vtt_S21051C3_nt[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI11S21051C3_nt),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV11S21051C3_nt),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT11S21051C3_nt),2, //virtual table table var
  1, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21051C5  : virtual S21051C4 {
  virtual void  v2(); // _ZN8S21051C52v2Ev
  ~S21051C5(); // tgen
  S21051C5(); // tgen
};
//SIG(-1 S21051C5) C1{ VBC2{ v2} v1}


void  S21051C5 ::v2(){vfunc_called(this, "_ZN8S21051C52v2Ev");}
S21051C5 ::~S21051C5(){ note_dtor("S21051C5", this);} // tgen
S21051C5 ::S21051C5(){ note_ctor("S21051C5", this);} // tgen

static void Test_S21051C5()
{
  extern Class_Descriptor cd_S21051C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21051C5, buf);
    S21051C5 *dp, &lv = *(dp=new (buf) S21051C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21051C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21051C5)");
    check_base_class_offset(lv, (S21051C4*), 0, "S21051C5");
    test_class_info(&lv, &cd_S21051C5);
    dp->~S21051C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21051C5(Test_S21051C5, "S21051C5", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21051C5C1Ev();
extern void _ZN8S21051C5D1Ev();
Name_Map name_map_S21051C5[] = {
  NSPAIR(_ZN8S21051C5C1Ev),
  NSPAIR(_ZN8S21051C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21051C4;
extern VTBL_ENTRY _ZTI8S21051C4[];
extern  VTBL_ENTRY _ZTV8S21051C4[];
static Base_Class bases_S21051C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21051C4,    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 _ZTI8S21051C5[];
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
static  VTBL_ENTRY vtc_S21051C5[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C5[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S21051C5[];
static  VTT_ENTRY vtt_S21051C5[] = {
  {&(_ZTV8S21051C5[4]),  4,6},
  {&(_ZTV8S21051C5[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21051C5[];
extern  VTBL_ENTRY _ZTV8S21051C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C5[];
Class_Descriptor cd_S21051C5 = {  "S21051C5", // class name
  bases_S21051C5, 1,
  &(vtc_S21051C5[0]), // expected_vtbl_contents
  &(vtt_S21051C5[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21051C5),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21051C5),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21051C5),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  S21051C2  : virtual S21051C3_nt , virtual S21051C5 {
  ~S21051C2(); // tgen
  S21051C2(); // tgen
};
//SIG(-1 S21051C2) C1{ VBC2{ VBC3{ v1}} VBC4{ VBC3 v2}}


S21051C2 ::~S21051C2(){ note_dtor("S21051C2", this);} // tgen
S21051C2 ::S21051C2(){ note_ctor("S21051C2", this);} // tgen

static void Test_S21051C2()
{
  extern Class_Descriptor cd_S21051C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21051C2, buf);
    S21051C2 *dp, &lv = *(dp=new (buf) S21051C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21051C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21051C2)");
    check_base_class_offset(lv, (S21051C4*)(S21051C3_nt*), 0, "S21051C2");
    check_base_class_offset(lv, (S21051C4*)(S21051C5*), 0, "S21051C2");
    check_base_class_offset(lv, (S21051C3_nt*), 0, "S21051C2");
    check_base_class_offset(lv, (S21051C5*), ABISELECT(8,4), "S21051C2");
    test_class_info(&lv, &cd_S21051C2);
    dp->~S21051C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21051C2(Test_S21051C2, "S21051C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21051C2C1Ev();
extern void _ZN8S21051C2D1Ev();
Name_Map name_map_S21051C2[] = {
  NSPAIR(_ZN8S21051C2C1Ev),
  NSPAIR(_ZN8S21051C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21051C4;
extern VTBL_ENTRY _ZTI8S21051C4[];
extern  VTBL_ENTRY _ZTV8S21051C4[];
extern Class_Descriptor cd_S21051C3_nt;
extern VTBL_ENTRY _ZTI11S21051C3_nt[];
extern  VTBL_ENTRY _ZTV11S21051C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21051C3_nt[];
extern Class_Descriptor cd_S21051C5;
extern VTBL_ENTRY _ZTI8S21051C5[];
extern  VTBL_ENTRY _ZTV8S21051C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C5[];
static Base_Class bases_S21051C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21051C4,    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_S21051C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    5, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21051C5,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21051C2[];
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
static  VTBL_ENTRY vtc_S21051C2[] = {
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C2[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21051C2[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
};
extern VTBL_ENTRY _ZTV8S21051C2[];
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY _tg__ZTV11S21051C3_nt__8S21051C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21051C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C5__8S21051C2[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C5[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
};
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C4__8S21051C5__8S21051C2[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21051C5[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
static  VTT_ENTRY vtt_S21051C2[] = {
  {&(_ZTV8S21051C2[6]),  6,14},
  {&(_ZTV8S21051C2[6]),  6,14},
  {&(_ZTV8S21051C2[6]),  6,14},
  {&(_ZTV8S21051C2[12]),  12,14},
  {&(_tg__ZTV11S21051C3_nt__8S21051C2[4]),  4,5},
  {&(_tg__ZTV11S21051C3_nt__8S21051C2[4]),  4,5},
  {&(_tg__ZTV8S21051C5__8S21051C2[4]),  4,6},
  {&(_tg__ZTV8S21051C4__8S21051C5__8S21051C2[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21051C2[];
extern  VTBL_ENTRY _ZTV8S21051C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C2[];
Class_Descriptor cd_S21051C2 = {  "S21051C2", // class name
  bases_S21051C2, 3,
  &(vtc_S21051C2[0]), // expected_vtbl_contents
  &(vtt_S21051C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21051C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21051C2),14, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21051C2),8, //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  S21051C6  : virtual S21051C5 {
  virtual void  v3(); // _ZN8S21051C62v3Ev
  ~S21051C6(); // tgen
  S21051C6(); // tgen
};
//SIG(-1 S21051C6) C1{ VBC2{ VBC3{ v2} v3} v1}


void  S21051C6 ::v3(){vfunc_called(this, "_ZN8S21051C62v3Ev");}
S21051C6 ::~S21051C6(){ note_dtor("S21051C6", this);} // tgen
S21051C6 ::S21051C6(){ note_ctor("S21051C6", this);} // tgen

static void Test_S21051C6()
{
  extern Class_Descriptor cd_S21051C6;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S21051C6, buf);
    S21051C6 *dp, &lv = *(dp=new (buf) S21051C6());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S21051C6)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21051C6)");
    check_base_class_offset(lv, (S21051C4*)(S21051C5*), 0, "S21051C6");
    check_base_class_offset(lv, (S21051C5*), 0, "S21051C6");
    test_class_info(&lv, &cd_S21051C6);
    dp->~S21051C6();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21051C6(Test_S21051C6, "S21051C6", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S21051C6C1Ev();
extern void _ZN8S21051C6D1Ev();
Name_Map name_map_S21051C6[] = {
  NSPAIR(_ZN8S21051C6C1Ev),
  NSPAIR(_ZN8S21051C6D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21051C4;
extern VTBL_ENTRY _ZTI8S21051C4[];
extern  VTBL_ENTRY _ZTV8S21051C4[];
extern Class_Descriptor cd_S21051C5;
extern VTBL_ENTRY _ZTI8S21051C5[];
extern  VTBL_ENTRY _ZTV8S21051C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C5[];
static Base_Class bases_S21051C6[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21051C4,    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_S21051C5,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21051C6[];
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
extern void _ZN8S21051C62v3Ev();
static  VTBL_ENTRY vtc_S21051C6[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C6[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21051C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S21051C6[];
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C5__8S21051C6[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C5[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
};
static  VTT_ENTRY vtt_S21051C6[] = {
  {&(_ZTV8S21051C6[6]),  6,9},
  {&(_ZTV8S21051C6[6]),  6,9},
  {&(_ZTV8S21051C6[6]),  6,9},
  {&(_tg__ZTV8S21051C5__8S21051C6[4]),  4,6},
  {&(_tg__ZTV8S21051C5__8S21051C6[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S21051C6[];
extern  VTBL_ENTRY _ZTV8S21051C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C6[];
Class_Descriptor cd_S21051C6 = {  "S21051C6", // class name
  bases_S21051C6, 2,
  &(vtc_S21051C6[0]), // expected_vtbl_contents
  &(vtt_S21051C6[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S21051C6),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S21051C6),9, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21051C6),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  S21051C1  : virtual S21051C2 , virtual S21051C6 {
  ~S21051C1(); // tgen
  S21051C1(); // tgen
};
//SIG(1 S21051C1) C1{ VBC2{ VBC3{ VBC4{ v1}} VBC5{ VBC4 v2}} VBC6{ VBC5 v3}}


S21051C1 ::~S21051C1(){ note_dtor("S21051C1", this);} // tgen
S21051C1 ::S21051C1(){ note_ctor("S21051C1", this);} // tgen

static void Test_S21051C1()
{
  extern Class_Descriptor cd_S21051C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S21051C1, buf);
    S21051C1 *dp, &lv = *(dp=new (buf) S21051C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S21051C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S21051C1)");
    check_base_class_offset(lv, (S21051C4*)(S21051C3_nt*), 0, "S21051C1");
    check_base_class_offset(lv, (S21051C4*)(S21051C5*), 0, "S21051C1");
    check_base_class_offset(lv, (S21051C3_nt*)(S21051C2*), 0, "S21051C1");
    check_base_class_offset(lv, (S21051C5*)(S21051C2*), ABISELECT(8,4), "S21051C1");
    check_base_class_offset(lv, (S21051C5*)(S21051C6*), ABISELECT(8,4), "S21051C1");
    check_base_class_offset(lv, (S21051C2*), 0, "S21051C1");
    check_base_class_offset(lv, (S21051C6*), ABISELECT(8,4), "S21051C1");
    test_class_info(&lv, &cd_S21051C1);
    dp->~S21051C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21051C1(Test_S21051C1, "S21051C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S21051C1C1Ev();
extern void _ZN8S21051C1D1Ev();
Name_Map name_map_S21051C1[] = {
  NSPAIR(_ZN8S21051C1C1Ev),
  NSPAIR(_ZN8S21051C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21051C4;
extern VTBL_ENTRY _ZTI8S21051C4[];
extern  VTBL_ENTRY _ZTV8S21051C4[];
extern Class_Descriptor cd_S21051C3_nt;
extern VTBL_ENTRY _ZTI11S21051C3_nt[];
extern  VTBL_ENTRY _ZTV11S21051C3_nt[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT11S21051C3_nt[];
extern Class_Descriptor cd_S21051C5;
extern VTBL_ENTRY _ZTI8S21051C5[];
extern  VTBL_ENTRY _ZTV8S21051C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C5[];
extern Class_Descriptor cd_S21051C2;
extern VTBL_ENTRY _ZTI8S21051C2[];
extern  VTBL_ENTRY _ZTV8S21051C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C2[];
extern Class_Descriptor cd_S21051C6;
extern VTBL_ENTRY _ZTI8S21051C6[];
extern  VTBL_ENTRY _ZTV8S21051C6[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C6[];
static Base_Class bases_S21051C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21051C4,    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_S21051C3_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    11, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21051C5,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    5, //bcp->index_in_construction_vtbl_array
    13, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S21051C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    6, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    7, //bcp->base_subarray_index_in_construction_vtbl_array
    4, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S21051C6,    ABISELECT(8,4), //bcp->offset
    9, //bcp->virtual_function_table_offset
    7, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    15, //bcp->base_subarray_index_in_construction_vtbl_array
    5, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S21051C1[];
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
extern void _ZN8S21051C62v3Ev();
static  VTBL_ENTRY vtc_S21051C1[] = {
  ABISELECT(8,4),
  0,
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C1[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  0,
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21051C1[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21051C62v3Ev,
};
extern VTBL_ENTRY _ZTV8S21051C1[];
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C2__8S21051C1[] = {
  ABISELECT(8,4),
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C2[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C5__8S21051C2__8S21051C1[] = {
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S21051C2[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
};
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY _tg__ZTV11S21051C3_nt__8S21051C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI11S21051C3_nt[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C5__8S21051C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C5[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
};
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C4__8S21051C5__8S21051C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21051C5[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
extern void _ZN8S21051C42v1Ev();
extern void _ZN8S21051C52v2Ev();
extern void _ZN8S21051C62v3Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C6__8S21051C1[] = {
  0,
  0,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S21051C6[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
  (VTBL_ENTRY)&_ZN8S21051C52v2Ev,
  (VTBL_ENTRY)&_ZN8S21051C62v3Ev,
};
extern void _ZN8S21051C42v1Ev();
static  VTBL_ENTRY _tg__ZTV8S21051C4__8S21051C6__8S21051C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI8S21051C6[0]),
  (VTBL_ENTRY)&_ZN8S21051C42v1Ev,
};
static  VTT_ENTRY vtt_S21051C1[] = {
  {&(_ZTV8S21051C1[8]),  8,19},
  {&(_ZTV8S21051C1[8]),  8,19},
  {&(_ZTV8S21051C1[8]),  8,19},
  {&(_ZTV8S21051C1[8]),  8,19},
  {&(_ZTV8S21051C1[16]),  16,19},
  {&(_ZTV8S21051C1[16]),  16,19},
  {&(_tg__ZTV8S21051C2__8S21051C1[6]),  6,7},
  {&(_tg__ZTV8S21051C2__8S21051C1[6]),  6,7},
  {&(_tg__ZTV8S21051C2__8S21051C1[6]),  6,7},
  {&(_tg__ZTV8S21051C5__8S21051C2__8S21051C1[5]),  5,7},
  {&(_tg__ZTV11S21051C3_nt__8S21051C1[4]),  4,5},
  {&(_tg__ZTV11S21051C3_nt__8S21051C1[4]),  4,5},
  {&(_tg__ZTV8S21051C5__8S21051C1[4]),  4,6},
  {&(_tg__ZTV8S21051C4__8S21051C5__8S21051C1[3]),  3,4},
  {&(_tg__ZTV8S21051C6__8S21051C1[6]),  6,9},
  {&(_tg__ZTV8S21051C6__8S21051C1[6]),  6,9},
  {&(_tg__ZTV8S21051C4__8S21051C6__8S21051C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S21051C1[];
extern  VTBL_ENTRY _ZTV8S21051C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S21051C1[];
Class_Descriptor cd_S21051C1 = {  "S21051C1", // class name
  bases_S21051C1, 5,
  &(vtc_S21051C1[0]), // expected_vtbl_contents
  &(vtt_S21051C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S21051C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S21051C1),19, //virtual function table var
  8, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S21051C1),17, //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  S7807C4  {
  virtual void  v5(); // _ZN7S7807C42v5Ev
  ~S7807C4(); // tgen
  S7807C4(); // tgen
};
//SIG(-1 S7807C4) C1{ v1}


void  S7807C4 ::v5(){vfunc_called(this, "_ZN7S7807C42v5Ev");}
S7807C4 ::~S7807C4(){ note_dtor("S7807C4", this);} // tgen
S7807C4 ::S7807C4(){ note_ctor("S7807C4", this);} // tgen

static void Test_S7807C4()
{
  extern Class_Descriptor cd_S7807C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7807C4, buf);
    S7807C4 *dp, &lv = *(dp=new (buf) S7807C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7807C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7807C4)");
    test_class_info(&lv, &cd_S7807C4);
    dp->~S7807C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7807C4(Test_S7807C4, "S7807C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7807C4C1Ev();
extern void _ZN7S7807C4D1Ev();
Name_Map name_map_S7807C4[] = {
  NSPAIR(_ZN7S7807C4C1Ev),
  NSPAIR(_ZN7S7807C4D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7807C4[];
extern void _ZN7S7807C42v5Ev();
static  VTBL_ENTRY vtc_S7807C4[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C4[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
};
extern VTBL_ENTRY _ZTI7S7807C4[];
extern  VTBL_ENTRY _ZTV7S7807C4[];
Class_Descriptor cd_S7807C4 = {  "S7807C4", // class name
  0,0,//no base classes
  &(vtc_S7807C4[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7807C4),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7807C4),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  S7807C3  : virtual S7807C4 {
  virtual void  v6(); // _ZN7S7807C32v6Ev
  ~S7807C3(); // tgen
  S7807C3(); // tgen
};
//SIG(-1 S7807C3) C1{ VBC2{ v2} v1}


void  S7807C3 ::v6(){vfunc_called(this, "_ZN7S7807C32v6Ev");}
S7807C3 ::~S7807C3(){ note_dtor("S7807C3", this);} // tgen
S7807C3 ::S7807C3(){ note_ctor("S7807C3", this);} // tgen

static void Test_S7807C3()
{
  extern Class_Descriptor cd_S7807C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7807C3, buf);
    S7807C3 *dp, &lv = *(dp=new (buf) S7807C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7807C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7807C3)");
    check_base_class_offset(lv, (S7807C4*), 0, "S7807C3");
    test_class_info(&lv, &cd_S7807C3);
    dp->~S7807C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7807C3(Test_S7807C3, "S7807C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7807C3C1Ev();
extern void _ZN7S7807C3D1Ev();
Name_Map name_map_S7807C3[] = {
  NSPAIR(_ZN7S7807C3C1Ev),
  NSPAIR(_ZN7S7807C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7807C4;
extern VTBL_ENTRY _ZTI7S7807C4[];
extern  VTBL_ENTRY _ZTV7S7807C4[];
static Base_Class bases_S7807C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7807C4,    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 _ZTI7S7807C3[];
extern void _ZN7S7807C42v5Ev();
extern void _ZN7S7807C32v6Ev();
static  VTBL_ENTRY vtc_S7807C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C3[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7807C32v6Ev,
};
extern VTBL_ENTRY _ZTV7S7807C3[];
static  VTT_ENTRY vtt_S7807C3[] = {
  {&(_ZTV7S7807C3[4]),  4,6},
  {&(_ZTV7S7807C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7807C3[];
extern  VTBL_ENTRY _ZTV7S7807C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7807C3[];
Class_Descriptor cd_S7807C3 = {  "S7807C3", // class name
  bases_S7807C3, 1,
  &(vtc_S7807C3[0]), // expected_vtbl_contents
  &(vtt_S7807C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7807C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7807C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7807C3),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  S7807C2  : virtual S7807C3 {
  virtual void  v7(); // _ZN7S7807C22v7Ev
  virtual void  v8(); // _ZN7S7807C22v8Ev
  virtual void  v9(); // _ZN7S7807C22v9Ev
  virtual void  v10(); // _ZN7S7807C23v10Ev
  ~S7807C2(); // tgen
  S7807C2(); // tgen
};
//SIG(-1 S7807C2) C1{ VBC2{ VBC3{ v5} v6} v1 v2 v3 v4}


void  S7807C2 ::v7(){vfunc_called(this, "_ZN7S7807C22v7Ev");}
void  S7807C2 ::v8(){vfunc_called(this, "_ZN7S7807C22v8Ev");}
void  S7807C2 ::v9(){vfunc_called(this, "_ZN7S7807C22v9Ev");}
void  S7807C2 ::v10(){vfunc_called(this, "_ZN7S7807C23v10Ev");}
S7807C2 ::~S7807C2(){ note_dtor("S7807C2", this);} // tgen
S7807C2 ::S7807C2(){ note_ctor("S7807C2", this);} // tgen

static void Test_S7807C2()
{
  extern Class_Descriptor cd_S7807C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7807C2, buf);
    S7807C2 *dp, &lv = *(dp=new (buf) S7807C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7807C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7807C2)");
    check_base_class_offset(lv, (S7807C4*)(S7807C3*), 0, "S7807C2");
    check_base_class_offset(lv, (S7807C3*), 0, "S7807C2");
    test_class_info(&lv, &cd_S7807C2);
    dp->~S7807C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7807C2(Test_S7807C2, "S7807C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7807C2C1Ev();
extern void _ZN7S7807C2D1Ev();
Name_Map name_map_S7807C2[] = {
  NSPAIR(_ZN7S7807C2C1Ev),
  NSPAIR(_ZN7S7807C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7807C4;
extern VTBL_ENTRY _ZTI7S7807C4[];
extern  VTBL_ENTRY _ZTV7S7807C4[];
extern Class_Descriptor cd_S7807C3;
extern VTBL_ENTRY _ZTI7S7807C3[];
extern  VTBL_ENTRY _ZTV7S7807C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7807C3[];
static Base_Class bases_S7807C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7807C4,    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_S7807C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S7807C2[];
extern void _ZN7S7807C42v5Ev();
extern void _ZN7S7807C32v6Ev();
extern void _ZN7S7807C22v7Ev();
extern void _ZN7S7807C22v8Ev();
extern void _ZN7S7807C22v9Ev();
extern void _ZN7S7807C23v10Ev();
static  VTBL_ENTRY vtc_S7807C2[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C2[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7807C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7807C23v10Ev,
};
extern VTBL_ENTRY _ZTV7S7807C2[];
extern void _ZN7S7807C42v5Ev();
extern void _ZN7S7807C32v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7807C3__7S7807C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C3[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7807C32v6Ev,
};
static  VTT_ENTRY vtt_S7807C2[] = {
  {&(_ZTV7S7807C2[6]),  6,12},
  {&(_ZTV7S7807C2[6]),  6,12},
  {&(_ZTV7S7807C2[6]),  6,12},
  {&(_tg__ZTV7S7807C3__7S7807C2[4]),  4,6},
  {&(_tg__ZTV7S7807C3__7S7807C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7807C2[];
extern  VTBL_ENTRY _ZTV7S7807C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7807C2[];
Class_Descriptor cd_S7807C2 = {  "S7807C2", // class name
  bases_S7807C2, 2,
  &(vtc_S7807C2[0]), // expected_vtbl_contents
  &(vtt_S7807C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7807C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7807C2),12, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7807C2),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  S7807C1  : S7807C2 {
  virtual void  v1(); // _ZN7S7807C12v1Ev
  virtual void  v2(); // _ZN7S7807C12v2Ev
  virtual void  v3(); // _ZN7S7807C12v3Ev
  virtual void  v4(); // _ZN7S7807C12v4Ev
  ~S7807C1(); // tgen
  S7807C1(); // tgen
};
//SIG(1 S7807C1) C1{ BC2{ VBC3{ VBC4{ v5} v6} v7 v8 v9 v10} v1 v2 v3 v4}


void  S7807C1 ::v1(){vfunc_called(this, "_ZN7S7807C12v1Ev");}
void  S7807C1 ::v2(){vfunc_called(this, "_ZN7S7807C12v2Ev");}
void  S7807C1 ::v3(){vfunc_called(this, "_ZN7S7807C12v3Ev");}
void  S7807C1 ::v4(){vfunc_called(this, "_ZN7S7807C12v4Ev");}
S7807C1 ::~S7807C1(){ note_dtor("S7807C1", this);} // tgen
S7807C1 ::S7807C1(){ note_ctor("S7807C1", this);} // tgen

static void Test_S7807C1()
{
  extern Class_Descriptor cd_S7807C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7807C1, buf);
    S7807C1 *dp, &lv = *(dp=new (buf) S7807C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7807C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7807C1)");
    check_base_class_offset(lv, (S7807C4*)(S7807C3*), 0, "S7807C1");
    check_base_class_offset(lv, (S7807C3*)(S7807C2*), 0, "S7807C1");
    check_base_class_offset(lv, (S7807C2*), 0, "S7807C1");
    test_class_info(&lv, &cd_S7807C1);
    dp->~S7807C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7807C1(Test_S7807C1, "S7807C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7807C1C1Ev();
extern void _ZN7S7807C1D1Ev();
Name_Map name_map_S7807C1[] = {
  NSPAIR(_ZN7S7807C1C1Ev),
  NSPAIR(_ZN7S7807C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7807C4;
extern VTBL_ENTRY _ZTI7S7807C4[];
extern  VTBL_ENTRY _ZTV7S7807C4[];
extern Class_Descriptor cd_S7807C3;
extern VTBL_ENTRY _ZTI7S7807C3[];
extern  VTBL_ENTRY _ZTV7S7807C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7807C3[];
extern Class_Descriptor cd_S7807C2;
extern VTBL_ENTRY _ZTI7S7807C2[];
extern  VTBL_ENTRY _ZTV7S7807C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7807C2[];
static Base_Class bases_S7807C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7807C4,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7807C3,    0, //bcp->offset
    -1, //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
    2, //immediately_derived
  0, 1},
  {&cd_S7807C2,    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},
  {0}};
extern VTBL_ENTRY _ZTI7S7807C1[];
extern void _ZN7S7807C42v5Ev();
extern void _ZN7S7807C32v6Ev();
extern void _ZN7S7807C22v7Ev();
extern void _ZN7S7807C22v8Ev();
extern void _ZN7S7807C22v9Ev();
extern void _ZN7S7807C23v10Ev();
extern void _ZN7S7807C12v1Ev();
extern void _ZN7S7807C12v2Ev();
extern void _ZN7S7807C12v3Ev();
extern void _ZN7S7807C12v4Ev();
static  VTBL_ENTRY vtc_S7807C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C1[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7807C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7807C23v10Ev,
  (VTBL_ENTRY)&_ZN7S7807C12v1Ev,
  (VTBL_ENTRY)&_ZN7S7807C12v2Ev,
  (VTBL_ENTRY)&_ZN7S7807C12v3Ev,
  (VTBL_ENTRY)&_ZN7S7807C12v4Ev,
};
extern VTBL_ENTRY _ZTV7S7807C1[];
extern void _ZN7S7807C42v5Ev();
extern void _ZN7S7807C32v6Ev();
extern void _ZN7S7807C22v7Ev();
extern void _ZN7S7807C22v8Ev();
extern void _ZN7S7807C22v9Ev();
extern void _ZN7S7807C23v10Ev();
static  VTBL_ENTRY _tg__ZTV7S7807C2__7S7807C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C2[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7807C32v6Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v7Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v8Ev,
  (VTBL_ENTRY)&_ZN7S7807C22v9Ev,
  (VTBL_ENTRY)&_ZN7S7807C23v10Ev,
};
extern void _ZN7S7807C42v5Ev();
extern void _ZN7S7807C32v6Ev();
static  VTBL_ENTRY _tg__ZTV7S7807C3__7S7807C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7807C3[0]),
  (VTBL_ENTRY)&_ZN7S7807C42v5Ev,
  (VTBL_ENTRY)&_ZN7S7807C32v6Ev,
};
static  VTT_ENTRY vtt_S7807C1[] = {
  {&(_ZTV7S7807C1[6]),  6,16},
  {&(_tg__ZTV7S7807C2__7S7807C1[6]),  6,12},
  {&(_tg__ZTV7S7807C2__7S7807C1[6]),  6,12},
  {&(_tg__ZTV7S7807C2__7S7807C1[6]),  6,12},
  {&(_ZTV7S7807C1[6]),  6,16},
  {&(_ZTV7S7807C1[6]),  6,16},
  {&(_tg__ZTV7S7807C3__7S7807C1[4]),  4,6},
  {&(_tg__ZTV7S7807C3__7S7807C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7807C1[];
extern  VTBL_ENTRY _ZTV7S7807C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7807C1[];
Class_Descriptor cd_S7807C1 = {  "S7807C1", // class name
  bases_S7807C1, 3,
  &(vtc_S7807C1[0]), // expected_vtbl_contents
  &(vtt_S7807C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7807C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S7807C1),16, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7807C1),8, //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  S20787C3  {
  virtual void  v1(); // _ZN8S20787C32v1Ev
  ~S20787C3(); // tgen
  S20787C3(); // tgen
};
//SIG(-1 S20787C3) C1{ v1}


void  S20787C3 ::v1(){vfunc_called(this, "_ZN8S20787C32v1Ev");}
S20787C3 ::~S20787C3(){ note_dtor("S20787C3", this);} // tgen
S20787C3 ::S20787C3(){ note_ctor("S20787C3", this);} // tgen

static void Test_S20787C3()
{
  extern Class_Descriptor cd_S20787C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20787C3, buf);
    S20787C3 *dp, &lv = *(dp=new (buf) S20787C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20787C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20787C3)");
    test_class_info(&lv, &cd_S20787C3);
    dp->~S20787C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20787C3(Test_S20787C3, "S20787C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20787C3C1Ev();
extern void _ZN8S20787C3D1Ev();
Name_Map name_map_S20787C3[] = {
  NSPAIR(_ZN8S20787C3C1Ev),
  NSPAIR(_ZN8S20787C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20787C3[];
extern void _ZN8S20787C32v1Ev();
static  VTBL_ENTRY vtc_S20787C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20787C3[0]),
  (VTBL_ENTRY)&_ZN8S20787C32v1Ev,
};
extern VTBL_ENTRY _ZTI8S20787C3[];
extern  VTBL_ENTRY _ZTV8S20787C3[];
Class_Descriptor cd_S20787C3 = {  "S20787C3", // class name
  0,0,//no base classes
  &(vtc_S20787C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20787C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20787C3),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  S20787C2  : virtual S20787C3 , S20948C7_nt , virtual S9624C48 {
  int s20787c2f0;
  virtual  ~S20787C2(); // _ZN8S20787C2D2Ev
  S20787C2(); // tgen
};
//SIG(-1 S20787C2) C1{ VBC2{ v1} BC3{ vd m FD} VBC4{ m} vd Fi}


 S20787C2 ::~S20787C2(){ note_dtor("S20787C2", this);}
S20787C2 ::S20787C2(){ note_ctor("S20787C2", this);} // tgen

static void Test_S20787C2()
{
  extern Class_Descriptor cd_S20787C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,7)];
    init_test(&cd_S20787C2, buf);
    S20787C2 *dp, &lv = *(dp=new (buf) S20787C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S20787C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20787C2)");
    check_base_class_offset(lv, (S20787C3*), ABISELECT(40,20), "S20787C2");
    check_base_class_offset(lv, (S20948C7_nt*), 0, "S20787C2");
    check_base_class_offset(lv, (S9624C48*), 0, "S20787C2");
    check_field_offset(lv, s20787c2f0, ABISELECT(32,16), "S20787C2.s20787c2f0");
    test_class_info(&lv, &cd_S20787C2);
    dp->~S20787C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20787C2(Test_S20787C2, "S20787C2", ABISELECT(48,24));

#else // __cplusplus

extern void _ZN8S20787C2C1Ev();
extern void _ZN8S20787C2D2Ev();
Name_Map name_map_S20787C2[] = {
  NSPAIR(_ZN8S20787C2C1Ev),
  NSPAIR(_ZN8S20787C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20787C3;
extern VTBL_ENTRY _ZTI8S20787C3[];
extern  VTBL_ENTRY _ZTV8S20787C3[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20787C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20787C3,    ABISELECT(40,20), //bcp->offset
    6, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20948C7_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20787C2[];
extern void _ZN8S20787C2D1Ev();
extern void _ZN8S20787C2D0Ev();
extern void _ZN8S20787C32v1Ev();
static  VTBL_ENTRY vtc_S20787C2[] = {
  0,
  ABISELECT(40,20),
  0,
  (VTBL_ENTRY)&(_ZTI8S20787C2[0]),
  (VTBL_ENTRY)&_ZN8S20787C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20787C2D0Ev,
  0,
  ABISELECT(-40,-20),
  (VTBL_ENTRY)&(_ZTI8S20787C2[0]),
  (VTBL_ENTRY)&_ZN8S20787C32v1Ev,
};
extern VTBL_ENTRY _ZTV8S20787C2[];
static  VTT_ENTRY vtt_S20787C2[] = {
  {&(_ZTV8S20787C2[4]),  4,10},
  {&(_ZTV8S20787C2[9]),  9,10},
};
extern VTBL_ENTRY _ZTI8S20787C2[];
extern  VTBL_ENTRY _ZTV8S20787C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20787C2[];
Class_Descriptor cd_S20787C2 = {  "S20787C2", // class name
  bases_S20787C2, 3,
  &(vtc_S20787C2[0]), // expected_vtbl_contents
  &(vtt_S20787C2[0]), // expected_vtt_contents
  ABISELECT(48,24), // object size
  NSPAIRA(_ZTI8S20787C2),ABISELECT(72,40), //typeinfo_var
  NSPAIRA(_ZTV8S20787C2),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20787C2),2, //virtual table table var
  2, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20787C1  : virtual S20787C2 {
  int s20787c1f0[6];
  ~S20787C1(); // tgen
  S20787C1(); // tgen
};
//SIG(1 S20787C1) C1{ VBC2{ VBC3{ v1} BC4{ vd m FD} VBC5{ m} vd Fi} Fi[6]}


S20787C1 ::~S20787C1(){ note_dtor("S20787C1", this);} // tgen
S20787C1 ::S20787C1(){ note_ctor("S20787C1", this);} // tgen

static void Test_S20787C1()
{
  extern Class_Descriptor cd_S20787C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(6,13)];
    init_test(&cd_S20787C1, buf);
    S20787C1 *dp, &lv = *(dp=new (buf) S20787C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(80,48), "sizeof(S20787C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20787C1)");
    check_base_class_offset(lv, (S20787C3*)(S20787C2*), 0, "S20787C1");
    check_base_class_offset(lv, (S20948C7_nt*)(S20787C2*), ABISELECT(32,28), "S20787C1");
    check_base_class_offset(lv, (S9624C48*)(S20787C2*), 0, "S20787C1");
    check_base_class_offset(lv, (S20787C2*), ABISELECT(32,28), "S20787C1");
    check_field_offset(lv, s20787c1f0, ABISELECT(8,4), "S20787C1.s20787c1f0");
    test_class_info(&lv, &cd_S20787C1);
    dp->~S20787C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20787C1(Test_S20787C1, "S20787C1", ABISELECT(80,48));

#else // __cplusplus

extern void _ZN8S20787C1C1Ev();
extern void _ZN8S20787C1D1Ev();
Name_Map name_map_S20787C1[] = {
  NSPAIR(_ZN8S20787C1C1Ev),
  NSPAIR(_ZN8S20787C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20787C3;
extern VTBL_ENTRY _ZTI8S20787C3[];
extern  VTBL_ENTRY _ZTV8S20787C3[];
extern Class_Descriptor cd_S20948C7_nt;
extern VTBL_ENTRY _ZTI11S20948C7_nt[];
extern  VTBL_ENTRY _ZTV11S20948C7_nt[];
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20787C2;
extern VTBL_ENTRY _ZTI8S20787C2[];
extern  VTBL_ENTRY _ZTV8S20787C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20787C2[];
static Base_Class bases_S20787C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20787C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    3, //immediately_derived
  0, 1},
  {&cd_S20948C7_nt,    ABISELECT(32,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
    2, //init_seq
    3, //immediately_derived
  0, 0},
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20787C2,    ABISELECT(32,28), //bcp->offset
    9, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20787C1[];
extern void _ZN8S20787C32v1Ev();
extern void _ZN8S20787C1D1Ev();
extern void _ZN8S20787C1D0Ev();
extern void ABISELECT(_ZTv0_n40_N8S20787C1D1Ev,_ZTv0_n20_N8S20787C1D1Ev)();
extern void ABISELECT(_ZThn32_N8S20787C1D1Ev,_ZThn28_N8S20787C1D1Ev)() __attribute__((weak));
extern void ABISELECT(_ZTv0_n40_N8S20787C1D0Ev,_ZTv0_n20_N8S20787C1D0Ev)();
extern void ABISELECT(_ZThn32_N8S20787C1D0Ev,_ZThn28_N8S20787C1D0Ev)() __attribute__((weak));
static  VTBL_ENTRY vtc_S20787C1[] = {
  0,
  0,
  ABISELECT(32,28),
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20787C1[0]),
  (VTBL_ENTRY)&_ZN8S20787C32v1Ev,
  (VTBL_ENTRY)&_ZN8S20787C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20787C1D0Ev,
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  (VTBL_ENTRY)&(_ZTI8S20787C1[0]),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20787C1D1Ev,_ZTv0_n20_N8S20787C1D1Ev),
  (VTBL_ENTRY)&ABISELECT(_ZTv0_n40_N8S20787C1D0Ev,_ZTv0_n20_N8S20787C1D0Ev),
};
extern VTBL_ENTRY _ZTV8S20787C1[];
extern void _ZN8S20787C2D1Ev();
extern void _ZN8S20787C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20787C2__8S20787C1[] = {
  ABISELECT(-32,-28),
  ABISELECT(-32,-28),
  0,
  (VTBL_ENTRY)&(_ZTI8S20787C2[0]),
  (VTBL_ENTRY)&_ZN8S20787C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20787C2D0Ev,
};
extern void _ZN8S20787C32v1Ev();
static  VTBL_ENTRY _tg__ZTV8S20787C3__8S20787C2__8S20787C1[] = {
  0,
  ABISELECT(32,28),
  (VTBL_ENTRY)&(_ZTI8S20787C2[0]),
  (VTBL_ENTRY)&_ZN8S20787C32v1Ev,
};
static  VTT_ENTRY vtt_S20787C1[] = {
  {&(_ZTV8S20787C1[6]),  6,16},
  {&(_ZTV8S20787C1[14]),  14,16},
  {&(_ZTV8S20787C1[6]),  6,16},
  {&(_tg__ZTV8S20787C2__8S20787C1[4]),  4,6},
  {&(_tg__ZTV8S20787C3__8S20787C2__8S20787C1[3]),  3,4},
};
extern VTBL_ENTRY _ZTI8S20787C1[];
extern  VTBL_ENTRY _ZTV8S20787C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20787C1[];
static VTBL_ENTRY alt_thunk_names169[] = {
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20787C1D0Ev,_ZTv0_n20_N8S20787C1D0Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20787C1D0Ev,_ZThn28_N8S20787C1D0Ev),
  ALT_NAMES_TERMINATOR,
  (VTBL_ENTRY)ABISELECT(_ZTv0_n40_N8S20787C1D1Ev,_ZTv0_n20_N8S20787C1D1Ev), // 
  (VTBL_ENTRY)ABISELECT(_ZThn32_N8S20787C1D1Ev,_ZThn28_N8S20787C1D1Ev),
  ALT_NAMES_TERMINATOR,
ALT_NAMES_TERMINATOR};
Class_Descriptor cd_S20787C1 = {  "S20787C1", // class name
  bases_S20787C1, 4,
  &(vtc_S20787C1[0]), // expected_vtbl_contents
  &(vtt_S20787C1[0]), // expected_vtt_contents
  ABISELECT(80,48), // object size
  NSPAIRA(_ZTI8S20787C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20787C1),16, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20787C1),5, //virtual table table var
  3, // n_initialized_bases
  1, // has_virtual_bases
  0, // has_class_type_fields
  alt_thunk_names169,
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15527C3  {
  __tsi64 s15527c3f0;
  ::S5081C10_nt s15527c3f1;
  char s15527c3f2;
};
//SIG(-1 S15527C3) C1{ FL FC2{ Fc[20]} Fc}



static void Test_S15527C3()
{
  {
    init_simple_test("S15527C3");
    S15527C3 lv;
    check2(sizeof(lv), 32, "sizeof(S15527C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15527C3)");
    check_field_offset(lv, s15527c3f0, 0, "S15527C3.s15527c3f0");
    check_field_offset(lv, s15527c3f1, 8, "S15527C3.s15527c3f1");
    check_field_offset(lv, s15527c3f2, 28, "S15527C3.s15527c3f2");
  }
}
static Arrange_To_Call_Me vS15527C3(Test_S15527C3, "S15527C3", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15527C2  {
  ::S15527C3 s15527c2f0;
  ::S15527C3 s15527c2f1;
};
//SIG(-1 S15527C2) C1{ FC2{ FL FC3{ Fc[20]} Fc} FC2}



static void Test_S15527C2()
{
  {
    init_simple_test("S15527C2");
    S15527C2 lv;
    check2(sizeof(lv), 64, "sizeof(S15527C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15527C2)");
    check_field_offset(lv, s15527c2f0, 0, "S15527C2.s15527c2f0");
    check_field_offset(lv, s15527c2f1, 32, "S15527C2.s15527c2f1");
  }
}
static Arrange_To_Call_Me vS15527C2(Test_S15527C2, "S15527C2", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15527C1  {
  ::S15527C2 s15527c1f0;
  void  mf15527c1(); // _ZN8S15527C19mf15527c1Ev
};
//SIG(1 S15527C1) C1{ m FC2{ FC3{ FL FC4{ Fc[20]} Fc} FC3}}


void  S15527C1 ::mf15527c1(){}

static void Test_S15527C1()
{
  {
    init_simple_test("S15527C1");
    S15527C1 lv;
    check2(sizeof(lv), 64, "sizeof(S15527C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15527C1)");
    check_field_offset(lv, s15527c1f0, 0, "S15527C1.s15527c1f0");
  }
}
static Arrange_To_Call_Me vS15527C1(Test_S15527C1, "S15527C1", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11709C3_nt  {
  char s11709c3f0[16];
  int s11709c3f1;
};
//SIG(-1 S11709C3_nt) C1{ Fc[16] Fi}



//skip512 S11709C3_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11709C2  {
  __tsi64 s11709c2f0;
  void *s11709c2f1[3];
  int s11709c2f2;
  ::S11709C3_nt s11709c2f3;
  char s11709c2f4[4];
};
//SIG(-1 S11709C2) C1{ FL Fp[3] Fi FC2{ Fc[16] Fi} Fc[4]}



static void Test_S11709C2()
{
  {
    init_simple_test("S11709C2");
    S11709C2 lv;
    check2(sizeof(lv), ABISELECT(64,48), "sizeof(S11709C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11709C2)");
    check_field_offset(lv, s11709c2f0, 0, "S11709C2.s11709c2f0");
    check_field_offset(lv, s11709c2f1, 8, "S11709C2.s11709c2f1");
    check_field_offset(lv, s11709c2f2, ABISELECT(32,20), "S11709C2.s11709c2f2");
    check_field_offset(lv, s11709c2f3, ABISELECT(36,24), "S11709C2.s11709c2f3");
    check_field_offset(lv, s11709c2f4, ABISELECT(56,44), "S11709C2.s11709c2f4");
  }
}
static Arrange_To_Call_Me vS11709C2(Test_S11709C2, "S11709C2", ABISELECT(64,48));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11709C1  {
  ::S11709C2 s11709c1f0;
  void *s11709c1f1;
  int s11709c1f2;
};
//SIG(1 S11709C1) C1{ FC2{ FL Fp[3] Fi FC3{ Fc[16] Fi} Fc[4]} Fp Fi}



static void Test_S11709C1()
{
  {
    init_simple_test("S11709C1");
    S11709C1 lv;
    check2(sizeof(lv), ABISELECT(80,56), "sizeof(S11709C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11709C1)");
    check_field_offset(lv, s11709c1f0, 0, "S11709C1.s11709c1f0");
    check_field_offset(lv, s11709c1f1, ABISELECT(64,48), "S11709C1.s11709c1f1");
    check_field_offset(lv, s11709c1f2, ABISELECT(72,52), "S11709C1.s11709c1f2");
  }
}
static Arrange_To_Call_Me vS11709C1(Test_S11709C1, "S11709C1", ABISELECT(80,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14875C2  {
  void *s14875c2f0[5];
  char s14875c2f1[3];
  int s14875c2f2;
  void *s14875c2f3[2];
  __tsi64 s14875c2f4;
  void *s14875c2f5[2];
};
//SIG(-1 S14875C2) C1{ Fp[5] Fc[3] Fi Fp[2] FL Fp[2]}



static void Test_S14875C2()
{
  {
    init_simple_test("S14875C2");
    S14875C2 lv;
    check2(sizeof(lv), ABISELECT(88,52), "sizeof(S14875C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14875C2)");
    check_field_offset(lv, s14875c2f0, 0, "S14875C2.s14875c2f0");
    check_field_offset(lv, s14875c2f1, ABISELECT(40,20), "S14875C2.s14875c2f1");
    check_field_offset(lv, s14875c2f2, ABISELECT(44,24), "S14875C2.s14875c2f2");
    check_field_offset(lv, s14875c2f3, ABISELECT(48,28), "S14875C2.s14875c2f3");
    check_field_offset(lv, s14875c2f4, ABISELECT(64,36), "S14875C2.s14875c2f4");
    check_field_offset(lv, s14875c2f5, ABISELECT(72,44), "S14875C2.s14875c2f5");
  }
}
static Arrange_To_Call_Me vS14875C2(Test_S14875C2, "S14875C2", ABISELECT(88,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14875C1  {
  short s14875c1f0[2];
  ::S14875C2 s14875c1f1;
};
//SIG(1 S14875C1) C1{ Fs[2] FC2{ Fp[5] Fc[3] Fi Fp[2] FL Fp[2]}}



static void Test_S14875C1()
{
  {
    init_simple_test("S14875C1");
    S14875C1 lv;
    check2(sizeof(lv), ABISELECT(96,56), "sizeof(S14875C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14875C1)");
    check_field_offset(lv, s14875c1f0, 0, "S14875C1.s14875c1f0");
    check_field_offset(lv, s14875c1f1, ABISELECT(8,4), "S14875C1.s14875c1f1");
  }
}
static Arrange_To_Call_Me vS14875C1(Test_S14875C1, "S14875C1", ABISELECT(96,56));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20898C3  {
  virtual void  v6(); // _ZN8S20898C32v6Ev
  ~S20898C3(); // tgen
  S20898C3(); // tgen
};
//SIG(-1 S20898C3) C1{ v1}


void  S20898C3 ::v6(){vfunc_called(this, "_ZN8S20898C32v6Ev");}
S20898C3 ::~S20898C3(){ note_dtor("S20898C3", this);} // tgen
S20898C3 ::S20898C3(){ note_ctor("S20898C3", this);} // tgen

static void Test_S20898C3()
{
  extern Class_Descriptor cd_S20898C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20898C3, buf);
    S20898C3 *dp, &lv = *(dp=new (buf) S20898C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20898C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20898C3)");
    test_class_info(&lv, &cd_S20898C3);
    dp->~S20898C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20898C3(Test_S20898C3, "S20898C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20898C3C1Ev();
extern void _ZN8S20898C3D1Ev();
Name_Map name_map_S20898C3[] = {
  NSPAIR(_ZN8S20898C3C1Ev),
  NSPAIR(_ZN8S20898C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20898C3[];
extern void _ZN8S20898C32v6Ev();
static  VTBL_ENTRY vtc_S20898C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20898C3[0]),
  (VTBL_ENTRY)&_ZN8S20898C32v6Ev,
};
extern VTBL_ENTRY _ZTI8S20898C3[];
extern  VTBL_ENTRY _ZTV8S20898C3[];
Class_Descriptor cd_S20898C3 = {  "S20898C3", // class name
  0,0,//no base classes
  &(vtc_S20898C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20898C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20898C3),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  S20898C2  : virtual S20898C3 {
  virtual void  v7(); // _ZN8S20898C22v7Ev
  ~S20898C2(); // tgen
  S20898C2(); // tgen
};
//SIG(-1 S20898C2) C1{ VBC2{ v2} v1}


void  S20898C2 ::v7(){vfunc_called(this, "_ZN8S20898C22v7Ev");}
S20898C2 ::~S20898C2(){ note_dtor("S20898C2", this);} // tgen
S20898C2 ::S20898C2(){ note_ctor("S20898C2", this);} // tgen

static void Test_S20898C2()
{
  extern Class_Descriptor cd_S20898C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20898C2, buf);
    S20898C2 *dp, &lv = *(dp=new (buf) S20898C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20898C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20898C2)");
    check_base_class_offset(lv, (S20898C3*), 0, "S20898C2");
    test_class_info(&lv, &cd_S20898C2);
    dp->~S20898C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20898C2(Test_S20898C2, "S20898C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20898C2C1Ev();
extern void _ZN8S20898C2D1Ev();
Name_Map name_map_S20898C2[] = {
  NSPAIR(_ZN8S20898C2C1Ev),
  NSPAIR(_ZN8S20898C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20898C3;
extern VTBL_ENTRY _ZTI8S20898C3[];
extern  VTBL_ENTRY _ZTV8S20898C3[];
static Base_Class bases_S20898C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20898C3,    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 _ZTI8S20898C2[];
extern void _ZN8S20898C32v6Ev();
extern void _ZN8S20898C22v7Ev();
static  VTBL_ENTRY vtc_S20898C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20898C2[0]),
  (VTBL_ENTRY)&_ZN8S20898C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20898C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20898C2[];
static  VTT_ENTRY vtt_S20898C2[] = {
  {&(_ZTV8S20898C2[4]),  4,6},
  {&(_ZTV8S20898C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20898C2[];
extern  VTBL_ENTRY _ZTV8S20898C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20898C2[];
Class_Descriptor cd_S20898C2 = {  "S20898C2", // class name
  bases_S20898C2, 1,
  &(vtc_S20898C2[0]), // expected_vtbl_contents
  &(vtt_S20898C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20898C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20898C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20898C2),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  S20898C1  : virtual S20898C2 , S20898C3 {
  int s20898c1f0;
  void *s20898c1f1;
  virtual void  v1(); // _ZN8S20898C12v1Ev
  virtual void  v2(); // _ZN8S20898C12v2Ev
  virtual void  v3(); // _ZN8S20898C12v3Ev
  virtual void  v4(); // _ZN8S20898C12v4Ev
  virtual void  v5(); // _ZN8S20898C12v5Ev
  ~S20898C1(); // tgen
  S20898C1(); // tgen
};
//SIG(1 S20898C1) C1{ VBC2{ VBC3{ v6} v7} BC3 v1 v2 v3 v4 v5 Fi Fp}


void  S20898C1 ::v1(){vfunc_called(this, "_ZN8S20898C12v1Ev");}
void  S20898C1 ::v2(){vfunc_called(this, "_ZN8S20898C12v2Ev");}
void  S20898C1 ::v3(){vfunc_called(this, "_ZN8S20898C12v3Ev");}
void  S20898C1 ::v4(){vfunc_called(this, "_ZN8S20898C12v4Ev");}
void  S20898C1 ::v5(){vfunc_called(this, "_ZN8S20898C12v5Ev");}
S20898C1 ::~S20898C1(){ note_dtor("S20898C1", this);} // tgen
S20898C1 ::S20898C1(){ note_ctor("S20898C1", this);} // tgen

static void Test_S20898C1()
{
  extern Class_Descriptor cd_S20898C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[5];
    init_test(&cd_S20898C1, buf);
    S20898C1 *dp, &lv = *(dp=new (buf) S20898C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20898C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20898C1)");
    check_base_class_offset(lv, (S20898C3*)(S20898C2*), ABISELECT(24,12), "S20898C1");
    check_base_class_offset(lv, (S20898C2*), ABISELECT(24,12), "S20898C1");
    /*is_ambiguous_... S20898C1::S20898C3 */ AMB_check_base_class_offset(lv, (S20898C3*), 0, "S20898C1");
    check_field_offset(lv, s20898c1f0, ABISELECT(8,4), "S20898C1.s20898c1f0");
    check_field_offset(lv, s20898c1f1, ABISELECT(16,8), "S20898C1.s20898c1f1");
    test_class_info(&lv, &cd_S20898C1);
    dp->~S20898C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20898C1(Test_S20898C1, "S20898C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20898C1C1Ev();
extern void _ZN8S20898C1D1Ev();
Name_Map name_map_S20898C1[] = {
  NSPAIR(_ZN8S20898C1C1Ev),
  NSPAIR(_ZN8S20898C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20898C3;
extern VTBL_ENTRY _ZTI8S20898C3[];
extern  VTBL_ENTRY _ZTV8S20898C3[];
extern Class_Descriptor cd_S20898C2;
extern VTBL_ENTRY _ZTI8S20898C2[];
extern  VTBL_ENTRY _ZTV8S20898C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20898C2[];
extern Class_Descriptor cd_S20898C3;
extern VTBL_ENTRY _ZTI8S20898C3[];
extern  VTBL_ENTRY _ZTV8S20898C3[];
static Base_Class bases_S20898C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20898C3,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    3, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S20898C2,    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
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {&cd_S20898C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_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 _ZTI8S20898C1[];
extern void _ZN8S20898C32v6Ev();
extern void _ZN8S20898C12v1Ev();
extern void _ZN8S20898C12v2Ev();
extern void _ZN8S20898C12v3Ev();
extern void _ZN8S20898C12v4Ev();
extern void _ZN8S20898C12v5Ev();
extern void _ZN8S20898C32v6Ev();
extern void _ZN8S20898C22v7Ev();
static  VTBL_ENTRY vtc_S20898C1[] = {
  ABISELECT(24,12),
  ABISELECT(24,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20898C1[0]),
  (VTBL_ENTRY)&_ZN8S20898C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20898C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20898C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20898C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20898C12v4Ev,
  (VTBL_ENTRY)&_ZN8S20898C12v5Ev,
  0,
  0,
  0,
  ABISELECT(-24,-12),
  (VTBL_ENTRY)&(_ZTI8S20898C1[0]),
  (VTBL_ENTRY)&_ZN8S20898C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20898C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20898C1[];
extern void _ZN8S20898C32v6Ev();
extern void _ZN8S20898C22v7Ev();
static  VTBL_ENTRY _tg__ZTV8S20898C2__8S20898C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20898C2[0]),
  (VTBL_ENTRY)&_ZN8S20898C32v6Ev,
  (VTBL_ENTRY)&_ZN8S20898C22v7Ev,
};
static  VTT_ENTRY vtt_S20898C1[] = {
  {&(_ZTV8S20898C1[4]),  4,17},
  {&(_ZTV8S20898C1[15]),  15,17},
  {&(_ZTV8S20898C1[15]),  15,17},
  {&(_tg__ZTV8S20898C2__8S20898C1[4]),  4,6},
  {&(_tg__ZTV8S20898C2__8S20898C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S20898C1[];
extern  VTBL_ENTRY _ZTV8S20898C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20898C1[];
Class_Descriptor cd_S20898C1 = {  "S20898C1", // class name
  bases_S20898C1, 3,
  &(vtc_S20898C1[0]), // expected_vtbl_contents
  &(vtt_S20898C1[0]), // expected_vtt_contents
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20898C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S20898C1),17, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20898C1),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  S8008C2  {
  ::S9624C47 s8008c2f0;
  int s8008c2f1;
  void  mf8008c2(); // _ZN7S8008C28mf8008c2Ev
  virtual  ~S8008C2(); // _ZN7S8008C2D1Ev
  S8008C2(); // tgen
};
//SIG(-1 S8008C2) C1{ vd m FC2{ m Fp Fi FC3{ m} FC3} Fi}


void  S8008C2 ::mf8008c2(){}
 S8008C2 ::~S8008C2(){ note_dtor("S8008C2", this);}
S8008C2 ::S8008C2(){ note_ctor("S8008C2", this);} // tgen

static void Test_S8008C2()
{
  extern Class_Descriptor cd_S8008C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S8008C2, buf);
    S8008C2 *dp, &lv = *(dp=new (buf) S8008C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S8008C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8008C2)");
    check_field_offset(lv, s8008c2f0, ABISELECT(8,4), "S8008C2.s8008c2f0");
    check_field_offset(lv, s8008c2f1, ABISELECT(24,16), "S8008C2.s8008c2f1");
    test_class_info(&lv, &cd_S8008C2);
    dp->~S8008C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8008C2(Test_S8008C2, "S8008C2", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S8008C2C1Ev();
extern void _ZN7S8008C2D1Ev();
Name_Map name_map_S8008C2[] = {
  NSPAIR(_ZN7S8008C2C1Ev),
  NSPAIR(_ZN7S8008C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S8008C2[];
extern void _ZN7S8008C2D1Ev();
extern void _ZN7S8008C2D0Ev();
static  VTBL_ENTRY vtc_S8008C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8008C2[0]),
  (VTBL_ENTRY)&_ZN7S8008C2D1Ev,
  (VTBL_ENTRY)&_ZN7S8008C2D0Ev,
};
extern VTBL_ENTRY _ZTI7S8008C2[];
extern  VTBL_ENTRY _ZTV7S8008C2[];
Class_Descriptor cd_S8008C2 = {  "S8008C2", // class name
  0,0,//no base classes
  &(vtc_S8008C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S8008C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S8008C2),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  S8008C1  : S8008C2 {
  virtual  ~S8008C1(); // _ZN7S8008C1D1Ev
  S8008C1(); // tgen
};
//SIG(1 S8008C1) C1{ BC2{ vd m FC3{ m Fp Fi FC4{ m} FC4} Fi} vd}


 S8008C1 ::~S8008C1(){ note_dtor("S8008C1", this);}
S8008C1 ::S8008C1(){ note_ctor("S8008C1", this);} // tgen

static void Test_S8008C1()
{
  extern Class_Descriptor cd_S8008C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S8008C1, buf);
    S8008C1 *dp, &lv = *(dp=new (buf) S8008C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S8008C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8008C1)");
    check_base_class_offset(lv, (S8008C2*), 0, "S8008C1");
    test_class_info(&lv, &cd_S8008C1);
    dp->~S8008C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8008C1(Test_S8008C1, "S8008C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S8008C1C1Ev();
extern void _ZN7S8008C1D1Ev();
Name_Map name_map_S8008C1[] = {
  NSPAIR(_ZN7S8008C1C1Ev),
  NSPAIR(_ZN7S8008C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8008C2;
extern VTBL_ENTRY _ZTI7S8008C2[];
extern  VTBL_ENTRY _ZTV7S8008C2[];
static Base_Class bases_S8008C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8008C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8008C1[];
extern void _ZN7S8008C1D1Ev();
extern void _ZN7S8008C1D0Ev();
static  VTBL_ENTRY vtc_S8008C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8008C1[0]),
  (VTBL_ENTRY)&_ZN7S8008C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8008C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8008C1[];
extern  VTBL_ENTRY _ZTV7S8008C1[];
Class_Descriptor cd_S8008C1 = {  "S8008C1", // class name
  bases_S8008C1, 1,
  &(vtc_S8008C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S8008C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8008C1),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  S8077C1  : S19861C23_nt {
  int s8077c1f0;
  short s8077c1f1[3];
  int s8077c1f2;
  short s8077c1f3[3];
  int s8077c1f4;
  short s8077c1f5;
  char s8077c1f6;
  ~S8077C1(); // tgen
  S8077C1(); // tgen
};
//SIG(1 S8077C1) C1{ BC2{ vd m Fi} Fi Fs[3] Fi Fs[3] Fi Fs Fc}


S8077C1 ::~S8077C1(){ note_dtor("S8077C1", this);} // tgen
S8077C1 ::S8077C1(){ note_ctor("S8077C1", this);} // tgen

static void Test_S8077C1()
{
  extern Class_Descriptor cd_S8077C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(7,11)];
    init_test(&cd_S8077C1, buf);
    S8077C1 *dp, &lv = *(dp=new (buf) S8077C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S8077C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8077C1)");
    check_base_class_offset(lv, (S19861C23_nt*), 0, "S8077C1");
    check_field_offset(lv, s8077c1f0, ABISELECT(12,8), "S8077C1.s8077c1f0");
    check_field_offset(lv, s8077c1f1, ABISELECT(16,12), "S8077C1.s8077c1f1");
    check_field_offset(lv, s8077c1f2, ABISELECT(24,20), "S8077C1.s8077c1f2");
    check_field_offset(lv, s8077c1f3, ABISELECT(28,24), "S8077C1.s8077c1f3");
    check_field_offset(lv, s8077c1f4, ABISELECT(36,32), "S8077C1.s8077c1f4");
    check_field_offset(lv, s8077c1f5, ABISELECT(40,36), "S8077C1.s8077c1f5");
    check_field_offset(lv, s8077c1f6, ABISELECT(42,38), "S8077C1.s8077c1f6");
    test_class_info(&lv, &cd_S8077C1);
    dp->~S8077C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8077C1(Test_S8077C1, "S8077C1", ABISELECT(48,40));

#else // __cplusplus

extern void _ZN7S8077C1C1Ev();
extern void _ZN7S8077C1D1Ev();
Name_Map name_map_S8077C1[] = {
  NSPAIR(_ZN7S8077C1C1Ev),
  NSPAIR(_ZN7S8077C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19861C23_nt;
extern VTBL_ENTRY _ZTI12S19861C23_nt[];
extern  VTBL_ENTRY _ZTV12S19861C23_nt[];
static Base_Class bases_S8077C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19861C23_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8077C1[];
extern void _ZN7S8077C1D1Ev();
extern void _ZN7S8077C1D0Ev();
static  VTBL_ENTRY vtc_S8077C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8077C1[0]),
  (VTBL_ENTRY)&_ZN7S8077C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8077C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8077C1[];
extern  VTBL_ENTRY _ZTV7S8077C1[];
Class_Descriptor cd_S8077C1 = {  "S8077C1", // class name
  bases_S8077C1, 1,
  &(vtc_S8077C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(48,40), // object size
  NSPAIRA(_ZTI7S8077C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8077C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10844C2  {
  short s10844c2f0[2];
  char s10844c2f1[68];
};
//SIG(-1 S10844C2) C1{ Fs[2] Fc[68]}



static void Test_S10844C2()
{
  {
    init_simple_test("S10844C2");
    S10844C2 lv;
    check2(sizeof(lv), 72, "sizeof(S10844C2)");
    check2(__alignof__(lv), 2, "__alignof__(S10844C2)");
    check_field_offset(lv, s10844c2f0, 0, "S10844C2.s10844c2f0");
    check_field_offset(lv, s10844c2f1, 4, "S10844C2.s10844c2f1");
  }
}
static Arrange_To_Call_Me vS10844C2(Test_S10844C2, "S10844C2", 72);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10844C1  {
  char s10844c1f0[342];
  short s10844c1f1;
  char s10844c1f2[16];
  int s10844c1f3;
  ::S10844C2 s10844c1f4;
};
//SIG(1 S10844C1) C1{ Fc[342] Fs Fc[16] Fi FC2{ Fs[2] Fc[68]}}



static void Test_S10844C1()
{
  {
    init_simple_test("S10844C1");
    S10844C1 lv;
    check2(sizeof(lv), 436, "sizeof(S10844C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10844C1)");
    check_field_offset(lv, s10844c1f0, 0, "S10844C1.s10844c1f0");
    check_field_offset(lv, s10844c1f1, 342, "S10844C1.s10844c1f1");
    check_field_offset(lv, s10844c1f2, 344, "S10844C1.s10844c1f2");
    check_field_offset(lv, s10844c1f3, 360, "S10844C1.s10844c1f3");
    check_field_offset(lv, s10844c1f4, 364, "S10844C1.s10844c1f4");
  }
}
static Arrange_To_Call_Me vS10844C1(Test_S10844C1, "S10844C1", 436);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11661C2  {
  int s11661c2f0[7];
  short s11661c2f1[2];
};
//SIG(-1 S11661C2) C1{ Fi[7] Fs[2]}



static void Test_S11661C2()
{
  {
    init_simple_test("S11661C2");
    S11661C2 lv;
    check2(sizeof(lv), 32, "sizeof(S11661C2)");
    check2(__alignof__(lv), 4, "__alignof__(S11661C2)");
    check_field_offset(lv, s11661c2f0, 0, "S11661C2.s11661c2f0");
    check_field_offset(lv, s11661c2f1, 28, "S11661C2.s11661c2f1");
  }
}
static Arrange_To_Call_Me vS11661C2(Test_S11661C2, "S11661C2", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11661C1  {
  ::S11661C2 s11661c1f0;
  void *s11661c1f1[10];
  int s11661c1f2[2];
  void *s11661c1f3[4];
  char s11661c1f4;
};
//SIG(1 S11661C1) C1{ FC2{ Fi[7] Fs[2]} Fp[10] Fi[2] Fp[4] Fc}



static void Test_S11661C1()
{
  {
    init_simple_test("S11661C1");
    S11661C1 lv;
    check2(sizeof(lv), ABISELECT(160,100), "sizeof(S11661C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11661C1)");
    check_field_offset(lv, s11661c1f0, 0, "S11661C1.s11661c1f0");
    check_field_offset(lv, s11661c1f1, 32, "S11661C1.s11661c1f1");
    check_field_offset(lv, s11661c1f2, ABISELECT(112,72), "S11661C1.s11661c1f2");
    check_field_offset(lv, s11661c1f3, ABISELECT(120,80), "S11661C1.s11661c1f3");
    check_field_offset(lv, s11661c1f4, ABISELECT(152,96), "S11661C1.s11661c1f4");
  }
}
static Arrange_To_Call_Me vS11661C1(Test_S11661C1, "S11661C1", ABISELECT(160,100));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14468C2  {
  ::S1540C5_nt s14468c2f0;
  ::S1540C5_nt s14468c2f1;
  ::S1540C5_nt s14468c2f2;
  int s14468c2f3[2];
};
//SIG(-1 S14468C2) C1{ FC2{ m Fi[2]} FC2 FC2 Fi[2]}



static void Test_S14468C2()
{
  {
    init_simple_test("S14468C2");
    S14468C2 lv;
    check2(sizeof(lv), 32, "sizeof(S14468C2)");
    check2(__alignof__(lv), 4, "__alignof__(S14468C2)");
    check_field_offset(lv, s14468c2f0, 0, "S14468C2.s14468c2f0");
    check_field_offset(lv, s14468c2f1, 8, "S14468C2.s14468c2f1");
    check_field_offset(lv, s14468c2f2, 16, "S14468C2.s14468c2f2");
    check_field_offset(lv, s14468c2f3, 24, "S14468C2.s14468c2f3");
  }
}
static Arrange_To_Call_Me vS14468C2(Test_S14468C2, "S14468C2", 32);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14468C1  {
  void *s14468c1f0[2];
  ::S14468C2 s14468c1f1;
};
//SIG(1 S14468C1) C1{ Fp[2] FC2{ FC3{ m Fi[2]} FC3 FC3 Fi[2]}}



static void Test_S14468C1()
{
  {
    init_simple_test("S14468C1");
    S14468C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S14468C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14468C1)");
    check_field_offset(lv, s14468c1f0, 0, "S14468C1.s14468c1f0");
    check_field_offset(lv, s14468c1f1, ABISELECT(16,8), "S14468C1.s14468c1f1");
  }
}
static Arrange_To_Call_Me vS14468C1(Test_S14468C1, "S14468C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18318C1  {
  void *s18318c1f0[3];
  int s18318c1f1[16];
  ::S1540C14_nt s18318c1f2;
  ::S1540C14_nt s18318c1f3;
  int s18318c1f4;
  __tsi64 s18318c1f5;
  void  mf18318c1(); // _ZN8S18318C19mf18318c1Ev
};
//SIG(1 S18318C1) C1{ m Fp[3] Fi[16] FC2{ m Fi[3]} FC2 Fi FL}


void  S18318C1 ::mf18318c1(){}

static void Test_S18318C1()
{
  {
    init_simple_test("S18318C1");
    S18318C1 lv;
    check2(sizeof(lv), ABISELECT(128,112), "sizeof(S18318C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18318C1)");
    check_field_offset(lv, s18318c1f0, 0, "S18318C1.s18318c1f0");
    check_field_offset(lv, s18318c1f1, ABISELECT(24,12), "S18318C1.s18318c1f1");
    check_field_offset(lv, s18318c1f2, ABISELECT(88,76), "S18318C1.s18318c1f2");
    check_field_offset(lv, s18318c1f3, ABISELECT(100,88), "S18318C1.s18318c1f3");
    check_field_offset(lv, s18318c1f4, ABISELECT(112,100), "S18318C1.s18318c1f4");
    check_field_offset(lv, s18318c1f5, ABISELECT(120,104), "S18318C1.s18318c1f5");
  }
}
static Arrange_To_Call_Me vS18318C1(Test_S18318C1, "S18318C1", ABISELECT(128,112));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8045C2_nt  {
  int s8045c2f0[2];
  void  mf8045c2(); // _ZN10S8045C2_nt8mf8045c2Ev
  virtual  ~S8045C2_nt(); // _ZN10S8045C2_ntD1Ev
  S8045C2_nt(); // tgen
};
//SIG(-1 S8045C2_nt) C1{ vd m Fi[2]}


void  S8045C2_nt ::mf8045c2(){}
 S8045C2_nt ::~S8045C2_nt(){ note_dtor("S8045C2_nt", this);}
S8045C2_nt ::S8045C2_nt(){ note_ctor("S8045C2_nt", this);} // tgen

//skip512 S8045C2_nt

#else // __cplusplus

extern void _ZN10S8045C2_ntC1Ev();
extern void _ZN10S8045C2_ntD1Ev();
Name_Map name_map_S8045C2_nt[] = {
  NSPAIR(_ZN10S8045C2_ntC1Ev),
  NSPAIR(_ZN10S8045C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8045C2_nt[];
extern void _ZN10S8045C2_ntD1Ev();
extern void _ZN10S8045C2_ntD0Ev();
static  VTBL_ENTRY vtc_S8045C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8045C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8045C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8045C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8045C2_nt[];
VTBL_ENTRY *P__ZTI10S8045C2_nt = _ZTI10S8045C2_nt; 
extern  VTBL_ENTRY _ZTV10S8045C2_nt[];
Class_Descriptor cd_S8045C2_nt = {  "S8045C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8045C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI10S8045C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8045C2_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  S8045C1  : S8045C2_nt {
  char s8045c1f0[3];
  short s8045c1f1;
  char s8045c1f2[2];
  int s8045c1f3;
  virtual  ~S8045C1(); // _ZN7S8045C1D1Ev
  S8045C1(); // tgen
};
//SIG(1 S8045C1) C1{ BC2{ vd m Fi[2]} vd Fc[3] Fs Fc[2] Fi}


 S8045C1 ::~S8045C1(){ note_dtor("S8045C1", this);}
S8045C1 ::S8045C1(){ note_ctor("S8045C1", this);} // tgen

static void Test_S8045C1()
{
  extern Class_Descriptor cd_S8045C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,7)];
    init_test(&cd_S8045C1, buf);
    S8045C1 *dp, &lv = *(dp=new (buf) S8045C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S8045C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8045C1)");
    check_base_class_offset(lv, (S8045C2_nt*), 0, "S8045C1");
    check_field_offset(lv, s8045c1f0, ABISELECT(16,12), "S8045C1.s8045c1f0");
    check_field_offset(lv, s8045c1f1, ABISELECT(20,16), "S8045C1.s8045c1f1");
    check_field_offset(lv, s8045c1f2, ABISELECT(22,18), "S8045C1.s8045c1f2");
    check_field_offset(lv, s8045c1f3, ABISELECT(24,20), "S8045C1.s8045c1f3");
    test_class_info(&lv, &cd_S8045C1);
    dp->~S8045C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8045C1(Test_S8045C1, "S8045C1", ABISELECT(32,24));

#else // __cplusplus

extern void _ZN7S8045C1C1Ev();
extern void _ZN7S8045C1D1Ev();
Name_Map name_map_S8045C1[] = {
  NSPAIR(_ZN7S8045C1C1Ev),
  NSPAIR(_ZN7S8045C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8045C2_nt;
extern VTBL_ENTRY _ZTI10S8045C2_nt[];
extern  VTBL_ENTRY _ZTV10S8045C2_nt[];
static Base_Class bases_S8045C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8045C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8045C1[];
extern void _ZN7S8045C1D1Ev();
extern void _ZN7S8045C1D0Ev();
static  VTBL_ENTRY vtc_S8045C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8045C1[0]),
  (VTBL_ENTRY)&_ZN7S8045C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8045C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8045C1[];
extern  VTBL_ENTRY _ZTV7S8045C1[];
Class_Descriptor cd_S8045C1 = {  "S8045C1", // class name
  bases_S8045C1, 1,
  &(vtc_S8045C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,24), // object size
  NSPAIRA(_ZTI7S8045C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8045C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15766C1  {
  ::S10296C45_nt s15766c1f0[10];
  int s15766c1f1;
  void  mf15766c1(); // _ZN8S15766C19mf15766c1Ev
};
//SIG(1 S15766C1) C1{ m FC2{ m FC3{ m FC4{ m FL}} FC3}[10] Fi}


void  S15766C1 ::mf15766c1(){}

static void Test_S15766C1()
{
  {
    init_simple_test("S15766C1");
    S15766C1 lv;
    check2(sizeof(lv), ABISELECT(168,164), "sizeof(S15766C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15766C1)");
    check_field_offset(lv, s15766c1f0, 0, "S15766C1.s15766c1f0");
    check_field_offset(lv, s15766c1f1, 160, "S15766C1.s15766c1f1");
  }
}
static Arrange_To_Call_Me vS15766C1(Test_S15766C1, "S15766C1", ABISELECT(168,164));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20233C2  {
  long double s20233c2f0;
  virtual void  v5(); // _ZN8S20233C22v5Ev
  virtual void  v6(); // _ZN8S20233C22v6Ev
  virtual void  v7(); // _ZN8S20233C22v7Ev
  ~S20233C2(); // tgen
  S20233C2(); // tgen
};
//SIG(-1 S20233C2) C1{ v1 v2 v3 FD}


void  S20233C2 ::v5(){vfunc_called(this, "_ZN8S20233C22v5Ev");}
void  S20233C2 ::v6(){vfunc_called(this, "_ZN8S20233C22v6Ev");}
void  S20233C2 ::v7(){vfunc_called(this, "_ZN8S20233C22v7Ev");}
S20233C2 ::~S20233C2(){ note_dtor("S20233C2", this);} // tgen
S20233C2 ::S20233C2(){ note_ctor("S20233C2", this);} // tgen

static void Test_S20233C2()
{
  extern Class_Descriptor cd_S20233C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20233C2, buf);
    S20233C2 *dp, &lv = *(dp=new (buf) S20233C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20233C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20233C2)");
    check_field_offset(lv, s20233c2f0, ABISELECT(16,4), "S20233C2.s20233c2f0");
    test_class_info(&lv, &cd_S20233C2);
    dp->~S20233C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20233C2(Test_S20233C2, "S20233C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20233C2C1Ev();
extern void _ZN8S20233C2D1Ev();
Name_Map name_map_S20233C2[] = {
  NSPAIR(_ZN8S20233C2C1Ev),
  NSPAIR(_ZN8S20233C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20233C2[];
extern void _ZN8S20233C22v5Ev();
extern void _ZN8S20233C22v6Ev();
extern void _ZN8S20233C22v7Ev();
static  VTBL_ENTRY vtc_S20233C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20233C2[0]),
  (VTBL_ENTRY)&_ZN8S20233C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20233C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20233C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S20233C2[];
extern  VTBL_ENTRY _ZTV8S20233C2[];
Class_Descriptor cd_S20233C2 = {  "S20233C2", // class name
  0,0,//no base classes
  &(vtc_S20233C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20233C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20233C2),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  S20233C1  : virtual S20233C2 {
  int s20233c1f0[2];
  virtual void  v1(); // _ZN8S20233C12v1Ev
  virtual void  v2(); // _ZN8S20233C12v2Ev
  virtual void  v3(); // _ZN8S20233C12v3Ev
  virtual void  v4(); // _ZN8S20233C12v4Ev
  ~S20233C1(); // tgen
  S20233C1(); // tgen
};
//SIG(1 S20233C1) C1{ VBC2{ v5 v6 v7 FD} v1 v2 v3 v4 Fi[2]}


void  S20233C1 ::v1(){vfunc_called(this, "_ZN8S20233C12v1Ev");}
void  S20233C1 ::v2(){vfunc_called(this, "_ZN8S20233C12v2Ev");}
void  S20233C1 ::v3(){vfunc_called(this, "_ZN8S20233C12v3Ev");}
void  S20233C1 ::v4(){vfunc_called(this, "_ZN8S20233C12v4Ev");}
S20233C1 ::~S20233C1(){ note_dtor("S20233C1", this);} // tgen
S20233C1 ::S20233C1(){ note_ctor("S20233C1", this);} // tgen

static void Test_S20233C1()
{
  extern Class_Descriptor cd_S20233C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,8)];
    init_test(&cd_S20233C1, buf);
    S20233C1 *dp, &lv = *(dp=new (buf) S20233C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,28), "sizeof(S20233C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20233C1)");
    check_base_class_offset(lv, (S20233C2*), ABISELECT(16,12), "S20233C1");
    check_field_offset(lv, s20233c1f0, ABISELECT(8,4), "S20233C1.s20233c1f0");
    test_class_info(&lv, &cd_S20233C1);
    dp->~S20233C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20233C1(Test_S20233C1, "S20233C1", ABISELECT(48,28));

#else // __cplusplus

extern void _ZN8S20233C1C1Ev();
extern void _ZN8S20233C1D1Ev();
Name_Map name_map_S20233C1[] = {
  NSPAIR(_ZN8S20233C1C1Ev),
  NSPAIR(_ZN8S20233C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20233C2;
extern VTBL_ENTRY _ZTI8S20233C2[];
extern  VTBL_ENTRY _ZTV8S20233C2[];
static Base_Class bases_S20233C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20233C2,    ABISELECT(16,12), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20233C1[];
extern void _ZN8S20233C12v1Ev();
extern void _ZN8S20233C12v2Ev();
extern void _ZN8S20233C12v3Ev();
extern void _ZN8S20233C12v4Ev();
extern void _ZN8S20233C22v5Ev();
extern void _ZN8S20233C22v6Ev();
extern void _ZN8S20233C22v7Ev();
static  VTBL_ENTRY vtc_S20233C1[] = {
  ABISELECT(16,12),
  0,
  (VTBL_ENTRY)&(_ZTI8S20233C1[0]),
  (VTBL_ENTRY)&_ZN8S20233C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20233C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20233C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20233C12v4Ev,
  0,
  0,
  0,
  ABISELECT(-16,-12),
  (VTBL_ENTRY)&(_ZTI8S20233C1[0]),
  (VTBL_ENTRY)&_ZN8S20233C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20233C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20233C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20233C1[];
static  VTT_ENTRY vtt_S20233C1[] = {
  {&(_ZTV8S20233C1[3]),  3,15},
  {&(_ZTV8S20233C1[12]),  12,15},
};
extern VTBL_ENTRY _ZTI8S20233C1[];
extern  VTBL_ENTRY _ZTV8S20233C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20233C1[];
Class_Descriptor cd_S20233C1 = {  "S20233C1", // class name
  bases_S20233C1, 1,
  &(vtc_S20233C1[0]), // expected_vtbl_contents
  &(vtt_S20233C1[0]), // expected_vtt_contents
  ABISELECT(48,28), // object size
  NSPAIRA(_ZTI8S20233C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20233C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20233C1),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  S2482C4_nt  {
  int s2482c4f0;
};
//SIG(-1 S2482C4_nt) C1{ Fi}



//skip512 S2482C4_nt

#else // __cplusplus

extern VTBL_ENTRY _ZTI10S2482C4_nt[];
VTBL_ENTRY *P__ZTI10S2482C4_nt = _ZTI10S2482C4_nt; 
Class_Descriptor cd_S2482C4_nt = {  "S2482C4_nt", // class name
  0,0,//no base classes
  0, // no vftv
  0, //no vtt
  4, // object size
  NSPAIRA(_ZTI10S2482C4_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  S2482C2  : S21708C5_nt , virtual S2482C4_nt {
  ~S2482C2(); // tgen
  S2482C2(); // tgen
};
//SIG(-1 S2482C2) C1{ BC2{ Fi} VBC3{ Fi}}


S2482C2 ::~S2482C2(){ note_dtor("S2482C2", this);} // tgen
S2482C2 ::S2482C2(){ note_ctor("S2482C2", this);} // tgen

static void Test_S2482C2()
{
  extern Class_Descriptor cd_S2482C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2482C2, buf);
    S2482C2 *dp, &lv = *(dp=new (buf) S2482C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2482C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2482C2)");
    check_base_class_offset(lv, (S21708C5_nt*), ABISELECT(8,4), "S2482C2");
    check_base_class_offset(lv, (S2482C4_nt*), ABISELECT(12,8), "S2482C2");
    test_class_info(&lv, &cd_S2482C2);
    dp->~S2482C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2482C2(Test_S2482C2, "S2482C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2482C2C1Ev();
extern void _ZN7S2482C2D1Ev();
Name_Map name_map_S2482C2[] = {
  NSPAIR(_ZN7S2482C2C1Ev),
  NSPAIR(_ZN7S2482C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21708C5_nt;
extern VTBL_ENTRY _ZTI11S21708C5_nt[];
extern Class_Descriptor cd_S2482C4_nt;
extern VTBL_ENTRY _ZTI10S2482C4_nt[];
static Base_Class bases_S2482C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21708C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2482C4_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2482C2[];
static  VTBL_ENTRY vtc_S2482C2[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2482C2[0]),
};
extern VTBL_ENTRY _ZTV7S2482C2[];
static  VTT_ENTRY vtt_S2482C2[] = {
  {&(_ZTV7S2482C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2482C2[];
extern  VTBL_ENTRY _ZTV7S2482C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2482C2[];
Class_Descriptor cd_S2482C2 = {  "S2482C2", // class name
  bases_S2482C2, 2,
  &(vtc_S2482C2[0]), // expected_vtbl_contents
  &(vtt_S2482C2[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2482C2),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2482C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2482C2),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  S2482C5  : S21708C5_nt , virtual S2482C4_nt {
  ~S2482C5(); // tgen
  S2482C5(); // tgen
};
//SIG(-1 S2482C5) C1{ BC2{ Fi} VBC3{ Fi}}


S2482C5 ::~S2482C5(){ note_dtor("S2482C5", this);} // tgen
S2482C5 ::S2482C5(){ note_ctor("S2482C5", this);} // tgen

static void Test_S2482C5()
{
  extern Class_Descriptor cd_S2482C5;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2482C5, buf);
    S2482C5 *dp, &lv = *(dp=new (buf) S2482C5());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2482C5)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2482C5)");
    check_base_class_offset(lv, (S21708C5_nt*), ABISELECT(8,4), "S2482C5");
    check_base_class_offset(lv, (S2482C4_nt*), ABISELECT(12,8), "S2482C5");
    test_class_info(&lv, &cd_S2482C5);
    dp->~S2482C5();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2482C5(Test_S2482C5, "S2482C5", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2482C5C1Ev();
extern void _ZN7S2482C5D1Ev();
Name_Map name_map_S2482C5[] = {
  NSPAIR(_ZN7S2482C5C1Ev),
  NSPAIR(_ZN7S2482C5D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21708C5_nt;
extern VTBL_ENTRY _ZTI11S21708C5_nt[];
extern Class_Descriptor cd_S2482C4_nt;
extern VTBL_ENTRY _ZTI10S2482C4_nt[];
static Base_Class bases_S2482C5[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21708C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S2482C4_nt,    ABISELECT(12,8), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI7S2482C5[];
static  VTBL_ENTRY vtc_S2482C5[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2482C5[0]),
};
extern VTBL_ENTRY _ZTV7S2482C5[];
static  VTT_ENTRY vtt_S2482C5[] = {
  {&(_ZTV7S2482C5[3]),  3,3},
};
extern VTBL_ENTRY _ZTI7S2482C5[];
extern  VTBL_ENTRY _ZTV7S2482C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2482C5[];
Class_Descriptor cd_S2482C5 = {  "S2482C5", // class name
  bases_S2482C5, 2,
  &(vtc_S2482C5[0]), // expected_vtbl_contents
  &(vtt_S2482C5[0]), // expected_vtt_contents
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2482C5),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2482C5),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2482C5),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  S2482C1  : S2482C2 , S2482C5 {
  ~S2482C1(); // tgen
  S2482C1(); // tgen
};
//SIG(1 S2482C1) C1{ BC2{ BC3{ Fi} VBC4{ Fi}} BC5{ BC3 VBC4}}


S2482C1 ::~S2482C1(){ note_dtor("S2482C1", this);} // tgen
S2482C1 ::S2482C1(){ note_ctor("S2482C1", this);} // tgen

static void Test_S2482C1()
{
  extern Class_Descriptor cd_S2482C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(5,6)];
    init_test(&cd_S2482C1, buf);
    S2482C1 *dp, &lv = *(dp=new (buf) S2482C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S2482C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2482C1)");
    check_base_class_offset(lv, (S21708C5_nt*)(S2482C2*), ABISELECT(8,4), "S2482C1");
    check_base_class_offset(lv, (S2482C4_nt*)(S2482C2*), ABISELECT(28,16), "S2482C1");
    check_base_class_offset(lv, (S2482C4_nt*)(S2482C5*), ABISELECT(28,16), "S2482C1");
    check_base_class_offset(lv, (S2482C2*), 0, "S2482C1");
    check_base_class_offset(lv, (S21708C5_nt*)(S2482C5*), ABISELECT(24,12), "S2482C1");
    check_base_class_offset(lv, (S2482C5*), ABISELECT(16,8), "S2482C1");
    test_class_info(&lv, &cd_S2482C1);
    dp->~S2482C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2482C1(Test_S2482C1, "S2482C1", ABISELECT(32,20));

#else // __cplusplus

extern void _ZN7S2482C1C1Ev();
extern void _ZN7S2482C1D1Ev();
Name_Map name_map_S2482C1[] = {
  NSPAIR(_ZN7S2482C1C1Ev),
  NSPAIR(_ZN7S2482C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S21708C5_nt;
extern VTBL_ENTRY _ZTI11S21708C5_nt[];
extern Class_Descriptor cd_S2482C4_nt;
extern VTBL_ENTRY _ZTI10S2482C4_nt[];
extern Class_Descriptor cd_S2482C2;
extern VTBL_ENTRY _ZTI7S2482C2[];
extern  VTBL_ENTRY _ZTV7S2482C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2482C2[];
extern Class_Descriptor cd_S21708C5_nt;
extern VTBL_ENTRY _ZTI11S21708C5_nt[];
extern Class_Descriptor cd_S2482C5;
extern VTBL_ENTRY _ZTI7S2482C5[];
extern  VTBL_ENTRY _ZTV7S2482C5[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2482C5[];
static Base_Class bases_S2482C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21708C5_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S2482C4_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
    2, //immediately_derived
  0, 1},
  {&cd_S2482C2,    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_S21708C5_nt,    ABISELECT(24,12), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    4, //immediately_derived
  0, 0},
  {&cd_S2482C5,    ABISELECT(16,8), //bcp->offset
    3, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    4, //bcp->index_in_construction_vtbl_array
    3, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2482C1[];
static  VTBL_ENTRY vtc_S2482C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2482C1[0]),
  ABISELECT(12,8),
  ABISELECT(-16,-8),
  (VTBL_ENTRY)&(_ZTI7S2482C1[0]),
};
extern VTBL_ENTRY _ZTV7S2482C1[];
static  VTBL_ENTRY _tg__ZTV7S2482C2__7S2482C1[] = {
  ABISELECT(28,16),
  0,
  (VTBL_ENTRY)&(_ZTI7S2482C2[0]),
};
static  VTBL_ENTRY _tg__ZTV7S2482C5__7S2482C1[] = {
  ABISELECT(12,8),
  0,
  (VTBL_ENTRY)&(_ZTI7S2482C5[0]),
};
static  VTT_ENTRY vtt_S2482C1[] = {
  {&(_ZTV7S2482C1[3]),  3,6},
  {&(_tg__ZTV7S2482C2__7S2482C1[3]),  3,3},
  {&(_tg__ZTV7S2482C5__7S2482C1[3]),  3,3},
  {&(_ZTV7S2482C1[6]),  6,6},
};
extern VTBL_ENTRY _ZTI7S2482C1[];
extern  VTBL_ENTRY _ZTV7S2482C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S2482C1[];
Class_Descriptor cd_S2482C1 = {  "S2482C1", // class name
  bases_S2482C1, 5,
  &(vtc_S2482C1[0]), // expected_vtbl_contents
  &(vtt_S2482C1[0]), // expected_vtt_contents
  ABISELECT(32,20), // object size
  NSPAIRA(_ZTI7S2482C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S2482C1),6, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S2482C1),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  S17331C1  {
  __tsi64 s17331c1f0;
  ::S9624C14_nt s17331c1f1;
  ::S9624C14_nt s17331c1f2;
  char s17331c1f3;
  int s17331c1f4;
  void  mf17331c1(); // _ZN8S17331C19mf17331c1Ev
};
//SIG(1 S17331C1) C1{ m FL FC2{ m Fp Fi FC3{ m}} FC2 Fc Fi}


void  S17331C1 ::mf17331c1(){}

static void Test_S17331C1()
{
  {
    init_simple_test("S17331C1");
    S17331C1 lv;
    check2(sizeof(lv), ABISELECT(48,40), "sizeof(S17331C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17331C1)");
    check_field_offset(lv, s17331c1f0, 0, "S17331C1.s17331c1f0");
    check_field_offset(lv, s17331c1f1, 8, "S17331C1.s17331c1f1");
    check_field_offset(lv, s17331c1f2, ABISELECT(24,20), "S17331C1.s17331c1f2");
    check_field_offset(lv, s17331c1f3, ABISELECT(40,32), "S17331C1.s17331c1f3");
    check_field_offset(lv, s17331c1f4, ABISELECT(44,36), "S17331C1.s17331c1f4");
  }
}
static Arrange_To_Call_Me vS17331C1(Test_S17331C1, "S17331C1", ABISELECT(48,40));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14120C1  {
  void *s14120c1f0;
  ::S21708C5_nt s14120c1f1;
  ::S5081C9_nt s14120c1f2;
};
//SIG(1 S14120C1) C1{ Fp FC2{ Fi} FC3{ FC4{ Fc[20]} Fc[16]}}



static void Test_S14120C1()
{
  {
    init_simple_test("S14120C1");
    S14120C1 lv;
    check2(sizeof(lv), ABISELECT(48,44), "sizeof(S14120C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14120C1)");
    check_field_offset(lv, s14120c1f0, 0, "S14120C1.s14120c1f0");
    check_field_offset(lv, s14120c1f1, ABISELECT(8,4), "S14120C1.s14120c1f1");
    check_field_offset(lv, s14120c1f2, ABISELECT(12,8), "S14120C1.s14120c1f2");
  }
}
static Arrange_To_Call_Me vS14120C1(Test_S14120C1, "S14120C1", ABISELECT(48,44));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15824C1  {
  ::S10296C46_nt s15824c1f0;
  ::S10296C47_nt s15824c1f1;
  char s15824c1f2;
  int s15824c1f3;
  void  mf15824c1(); // _ZN8S15824C19mf15824c1Ev
};
//SIG(1 S15824C1) C1{ m FC2{ m FC3{ m FL}} FC3 Fc Fi}


void  S15824C1 ::mf15824c1(){}

static void Test_S15824C1()
{
  {
    init_simple_test("S15824C1");
    S15824C1 lv;
    check2(sizeof(lv), 24, "sizeof(S15824C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15824C1)");
    check_field_offset(lv, s15824c1f0, 0, "S15824C1.s15824c1f0");
    check_field_offset(lv, s15824c1f1, 8, "S15824C1.s15824c1f1");
    check_field_offset(lv, s15824c1f2, 16, "S15824C1.s15824c1f2");
    check_field_offset(lv, s15824c1f3, 20, "S15824C1.s15824c1f3");
  }
}
static Arrange_To_Call_Me vS15824C1(Test_S15824C1, "S15824C1", 24);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18715C1  {
  ::S10296C15_nt s18715c1f0;
  void *s18715c1f1[9];
  short s18715c1f2:16;
  virtual void  v1(); // _ZN8S18715C12v1Ev
  virtual void  v2(); // _ZN8S18715C12v2Ev
  virtual void  v3(); // _ZN8S18715C12v3Ev
  virtual void  v4(); // _ZN8S18715C12v4Ev
  virtual void  v5(); // _ZN8S18715C12v5Ev
  ~S18715C1(); // tgen
  S18715C1(); // tgen
};
//SIG(1 S18715C1) C1{ v1 v2 v3 v4 v5 FC2{} Fp[9] Fs:16}


void  S18715C1 ::v1(){vfunc_called(this, "_ZN8S18715C12v1Ev");}
void  S18715C1 ::v2(){vfunc_called(this, "_ZN8S18715C12v2Ev");}
void  S18715C1 ::v3(){vfunc_called(this, "_ZN8S18715C12v3Ev");}
void  S18715C1 ::v4(){vfunc_called(this, "_ZN8S18715C12v4Ev");}
void  S18715C1 ::v5(){vfunc_called(this, "_ZN8S18715C12v5Ev");}
S18715C1 ::~S18715C1(){ note_dtor("S18715C1", this);} // tgen
S18715C1 ::S18715C1(){ note_ctor("S18715C1", this);} // tgen

static void Test_S18715C1()
{
  extern Class_Descriptor cd_S18715C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[13];
    init_test(&cd_S18715C1, buf);
    S18715C1 *dp, &lv = *(dp=new (buf) S18715C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(96,48), "sizeof(S18715C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18715C1)");
    check_field_offset(lv, s18715c1f0, ABISELECT(8,4), "S18715C1.s18715c1f0");
    check_field_offset(lv, s18715c1f1, ABISELECT(16,8), "S18715C1.s18715c1f1");
    set_bf_and_test(lv, s18715c1f2, ABISELECT(88,44), 0, 16, 1, "S18715C1");
    set_bf_and_test(lv, s18715c1f2, ABISELECT(88,44), 0, 16, hide_sll(1LL<<15), "S18715C1");
    test_class_info(&lv, &cd_S18715C1);
    dp->~S18715C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18715C1(Test_S18715C1, "S18715C1", ABISELECT(96,48));

#else // __cplusplus

extern void _ZN8S18715C1C1Ev();
extern void _ZN8S18715C1D1Ev();
Name_Map name_map_S18715C1[] = {
  NSPAIR(_ZN8S18715C1C1Ev),
  NSPAIR(_ZN8S18715C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18715C1[];
extern void _ZN8S18715C12v1Ev();
extern void _ZN8S18715C12v2Ev();
extern void _ZN8S18715C12v3Ev();
extern void _ZN8S18715C12v4Ev();
extern void _ZN8S18715C12v5Ev();
static  VTBL_ENTRY vtc_S18715C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18715C1[0]),
  (VTBL_ENTRY)&_ZN8S18715C12v1Ev,
  (VTBL_ENTRY)&_ZN8S18715C12v2Ev,
  (VTBL_ENTRY)&_ZN8S18715C12v3Ev,
  (VTBL_ENTRY)&_ZN8S18715C12v4Ev,
  (VTBL_ENTRY)&_ZN8S18715C12v5Ev,
};
extern VTBL_ENTRY _ZTI8S18715C1[];
extern  VTBL_ENTRY _ZTV8S18715C1[];
Class_Descriptor cd_S18715C1 = {  "S18715C1", // class name
  0,0,//no base classes
  &(vtc_S18715C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(96,48), // object size
  NSPAIRA(_ZTI8S18715C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18715C1),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  S2547C2  : S1540C31_nt {
  int s2547c2f0;
};
//SIG(-1 S2547C2) C1{ BC2{ m Fi[4]} Fi}



static void Test_S2547C2()
{
  extern Class_Descriptor cd_S2547C2;
  void *lvp;
  {
    int buf[6];
    init_test(&cd_S2547C2, buf);
    S2547C2 &lv = *(new (buf) S2547C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 20, "sizeof(S2547C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2547C2)");
    check_base_class_offset(lv, (S1540C31_nt*), 0, "S2547C2");
    check_field_offset(lv, s2547c2f0, 16, "S2547C2.s2547c2f0");
    test_class_info(&lv, &cd_S2547C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2547C2(Test_S2547C2, "S2547C2", 20);

#else // __cplusplus

extern Class_Descriptor cd_S1540C31_nt;
static Base_Class bases_S2547C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2547C2 = {  "S2547C2", // class name
  bases_S2547C2, 1,
  0, // no vftv
  0, //no vtt
  20, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2547C1  : S2547C2 , S20489C10_nt {
  int s2547c1f0;
};
//SIG(1 S2547C1) C1{ BC2{ BC3{ m Fi[4]} Fi} BC4{ m Fi} Fi}



static void Test_S2547C1()
{
  extern Class_Descriptor cd_S2547C1;
  void *lvp;
  {
    int buf[8];
    init_test(&cd_S2547C1, buf);
    S2547C1 &lv = *(new (buf) S2547C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 28, "sizeof(S2547C1)");
    check2(__alignof__(lv), 4, "__alignof__(S2547C1)");
    check_base_class_offset(lv, (S1540C31_nt*)(S2547C2*), 0, "S2547C1");
    check_base_class_offset(lv, (S2547C2*), 0, "S2547C1");
    check_base_class_offset(lv, (S20489C10_nt*), 20, "S2547C1");
    check_field_offset(lv, s2547c1f0, 24, "S2547C1.s2547c1f0");
    test_class_info(&lv, &cd_S2547C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2547C1(Test_S2547C1, "S2547C1", 28);

#else // __cplusplus

extern Class_Descriptor cd_S1540C31_nt;
extern Class_Descriptor cd_S2547C2;
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S2547C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S1540C31_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2547C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S20489C10_nt,    20, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2547C1 = {  "S2547C1", // class name
  bases_S2547C1, 3,
  0, // no vftv
  0, //no vtt
  28, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10629C1  {
  char s10629c1f0[16];
  short s10629c1f1[2];
  int s10629c1f2;
  __tsi64 s10629c1f3[3];
  int s10629c1f4;
  short s10629c1f5[6];
};
//SIG(1 S10629C1) C1{ Fc[16] Fs[2] Fi FL[3] Fi Fs[6]}



static void Test_S10629C1()
{
  {
    init_simple_test("S10629C1");
    S10629C1 lv;
    check2(sizeof(lv), 64, "sizeof(S10629C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10629C1)");
    check_field_offset(lv, s10629c1f0, 0, "S10629C1.s10629c1f0");
    check_field_offset(lv, s10629c1f1, 16, "S10629C1.s10629c1f1");
    check_field_offset(lv, s10629c1f2, 20, "S10629C1.s10629c1f2");
    check_field_offset(lv, s10629c1f3, 24, "S10629C1.s10629c1f3");
    check_field_offset(lv, s10629c1f4, 48, "S10629C1.s10629c1f4");
    check_field_offset(lv, s10629c1f5, 52, "S10629C1.s10629c1f5");
  }
}
static Arrange_To_Call_Me vS10629C1(Test_S10629C1, "S10629C1", 64);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10740C1  {
  char s10740c1f0[21];
  int s10740c1f1[2];
  char s10740c1f2[232];
  int s10740c1f3[2];
  char s10740c1f4;
};
//SIG(1 S10740C1) C1{ Fc[21] Fi[2] Fc[232] Fi[2] Fc}



static void Test_S10740C1()
{
  {
    init_simple_test("S10740C1");
    S10740C1 lv;
    check2(sizeof(lv), 276, "sizeof(S10740C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10740C1)");
    check_field_offset(lv, s10740c1f0, 0, "S10740C1.s10740c1f0");
    check_field_offset(lv, s10740c1f1, 24, "S10740C1.s10740c1f1");
    check_field_offset(lv, s10740c1f2, 32, "S10740C1.s10740c1f2");
    check_field_offset(lv, s10740c1f3, 264, "S10740C1.s10740c1f3");
    check_field_offset(lv, s10740c1f4, 272, "S10740C1.s10740c1f4");
  }
}
static Arrange_To_Call_Me vS10740C1(Test_S10740C1, "S10740C1", 276);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11993C1  {
  ::S10296C19_nt s11993c1f0;
  ::S10296C19_nt s11993c1f1;
  ::S10296C19_nt s11993c1f2;
  char s11993c1f3;
};
//SIG(1 S11993C1) C1{ FC2{ m FC3{ m FL[2]}} FC2 FC2 Fc}



static void Test_S11993C1()
{
  {
    init_simple_test("S11993C1");
    S11993C1 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S11993C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11993C1)");
    check_field_offset(lv, s11993c1f0, 0, "S11993C1.s11993c1f0");
    check_field_offset(lv, s11993c1f1, 16, "S11993C1.s11993c1f1");
    check_field_offset(lv, s11993c1f2, 32, "S11993C1.s11993c1f2");
    check_field_offset(lv, s11993c1f3, 48, "S11993C1.s11993c1f3");
  }
}
static Arrange_To_Call_Me vS11993C1(Test_S11993C1, "S11993C1", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7567C3  {
  virtual void  v2(); // _ZN7S7567C32v2Ev
  ~S7567C3(); // tgen
  S7567C3(); // tgen
};
//SIG(-1 S7567C3) C1{ v1}


void  S7567C3 ::v2(){vfunc_called(this, "_ZN7S7567C32v2Ev");}
S7567C3 ::~S7567C3(){ note_dtor("S7567C3", this);} // tgen
S7567C3 ::S7567C3(){ note_ctor("S7567C3", this);} // tgen

static void Test_S7567C3()
{
  extern Class_Descriptor cd_S7567C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7567C3, buf);
    S7567C3 *dp, &lv = *(dp=new (buf) S7567C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7567C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7567C3)");
    test_class_info(&lv, &cd_S7567C3);
    dp->~S7567C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7567C3(Test_S7567C3, "S7567C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7567C3C1Ev();
extern void _ZN7S7567C3D1Ev();
Name_Map name_map_S7567C3[] = {
  NSPAIR(_ZN7S7567C3C1Ev),
  NSPAIR(_ZN7S7567C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7567C3[];
extern void _ZN7S7567C32v2Ev();
static  VTBL_ENTRY vtc_S7567C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7567C3[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
};
extern VTBL_ENTRY _ZTI7S7567C3[];
extern  VTBL_ENTRY _ZTV7S7567C3[];
Class_Descriptor cd_S7567C3 = {  "S7567C3", // class name
  0,0,//no base classes
  &(vtc_S7567C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7567C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7567C3),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  S7567C2  : virtual S7567C3 {
  virtual void  v3(); // _ZN7S7567C22v3Ev
  ~S7567C2(); // tgen
  S7567C2(); // tgen
};
//SIG(-1 S7567C2) C1{ VBC2{ v2} v1}


void  S7567C2 ::v3(){vfunc_called(this, "_ZN7S7567C22v3Ev");}
S7567C2 ::~S7567C2(){ note_dtor("S7567C2", this);} // tgen
S7567C2 ::S7567C2(){ note_ctor("S7567C2", this);} // tgen

static void Test_S7567C2()
{
  extern Class_Descriptor cd_S7567C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7567C2, buf);
    S7567C2 *dp, &lv = *(dp=new (buf) S7567C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7567C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7567C2)");
    check_base_class_offset(lv, (S7567C3*), 0, "S7567C2");
    test_class_info(&lv, &cd_S7567C2);
    dp->~S7567C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7567C2(Test_S7567C2, "S7567C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7567C2C1Ev();
extern void _ZN7S7567C2D1Ev();
Name_Map name_map_S7567C2[] = {
  NSPAIR(_ZN7S7567C2C1Ev),
  NSPAIR(_ZN7S7567C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7567C3;
extern VTBL_ENTRY _ZTI7S7567C3[];
extern  VTBL_ENTRY _ZTV7S7567C3[];
static Base_Class bases_S7567C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7567C3,    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 _ZTI7S7567C2[];
extern void _ZN7S7567C32v2Ev();
extern void _ZN7S7567C22v3Ev();
static  VTBL_ENTRY vtc_S7567C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7567C2[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7567C22v3Ev,
};
extern VTBL_ENTRY _ZTV7S7567C2[];
static  VTT_ENTRY vtt_S7567C2[] = {
  {&(_ZTV7S7567C2[4]),  4,6},
  {&(_ZTV7S7567C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7567C2[];
extern  VTBL_ENTRY _ZTV7S7567C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7567C2[];
Class_Descriptor cd_S7567C2 = {  "S7567C2", // class name
  bases_S7567C2, 1,
  &(vtc_S7567C2[0]), // expected_vtbl_contents
  &(vtt_S7567C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7567C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7567C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7567C2),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  S7567C4  : virtual S7567C3 {
  virtual void  v4(); // _ZN7S7567C42v4Ev
  ~S7567C4(); // tgen
  S7567C4(); // tgen
};
//SIG(-1 S7567C4) C1{ VBC2{ v2} v1}


void  S7567C4 ::v4(){vfunc_called(this, "_ZN7S7567C42v4Ev");}
S7567C4 ::~S7567C4(){ note_dtor("S7567C4", this);} // tgen
S7567C4 ::S7567C4(){ note_ctor("S7567C4", this);} // tgen

static void Test_S7567C4()
{
  extern Class_Descriptor cd_S7567C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7567C4, buf);
    S7567C4 *dp, &lv = *(dp=new (buf) S7567C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7567C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7567C4)");
    check_base_class_offset(lv, (S7567C3*), 0, "S7567C4");
    test_class_info(&lv, &cd_S7567C4);
    dp->~S7567C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7567C4(Test_S7567C4, "S7567C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7567C4C1Ev();
extern void _ZN7S7567C4D1Ev();
Name_Map name_map_S7567C4[] = {
  NSPAIR(_ZN7S7567C4C1Ev),
  NSPAIR(_ZN7S7567C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7567C3;
extern VTBL_ENTRY _ZTI7S7567C3[];
extern  VTBL_ENTRY _ZTV7S7567C3[];
static Base_Class bases_S7567C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7567C3,    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 _ZTI7S7567C4[];
extern void _ZN7S7567C32v2Ev();
extern void _ZN7S7567C42v4Ev();
static  VTBL_ENTRY vtc_S7567C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7567C4[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7567C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7567C4[];
static  VTT_ENTRY vtt_S7567C4[] = {
  {&(_ZTV7S7567C4[4]),  4,6},
  {&(_ZTV7S7567C4[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7567C4[];
extern  VTBL_ENTRY _ZTV7S7567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7567C4[];
Class_Descriptor cd_S7567C4 = {  "S7567C4", // class name
  bases_S7567C4, 1,
  &(vtc_S7567C4[0]), // expected_vtbl_contents
  &(vtt_S7567C4[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7567C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7567C4),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7567C4),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  S7567C1  : S7567C2 , S7567C4 {
  virtual void  v1(); // _ZN7S7567C12v1Ev
  ~S7567C1(); // tgen
  S7567C1(); // tgen
};
//SIG(1 S7567C1) C1{ BC2{ VBC3{ v2} v3} BC4{ VBC3 v4} v1}


void  S7567C1 ::v1(){vfunc_called(this, "_ZN7S7567C12v1Ev");}
S7567C1 ::~S7567C1(){ note_dtor("S7567C1", this);} // tgen
S7567C1 ::S7567C1(){ note_ctor("S7567C1", this);} // tgen

static void Test_S7567C1()
{
  extern Class_Descriptor cd_S7567C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7567C1, buf);
    S7567C1 *dp, &lv = *(dp=new (buf) S7567C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7567C1)");
    check_base_class_offset(lv, (S7567C3*)(S7567C2*), 0, "S7567C1");
    check_base_class_offset(lv, (S7567C3*)(S7567C4*), 0, "S7567C1");
    check_base_class_offset(lv, (S7567C2*), 0, "S7567C1");
    check_base_class_offset(lv, (S7567C4*), ABISELECT(8,4), "S7567C1");
    test_class_info(&lv, &cd_S7567C1);
    dp->~S7567C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7567C1(Test_S7567C1, "S7567C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7567C1C1Ev();
extern void _ZN7S7567C1D1Ev();
Name_Map name_map_S7567C1[] = {
  NSPAIR(_ZN7S7567C1C1Ev),
  NSPAIR(_ZN7S7567C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7567C3;
extern VTBL_ENTRY _ZTI7S7567C3[];
extern  VTBL_ENTRY _ZTV7S7567C3[];
extern Class_Descriptor cd_S7567C2;
extern VTBL_ENTRY _ZTI7S7567C2[];
extern  VTBL_ENTRY _ZTV7S7567C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7567C2[];
extern Class_Descriptor cd_S7567C4;
extern VTBL_ENTRY _ZTI7S7567C4[];
extern  VTBL_ENTRY _ZTV7S7567C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7567C4[];
static Base_Class bases_S7567C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7567C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7567C2,    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_S7567C4,    ABISELECT(8,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7567C1[];
extern void _ZN7S7567C32v2Ev();
extern void _ZN7S7567C22v3Ev();
extern void _ZN7S7567C12v1Ev();
extern void _ZN7S7567C32v2Ev();
extern void _ZN7S7567C42v4Ev();
static  VTBL_ENTRY vtc_S7567C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7567C1[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7567C22v3Ev,
  (VTBL_ENTRY)&_ZN7S7567C12v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7567C1[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7567C42v4Ev,
};
extern VTBL_ENTRY _ZTV7S7567C1[];
extern void _ZN7S7567C32v2Ev();
extern void _ZN7S7567C22v3Ev();
static  VTBL_ENTRY _tg__ZTV7S7567C2__7S7567C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7567C2[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7567C22v3Ev,
};
extern void _ZN7S7567C32v2Ev();
extern void _ZN7S7567C42v4Ev();
static  VTBL_ENTRY _tg__ZTV7S7567C4__7S7567C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7567C4[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
  (VTBL_ENTRY)&_ZN7S7567C42v4Ev,
};
extern void _ZN7S7567C32v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7567C3__7S7567C4__7S7567C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7567C4[0]),
  (VTBL_ENTRY)&_ZN7S7567C32v2Ev,
};
static  VTT_ENTRY vtt_S7567C1[] = {
  {&(_ZTV7S7567C1[4]),  4,13},
  {&(_tg__ZTV7S7567C2__7S7567C1[4]),  4,6},
  {&(_tg__ZTV7S7567C2__7S7567C1[4]),  4,6},
  {&(_tg__ZTV7S7567C4__7S7567C1[4]),  4,6},
  {&(_tg__ZTV7S7567C3__7S7567C4__7S7567C1[3]),  3,4},
  {&(_ZTV7S7567C1[4]),  4,13},
  {&(_ZTV7S7567C1[11]),  11,13},
};
extern VTBL_ENTRY _ZTI7S7567C1[];
extern  VTBL_ENTRY _ZTV7S7567C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7567C1[];
Class_Descriptor cd_S7567C1 = {  "S7567C1", // class name
  bases_S7567C1, 3,
  &(vtc_S7567C1[0]), // expected_vtbl_contents
  &(vtt_S7567C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7567C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7567C1),13, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7567C1),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  S20234C2  {
  long double s20234c2f0;
  virtual void  v5(); // _ZN8S20234C22v5Ev
  virtual void  v6(); // _ZN8S20234C22v6Ev
  virtual void  v7(); // _ZN8S20234C22v7Ev
  ~S20234C2(); // tgen
  S20234C2(); // tgen
};
//SIG(-1 S20234C2) C1{ v1 v2 v3 FD}


void  S20234C2 ::v5(){vfunc_called(this, "_ZN8S20234C22v5Ev");}
void  S20234C2 ::v6(){vfunc_called(this, "_ZN8S20234C22v6Ev");}
void  S20234C2 ::v7(){vfunc_called(this, "_ZN8S20234C22v7Ev");}
S20234C2 ::~S20234C2(){ note_dtor("S20234C2", this);} // tgen
S20234C2 ::S20234C2(){ note_ctor("S20234C2", this);} // tgen

static void Test_S20234C2()
{
  extern Class_Descriptor cd_S20234C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S20234C2, buf);
    S20234C2 *dp, &lv = *(dp=new (buf) S20234C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S20234C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20234C2)");
    check_field_offset(lv, s20234c2f0, ABISELECT(16,4), "S20234C2.s20234c2f0");
    test_class_info(&lv, &cd_S20234C2);
    dp->~S20234C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20234C2(Test_S20234C2, "S20234C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN8S20234C2C1Ev();
extern void _ZN8S20234C2D1Ev();
Name_Map name_map_S20234C2[] = {
  NSPAIR(_ZN8S20234C2C1Ev),
  NSPAIR(_ZN8S20234C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20234C2[];
extern void _ZN8S20234C22v5Ev();
extern void _ZN8S20234C22v6Ev();
extern void _ZN8S20234C22v7Ev();
static  VTBL_ENTRY vtc_S20234C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20234C2[0]),
  (VTBL_ENTRY)&_ZN8S20234C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20234C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20234C22v7Ev,
};
extern VTBL_ENTRY _ZTI8S20234C2[];
extern  VTBL_ENTRY _ZTV8S20234C2[];
Class_Descriptor cd_S20234C2 = {  "S20234C2", // class name
  0,0,//no base classes
  &(vtc_S20234C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI8S20234C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20234C2),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  S20234C1  : virtual S20234C2 {
  virtual void  v1(); // _ZN8S20234C12v1Ev
  virtual void  v2(); // _ZN8S20234C12v2Ev
  virtual void  v3(); // _ZN8S20234C12v3Ev
  virtual void  v4(); // _ZN8S20234C12v4Ev
  ~S20234C1(); // tgen
  S20234C1(); // tgen
};
//SIG(1 S20234C1) C1{ VBC2{ v5 v6 v7 FD} v1 v2 v3 v4}


void  S20234C1 ::v1(){vfunc_called(this, "_ZN8S20234C12v1Ev");}
void  S20234C1 ::v2(){vfunc_called(this, "_ZN8S20234C12v2Ev");}
void  S20234C1 ::v3(){vfunc_called(this, "_ZN8S20234C12v3Ev");}
void  S20234C1 ::v4(){vfunc_called(this, "_ZN8S20234C12v4Ev");}
S20234C1 ::~S20234C1(){ note_dtor("S20234C1", this);} // tgen
S20234C1 ::S20234C1(){ note_ctor("S20234C1", this);} // tgen

static void Test_S20234C1()
{
  extern Class_Descriptor cd_S20234C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(4,6)];
    init_test(&cd_S20234C1, buf);
    S20234C1 *dp, &lv = *(dp=new (buf) S20234C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(48,20), "sizeof(S20234C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S20234C1)");
    check_base_class_offset(lv, (S20234C2*), ABISELECT(16,4), "S20234C1");
    test_class_info(&lv, &cd_S20234C1);
    dp->~S20234C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20234C1(Test_S20234C1, "S20234C1", ABISELECT(48,20));

#else // __cplusplus

extern void _ZN8S20234C1C1Ev();
extern void _ZN8S20234C1D1Ev();
Name_Map name_map_S20234C1[] = {
  NSPAIR(_ZN8S20234C1C1Ev),
  NSPAIR(_ZN8S20234C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20234C2;
extern VTBL_ENTRY _ZTI8S20234C2[];
extern  VTBL_ENTRY _ZTV8S20234C2[];
static Base_Class bases_S20234C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20234C2,    ABISELECT(16,4), //bcp->offset
    7, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20234C1[];
extern void _ZN8S20234C12v1Ev();
extern void _ZN8S20234C12v2Ev();
extern void _ZN8S20234C12v3Ev();
extern void _ZN8S20234C12v4Ev();
extern void _ZN8S20234C22v5Ev();
extern void _ZN8S20234C22v6Ev();
extern void _ZN8S20234C22v7Ev();
static  VTBL_ENTRY vtc_S20234C1[] = {
  ABISELECT(16,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20234C1[0]),
  (VTBL_ENTRY)&_ZN8S20234C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20234C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20234C12v3Ev,
  (VTBL_ENTRY)&_ZN8S20234C12v4Ev,
  0,
  0,
  0,
  ABISELECT(-16,-4),
  (VTBL_ENTRY)&(_ZTI8S20234C1[0]),
  (VTBL_ENTRY)&_ZN8S20234C22v5Ev,
  (VTBL_ENTRY)&_ZN8S20234C22v6Ev,
  (VTBL_ENTRY)&_ZN8S20234C22v7Ev,
};
extern VTBL_ENTRY _ZTV8S20234C1[];
static  VTT_ENTRY vtt_S20234C1[] = {
  {&(_ZTV8S20234C1[3]),  3,15},
  {&(_ZTV8S20234C1[12]),  12,15},
};
extern VTBL_ENTRY _ZTI8S20234C1[];
extern  VTBL_ENTRY _ZTV8S20234C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20234C1[];
Class_Descriptor cd_S20234C1 = {  "S20234C1", // class name
  bases_S20234C1, 1,
  &(vtc_S20234C1[0]), // expected_vtbl_contents
  &(vtt_S20234C1[0]), // expected_vtt_contents
  ABISELECT(48,20), // object size
  NSPAIRA(_ZTI8S20234C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20234C1),15, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20234C1),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  S13614C1  {
  int s13614c1f0[8];
  char s13614c1f1[7];
  int s13614c1f2[2];
  short s13614c1f3;
  char s13614c1f4[18];
};
//SIG(1 S13614C1) C1{ Fi[8] Fc[7] Fi[2] Fs Fc[18]}



static void Test_S13614C1()
{
  {
    init_simple_test("S13614C1");
    S13614C1 lv;
    check2(sizeof(lv), 68, "sizeof(S13614C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13614C1)");
    check_field_offset(lv, s13614c1f0, 0, "S13614C1.s13614c1f0");
    check_field_offset(lv, s13614c1f1, 32, "S13614C1.s13614c1f1");
    check_field_offset(lv, s13614c1f2, 40, "S13614C1.s13614c1f2");
    check_field_offset(lv, s13614c1f3, 48, "S13614C1.s13614c1f3");
    check_field_offset(lv, s13614c1f4, 50, "S13614C1.s13614c1f4");
  }
}
static Arrange_To_Call_Me vS13614C1(Test_S13614C1, "S13614C1", 68);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15882C1  {
  ::S1064C5_nt s15882c1f0;
  ::S1064C5_nt s15882c1f1;
  __tsi64 s15882c1f2[2];
  void  mf15882c1(); // _ZN8S15882C19mf15882c1Ev
};
//SIG(1 S15882C1) C1{ m FC2{ m FC3{ m Fp}} FC2 FL[2]}


void  S15882C1 ::mf15882c1(){}

static void Test_S15882C1()
{
  {
    init_simple_test("S15882C1");
    S15882C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S15882C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15882C1)");
    check_field_offset(lv, s15882c1f0, 0, "S15882C1.s15882c1f0");
    check_field_offset(lv, s15882c1f1, ABISELECT(8,4), "S15882C1.s15882c1f1");
    check_field_offset(lv, s15882c1f2, ABISELECT(16,8), "S15882C1.s15882c1f2");
  }
}
static Arrange_To_Call_Me vS15882C1(Test_S15882C1, "S15882C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S20861C3  {
  virtual void  v4(); // _ZN8S20861C32v4Ev
  ~S20861C3(); // tgen
  S20861C3(); // tgen
};
//SIG(-1 S20861C3) C1{ v1}


void  S20861C3 ::v4(){vfunc_called(this, "_ZN8S20861C32v4Ev");}
S20861C3 ::~S20861C3(){ note_dtor("S20861C3", this);} // tgen
S20861C3 ::S20861C3(){ note_ctor("S20861C3", this);} // tgen

static void Test_S20861C3()
{
  extern Class_Descriptor cd_S20861C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20861C3, buf);
    S20861C3 *dp, &lv = *(dp=new (buf) S20861C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20861C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20861C3)");
    test_class_info(&lv, &cd_S20861C3);
    dp->~S20861C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20861C3(Test_S20861C3, "S20861C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20861C3C1Ev();
extern void _ZN8S20861C3D1Ev();
Name_Map name_map_S20861C3[] = {
  NSPAIR(_ZN8S20861C3C1Ev),
  NSPAIR(_ZN8S20861C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S20861C3[];
extern void _ZN8S20861C32v4Ev();
static  VTBL_ENTRY vtc_S20861C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S20861C3[0]),
  (VTBL_ENTRY)&_ZN8S20861C32v4Ev,
};
extern VTBL_ENTRY _ZTI8S20861C3[];
extern  VTBL_ENTRY _ZTV8S20861C3[];
Class_Descriptor cd_S20861C3 = {  "S20861C3", // class name
  0,0,//no base classes
  &(vtc_S20861C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20861C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S20861C3),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  S20861C2  : virtual S20861C3 {
  virtual  ~S20861C2(); // _ZN8S20861C2D2Ev
  S20861C2(); // tgen
};
//SIG(-1 S20861C2) C1{ VBC2{ v1} vd}


 S20861C2 ::~S20861C2(){ note_dtor("S20861C2", this);}
S20861C2 ::S20861C2(){ note_ctor("S20861C2", this);} // tgen

static void Test_S20861C2()
{
  extern Class_Descriptor cd_S20861C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20861C2, buf);
    S20861C2 *dp, &lv = *(dp=new (buf) S20861C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20861C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20861C2)");
    check_base_class_offset(lv, (S20861C3*), 0, "S20861C2");
    test_class_info(&lv, &cd_S20861C2);
    dp->~S20861C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20861C2(Test_S20861C2, "S20861C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20861C2C1Ev();
extern void _ZN8S20861C2D2Ev();
Name_Map name_map_S20861C2[] = {
  NSPAIR(_ZN8S20861C2C1Ev),
  NSPAIR(_ZN8S20861C2D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20861C3;
extern VTBL_ENTRY _ZTI8S20861C3[];
extern  VTBL_ENTRY _ZTV8S20861C3[];
static Base_Class bases_S20861C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20861C3,    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 _ZTI8S20861C2[];
extern void _ZN8S20861C32v4Ev();
extern void _ZN8S20861C2D1Ev();
extern void _ZN8S20861C2D0Ev();
static  VTBL_ENTRY vtc_S20861C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20861C2[0]),
  (VTBL_ENTRY)&_ZN8S20861C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20861C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20861C2D0Ev,
};
extern VTBL_ENTRY _ZTV8S20861C2[];
static  VTT_ENTRY vtt_S20861C2[] = {
  {&(_ZTV8S20861C2[4]),  4,7},
  {&(_ZTV8S20861C2[4]),  4,7},
};
extern VTBL_ENTRY _ZTI8S20861C2[];
extern  VTBL_ENTRY _ZTV8S20861C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20861C2[];
Class_Descriptor cd_S20861C2 = {  "S20861C2", // class name
  bases_S20861C2, 1,
  &(vtc_S20861C2[0]), // expected_vtbl_contents
  &(vtt_S20861C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20861C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20861C2),7, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20861C2),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  S20861C1  : virtual S20861C2 {
  virtual  ~S20861C1(); // _ZN8S20861C1D2Ev
  virtual void  v1(); // _ZN8S20861C12v1Ev
  virtual void  v2(); // _ZN8S20861C12v2Ev
  virtual void  v3(); // _ZN8S20861C12v3Ev
  S20861C1(); // tgen
};
//SIG(1 S20861C1) C1{ VBC2{ VBC3{ v4} vd} vd v1 v2 v3}


 S20861C1 ::~S20861C1(){ note_dtor("S20861C1", this);}
void  S20861C1 ::v1(){vfunc_called(this, "_ZN8S20861C12v1Ev");}
void  S20861C1 ::v2(){vfunc_called(this, "_ZN8S20861C12v2Ev");}
void  S20861C1 ::v3(){vfunc_called(this, "_ZN8S20861C12v3Ev");}
S20861C1 ::S20861C1(){ note_ctor("S20861C1", this);} // tgen

static void Test_S20861C1()
{
  extern Class_Descriptor cd_S20861C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S20861C1, buf);
    S20861C1 *dp, &lv = *(dp=new (buf) S20861C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S20861C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20861C1)");
    check_base_class_offset(lv, (S20861C3*)(S20861C2*), 0, "S20861C1");
    check_base_class_offset(lv, (S20861C2*), 0, "S20861C1");
    test_class_info(&lv, &cd_S20861C1);
    dp->~S20861C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20861C1(Test_S20861C1, "S20861C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S20861C1C1Ev();
extern void _ZN8S20861C1D2Ev();
Name_Map name_map_S20861C1[] = {
  NSPAIR(_ZN8S20861C1C1Ev),
  NSPAIR(_ZN8S20861C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S20861C3;
extern VTBL_ENTRY _ZTI8S20861C3[];
extern  VTBL_ENTRY _ZTV8S20861C3[];
extern Class_Descriptor cd_S20861C2;
extern VTBL_ENTRY _ZTI8S20861C2[];
extern  VTBL_ENTRY _ZTV8S20861C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20861C2[];
static Base_Class bases_S20861C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20861C3,    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_S20861C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    5, //num_negative_vtable_entries(t, bcp)
    2, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 1},
  {0}};
extern VTBL_ENTRY _ZTI8S20861C1[];
extern void _ZN8S20861C32v4Ev();
extern void _ZN8S20861C1D1Ev();
extern void _ZN8S20861C1D0Ev();
extern void _ZN8S20861C12v1Ev();
extern void _ZN8S20861C12v2Ev();
extern void _ZN8S20861C12v3Ev();
static  VTBL_ENTRY vtc_S20861C1[] = {
  0,
  0,
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20861C1[0]),
  (VTBL_ENTRY)&_ZN8S20861C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20861C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20861C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20861C12v1Ev,
  (VTBL_ENTRY)&_ZN8S20861C12v2Ev,
  (VTBL_ENTRY)&_ZN8S20861C12v3Ev,
};
extern VTBL_ENTRY _ZTV8S20861C1[];
extern void _ZN8S20861C32v4Ev();
extern void _ZN8S20861C2D1Ev();
extern void _ZN8S20861C2D0Ev();
static  VTBL_ENTRY _tg__ZTV8S20861C2__8S20861C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20861C2[0]),
  (VTBL_ENTRY)&_ZN8S20861C32v4Ev,
  (VTBL_ENTRY)&_ZN8S20861C2D1Ev,
  (VTBL_ENTRY)&_ZN8S20861C2D0Ev,
};
static  VTT_ENTRY vtt_S20861C1[] = {
  {&(_ZTV8S20861C1[6]),  6,12},
  {&(_ZTV8S20861C1[6]),  6,12},
  {&(_ZTV8S20861C1[6]),  6,12},
  {&(_tg__ZTV8S20861C2__8S20861C1[4]),  4,7},
  {&(_tg__ZTV8S20861C2__8S20861C1[4]),  4,7},
};
extern VTBL_ENTRY _ZTI8S20861C1[];
extern  VTBL_ENTRY _ZTV8S20861C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20861C1[];
Class_Descriptor cd_S20861C1 = {  "S20861C1", // class name
  bases_S20861C1, 2,
  &(vtc_S20861C1[0]), // expected_vtbl_contents
  &(vtt_S20861C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S20861C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20861C1),12, //virtual function table var
  6, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20861C1),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  S14214C1  {
  void *s14214c1f0;
  int s14214c1f1;
  void *s14214c1f2;
  int s14214c1f3;
  void *s14214c1f4;
  int s14214c1f5;
  void *s14214c1f6;
  int s14214c1f7;
  void *s14214c1f8;
};
//SIG(1 S14214C1) C1{ Fp Fi Fp Fi Fp Fi Fp Fi Fp}



static void Test_S14214C1()
{
  {
    init_simple_test("S14214C1");
    S14214C1 lv;
    check2(sizeof(lv), ABISELECT(72,36), "sizeof(S14214C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14214C1)");
    check_field_offset(lv, s14214c1f0, 0, "S14214C1.s14214c1f0");
    check_field_offset(lv, s14214c1f1, ABISELECT(8,4), "S14214C1.s14214c1f1");
    check_field_offset(lv, s14214c1f2, ABISELECT(16,8), "S14214C1.s14214c1f2");
    check_field_offset(lv, s14214c1f3, ABISELECT(24,12), "S14214C1.s14214c1f3");
    check_field_offset(lv, s14214c1f4, ABISELECT(32,16), "S14214C1.s14214c1f4");
    check_field_offset(lv, s14214c1f5, ABISELECT(40,20), "S14214C1.s14214c1f5");
    check_field_offset(lv, s14214c1f6, ABISELECT(48,24), "S14214C1.s14214c1f6");
    check_field_offset(lv, s14214c1f7, ABISELECT(56,28), "S14214C1.s14214c1f7");
    check_field_offset(lv, s14214c1f8, ABISELECT(64,32), "S14214C1.s14214c1f8");
  }
}
static Arrange_To_Call_Me vS14214C1(Test_S14214C1, "S14214C1", ABISELECT(72,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11089C1  {
  ::S17486C7 s11089c1f0;
  void *s11089c1f1;
  int s11089c1f2;
};
//SIG(1 S11089C1) C1{ FC2{ BC3{ m Fp Fi[2]}} Fp Fi}



static void Test_S11089C1()
{
  {
    init_simple_test("S11089C1");
    S11089C1 lv;
    check2(sizeof(lv), ABISELECT(32,20), "sizeof(S11089C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11089C1)");
    check_field_offset(lv, s11089c1f0, 0, "S11089C1.s11089c1f0");
    check_field_offset(lv, s11089c1f1, ABISELECT(16,12), "S11089C1.s11089c1f1");
    check_field_offset(lv, s11089c1f2, ABISELECT(24,16), "S11089C1.s11089c1f2");
  }
}
static Arrange_To_Call_Me vS11089C1(Test_S11089C1, "S11089C1", ABISELECT(32,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18294C1  {
  void *s18294c1f0[3];
  ::S17459C4 s18294c1f1;
  char s18294c1f2[2];
  void  mf18294c1(); // _ZN8S18294C19mf18294c1Ev
};
//SIG(1 S18294C1) C1{ m Fp[3] FC2{ m Fp Fi} Fc[2]}


void  S18294C1 ::mf18294c1(){}

static void Test_S18294C1()
{
  {
    init_simple_test("S18294C1");
    S18294C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S18294C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18294C1)");
    check_field_offset(lv, s18294c1f0, 0, "S18294C1.s18294c1f0");
    check_field_offset(lv, s18294c1f1, ABISELECT(24,12), "S18294C1.s18294c1f1");
    check_field_offset(lv, s18294c1f2, ABISELECT(40,20), "S18294C1.s18294c1f2");
  }
}
static Arrange_To_Call_Me vS18294C1(Test_S18294C1, "S18294C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2568C2  : S20489C10_nt {
  int s2568c2f0;
  virtual void  v2(); // _ZN7S2568C22v2Ev
  ~S2568C2(); // tgen
  S2568C2(); // tgen
};
//SIG(-1 S2568C2) C1{ BC2{ m Fi} v1 Fi}


void  S2568C2 ::v2(){vfunc_called(this, "_ZN7S2568C22v2Ev");}
S2568C2 ::~S2568C2(){ note_dtor("S2568C2", this);} // tgen
S2568C2 ::S2568C2(){ note_ctor("S2568C2", this);} // tgen

static void Test_S2568C2()
{
  extern Class_Descriptor cd_S2568C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(3,4)];
    init_test(&cd_S2568C2, buf);
    S2568C2 *dp, &lv = *(dp=new (buf) S2568C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S2568C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2568C2)");
    check_base_class_offset(lv, (S20489C10_nt*), ABISELECT(8,4), "S2568C2");
    check_field_offset(lv, s2568c2f0, ABISELECT(12,8), "S2568C2.s2568c2f0");
    test_class_info(&lv, &cd_S2568C2);
    dp->~S2568C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2568C2(Test_S2568C2, "S2568C2", ABISELECT(16,12));

#else // __cplusplus

extern void _ZN7S2568C2C1Ev();
extern void _ZN7S2568C2D1Ev();
Name_Map name_map_S2568C2[] = {
  NSPAIR(_ZN7S2568C2C1Ev),
  NSPAIR(_ZN7S2568C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
static Base_Class bases_S2568C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2568C2[];
extern void _ZN7S2568C22v2Ev();
static  VTBL_ENTRY vtc_S2568C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2568C2[0]),
  (VTBL_ENTRY)&_ZN7S2568C22v2Ev,
};
extern VTBL_ENTRY _ZTI7S2568C2[];
extern  VTBL_ENTRY _ZTV7S2568C2[];
Class_Descriptor cd_S2568C2 = {  "S2568C2", // class name
  bases_S2568C2, 1,
  &(vtc_S2568C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,12), // object size
  NSPAIRA(_ZTI7S2568C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S2568C2),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  S2568C1  : S2568C2 {
  int s2568c1f0;
  virtual void  v1(); // _ZN7S2568C12v1Ev
  ~S2568C1(); // tgen
  S2568C1(); // tgen
};
//SIG(1 S2568C1) C1{ BC2{ BC3{ m Fi} v2 Fi} v1 Fi}


void  S2568C1 ::v1(){vfunc_called(this, "_ZN7S2568C12v1Ev");}
S2568C1 ::~S2568C1(){ note_dtor("S2568C1", this);} // tgen
S2568C1 ::S2568C1(){ note_ctor("S2568C1", this);} // tgen

static void Test_S2568C1()
{
  extern Class_Descriptor cd_S2568C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,5)];
    init_test(&cd_S2568C1, buf);
    S2568C1 *dp, &lv = *(dp=new (buf) S2568C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,16), "sizeof(S2568C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2568C1)");
    check_base_class_offset(lv, (S20489C10_nt*)(S2568C2*), ABISELECT(8,4), "S2568C1");
    check_base_class_offset(lv, (S2568C2*), 0, "S2568C1");
    check_field_offset(lv, s2568c1f0, ABISELECT(16,12), "S2568C1.s2568c1f0");
    test_class_info(&lv, &cd_S2568C1);
    dp->~S2568C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2568C1(Test_S2568C1, "S2568C1", ABISELECT(24,16));

#else // __cplusplus

extern void _ZN7S2568C1C1Ev();
extern void _ZN7S2568C1D1Ev();
Name_Map name_map_S2568C1[] = {
  NSPAIR(_ZN7S2568C1C1Ev),
  NSPAIR(_ZN7S2568C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S20489C10_nt;
extern VTBL_ENTRY _ZTI12S20489C10_nt[];
extern Class_Descriptor cd_S2568C2;
extern VTBL_ENTRY _ZTI7S2568C2[];
extern  VTBL_ENTRY _ZTV7S2568C2[];
static Base_Class bases_S2568C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S20489C10_nt,    ABISELECT(8,4), //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2568C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S2568C1[];
extern void _ZN7S2568C22v2Ev();
extern void _ZN7S2568C12v1Ev();
static  VTBL_ENTRY vtc_S2568C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S2568C1[0]),
  (VTBL_ENTRY)&_ZN7S2568C22v2Ev,
  (VTBL_ENTRY)&_ZN7S2568C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S2568C1[];
extern  VTBL_ENTRY _ZTV7S2568C1[];
Class_Descriptor cd_S2568C1 = {  "S2568C1", // class name
  bases_S2568C1, 2,
  &(vtc_S2568C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,16), // object size
  NSPAIRA(_ZTI7S2568C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S2568C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S7527C3  {
  virtual void  v1(); // _ZN7S7527C32v1Ev
  ~S7527C3(); // tgen
  S7527C3(); // tgen
};
//SIG(-1 S7527C3) C1{ v1}


void  S7527C3 ::v1(){vfunc_called(this, "_ZN7S7527C32v1Ev");}
S7527C3 ::~S7527C3(){ note_dtor("S7527C3", this);} // tgen
S7527C3 ::S7527C3(){ note_ctor("S7527C3", this);} // tgen

static void Test_S7527C3()
{
  extern Class_Descriptor cd_S7527C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7527C3, buf);
    S7527C3 *dp, &lv = *(dp=new (buf) S7527C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7527C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7527C3)");
    test_class_info(&lv, &cd_S7527C3);
    dp->~S7527C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7527C3(Test_S7527C3, "S7527C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7527C3C1Ev();
extern void _ZN7S7527C3D1Ev();
Name_Map name_map_S7527C3[] = {
  NSPAIR(_ZN7S7527C3C1Ev),
  NSPAIR(_ZN7S7527C3D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S7527C3[];
extern void _ZN7S7527C32v1Ev();
static  VTBL_ENTRY vtc_S7527C3[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S7527C3[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
};
extern VTBL_ENTRY _ZTI7S7527C3[];
extern  VTBL_ENTRY _ZTV7S7527C3[];
Class_Descriptor cd_S7527C3 = {  "S7527C3", // class name
  0,0,//no base classes
  &(vtc_S7527C3[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7527C3),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S7527C3),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  S7527C2  : virtual S7527C3 {
  virtual void  v2(); // _ZN7S7527C22v2Ev
  ~S7527C2(); // tgen
  S7527C2(); // tgen
};
//SIG(-1 S7527C2) C1{ VBC2{ v2} v1}


void  S7527C2 ::v2(){vfunc_called(this, "_ZN7S7527C22v2Ev");}
S7527C2 ::~S7527C2(){ note_dtor("S7527C2", this);} // tgen
S7527C2 ::S7527C2(){ note_ctor("S7527C2", this);} // tgen

static void Test_S7527C2()
{
  extern Class_Descriptor cd_S7527C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7527C2, buf);
    S7527C2 *dp, &lv = *(dp=new (buf) S7527C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7527C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7527C2)");
    check_base_class_offset(lv, (S7527C3*), 0, "S7527C2");
    test_class_info(&lv, &cd_S7527C2);
    dp->~S7527C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7527C2(Test_S7527C2, "S7527C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7527C2C1Ev();
extern void _ZN7S7527C2D1Ev();
Name_Map name_map_S7527C2[] = {
  NSPAIR(_ZN7S7527C2C1Ev),
  NSPAIR(_ZN7S7527C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7527C3;
extern VTBL_ENTRY _ZTI7S7527C3[];
extern  VTBL_ENTRY _ZTV7S7527C3[];
static Base_Class bases_S7527C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7527C3,    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 _ZTI7S7527C2[];
extern void _ZN7S7527C32v1Ev();
extern void _ZN7S7527C22v2Ev();
static  VTBL_ENTRY vtc_S7527C2[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7527C2[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7527C22v2Ev,
};
extern VTBL_ENTRY _ZTV7S7527C2[];
static  VTT_ENTRY vtt_S7527C2[] = {
  {&(_ZTV7S7527C2[4]),  4,6},
  {&(_ZTV7S7527C2[4]),  4,6},
};
extern VTBL_ENTRY _ZTI7S7527C2[];
extern  VTBL_ENTRY _ZTV7S7527C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7527C2[];
Class_Descriptor cd_S7527C2 = {  "S7527C2", // class name
  bases_S7527C2, 1,
  &(vtc_S7527C2[0]), // expected_vtbl_contents
  &(vtt_S7527C2[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7527C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7527C2),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7527C2),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  S7527C4  : virtual S7527C3 {
  ~S7527C4(); // tgen
  S7527C4(); // tgen
};
//SIG(-1 S7527C4) C1{ VBC2{ v1}}


S7527C4 ::~S7527C4(){ note_dtor("S7527C4", this);} // tgen
S7527C4 ::S7527C4(){ note_ctor("S7527C4", this);} // tgen

static void Test_S7527C4()
{
  extern Class_Descriptor cd_S7527C4;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S7527C4, buf);
    S7527C4 *dp, &lv = *(dp=new (buf) S7527C4());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S7527C4)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7527C4)");
    check_base_class_offset(lv, (S7527C3*), 0, "S7527C4");
    test_class_info(&lv, &cd_S7527C4);
    dp->~S7527C4();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7527C4(Test_S7527C4, "S7527C4", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN7S7527C4C1Ev();
extern void _ZN7S7527C4D1Ev();
Name_Map name_map_S7527C4[] = {
  NSPAIR(_ZN7S7527C4C1Ev),
  NSPAIR(_ZN7S7527C4D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7527C3;
extern VTBL_ENTRY _ZTI7S7527C3[];
extern  VTBL_ENTRY _ZTV7S7527C3[];
static Base_Class bases_S7527C4[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7527C3,    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 _ZTI7S7527C4[];
extern void _ZN7S7527C32v1Ev();
static  VTBL_ENTRY vtc_S7527C4[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7527C4[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7527C4[];
static  VTT_ENTRY vtt_S7527C4[] = {
  {&(_ZTV7S7527C4[4]),  4,5},
  {&(_ZTV7S7527C4[4]),  4,5},
};
extern VTBL_ENTRY _ZTI7S7527C4[];
extern  VTBL_ENTRY _ZTV7S7527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7527C4[];
Class_Descriptor cd_S7527C4 = {  "S7527C4", // class name
  bases_S7527C4, 1,
  &(vtc_S7527C4[0]), // expected_vtbl_contents
  &(vtt_S7527C4[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI7S7527C4),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV7S7527C4),5, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7527C4),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  S7527C1  : S7527C2 , S7527C4 {
  ~S7527C1(); // tgen
  S7527C1(); // tgen
};
//SIG(1 S7527C1) C1{ BC2{ VBC3{ v1} v2} BC4{ VBC3}}


S7527C1 ::~S7527C1(){ note_dtor("S7527C1", this);} // tgen
S7527C1 ::S7527C1(){ note_ctor("S7527C1", this);} // tgen

static void Test_S7527C1()
{
  extern Class_Descriptor cd_S7527C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S7527C1, buf);
    S7527C1 *dp, &lv = *(dp=new (buf) S7527C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S7527C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S7527C1)");
    check_base_class_offset(lv, (S7527C3*)(S7527C2*), 0, "S7527C1");
    check_base_class_offset(lv, (S7527C3*)(S7527C4*), 0, "S7527C1");
    check_base_class_offset(lv, (S7527C2*), 0, "S7527C1");
    check_base_class_offset(lv, (S7527C4*), ABISELECT(8,4), "S7527C1");
    test_class_info(&lv, &cd_S7527C1);
    dp->~S7527C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS7527C1(Test_S7527C1, "S7527C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S7527C1C1Ev();
extern void _ZN7S7527C1D1Ev();
Name_Map name_map_S7527C1[] = {
  NSPAIR(_ZN7S7527C1C1Ev),
  NSPAIR(_ZN7S7527C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S7527C3;
extern VTBL_ENTRY _ZTI7S7527C3[];
extern  VTBL_ENTRY _ZTV7S7527C3[];
extern Class_Descriptor cd_S7527C2;
extern VTBL_ENTRY _ZTI7S7527C2[];
extern  VTBL_ENTRY _ZTV7S7527C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7527C2[];
extern Class_Descriptor cd_S7527C4;
extern VTBL_ENTRY _ZTI7S7527C4[];
extern  VTBL_ENTRY _ZTV7S7527C4[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7527C4[];
static Base_Class bases_S7527C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S7527C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    3, //num_negative_vtable_entries(t, bcp)
    6, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    1, //immediately_derived
  0, 1},
  {&cd_S7527C2,    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_S7527C4,    ABISELECT(8,4), //bcp->offset
    6, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    7, //bcp->index_in_construction_vtbl_array
    4, //bcp->base_subarray_index_in_construction_vtbl_array
    3, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S7527C1[];
extern void _ZN7S7527C32v1Ev();
extern void _ZN7S7527C22v2Ev();
extern void _ZN7S7527C32v1Ev();
static  VTBL_ENTRY vtc_S7527C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7527C1[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7527C22v2Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI7S7527C1[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
};
extern VTBL_ENTRY _ZTV7S7527C1[];
extern void _ZN7S7527C32v1Ev();
extern void _ZN7S7527C22v2Ev();
static  VTBL_ENTRY _tg__ZTV7S7527C2__7S7527C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI7S7527C2[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
  (VTBL_ENTRY)&_ZN7S7527C22v2Ev,
};
extern void _ZN7S7527C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7527C4__7S7527C1[] = {
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI7S7527C4[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
};
extern void _ZN7S7527C32v1Ev();
static  VTBL_ENTRY _tg__ZTV7S7527C3__7S7527C4__7S7527C1[] = {
  0,
  ABISELECT(8,4),
  (VTBL_ENTRY)&(_ZTI7S7527C4[0]),
  (VTBL_ENTRY)&_ZN7S7527C32v1Ev,
};
static  VTT_ENTRY vtt_S7527C1[] = {
  {&(_ZTV7S7527C1[4]),  4,11},
  {&(_tg__ZTV7S7527C2__7S7527C1[4]),  4,6},
  {&(_tg__ZTV7S7527C2__7S7527C1[4]),  4,6},
  {&(_tg__ZTV7S7527C4__7S7527C1[4]),  4,5},
  {&(_tg__ZTV7S7527C3__7S7527C4__7S7527C1[3]),  3,4},
  {&(_ZTV7S7527C1[4]),  4,11},
  {&(_ZTV7S7527C1[10]),  10,11},
};
extern VTBL_ENTRY _ZTI7S7527C1[];
extern  VTBL_ENTRY _ZTV7S7527C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT7S7527C1[];
Class_Descriptor cd_S7527C1 = {  "S7527C1", // class name
  bases_S7527C1, 3,
  &(vtc_S7527C1[0]), // expected_vtbl_contents
  &(vtt_S7527C1[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S7527C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV7S7527C1),11, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT7S7527C1),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  S17907C2_nt  {
  int s17907c2f0;
  char s17907c2f1[308];
};
//SIG(-1 S17907C2_nt) C1{ Fi Fc[308]}



//skip512 S17907C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17907C1  {
  void *s17907c1f0[2];
  ::S17907C2_nt s17907c1f1;
  void  mf17907c1(); // _ZN8S17907C19mf17907c1Ev
};
//SIG(1 S17907C1) C1{ m Fp[2] FC2{ Fi Fc[308]}}


void  S17907C1 ::mf17907c1(){}

static void Test_S17907C1()
{
  {
    init_simple_test("S17907C1");
    S17907C1 lv;
    check2(sizeof(lv), ABISELECT(328,320), "sizeof(S17907C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17907C1)");
    check_field_offset(lv, s17907c1f0, 0, "S17907C1.s17907c1f0");
    check_field_offset(lv, s17907c1f1, ABISELECT(16,8), "S17907C1.s17907c1f1");
  }
}
static Arrange_To_Call_Me vS17907C1(Test_S17907C1, "S17907C1", ABISELECT(328,320));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S8195C2_nt  {
  void *s8195c2f0[2];
  void  mf8195c2(); // _ZN10S8195C2_nt8mf8195c2Ev
  virtual  ~S8195C2_nt(); // _ZN10S8195C2_ntD1Ev
  S8195C2_nt(); // tgen
};
//SIG(-1 S8195C2_nt) C1{ vd m Fp[2]}


void  S8195C2_nt ::mf8195c2(){}
 S8195C2_nt ::~S8195C2_nt(){ note_dtor("S8195C2_nt", this);}
S8195C2_nt ::S8195C2_nt(){ note_ctor("S8195C2_nt", this);} // tgen

//skip512 S8195C2_nt

#else // __cplusplus

extern void _ZN10S8195C2_ntC1Ev();
extern void _ZN10S8195C2_ntD1Ev();
Name_Map name_map_S8195C2_nt[] = {
  NSPAIR(_ZN10S8195C2_ntC1Ev),
  NSPAIR(_ZN10S8195C2_ntD1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI10S8195C2_nt[];
extern void _ZN10S8195C2_ntD1Ev();
extern void _ZN10S8195C2_ntD0Ev();
static  VTBL_ENTRY vtc_S8195C2_nt[] = {
  0,
  (VTBL_ENTRY)&(_ZTI10S8195C2_nt[0]),
  (VTBL_ENTRY)&_ZN10S8195C2_ntD1Ev,
  (VTBL_ENTRY)&_ZN10S8195C2_ntD0Ev,
};
extern VTBL_ENTRY _ZTI10S8195C2_nt[];
VTBL_ENTRY *P__ZTI10S8195C2_nt = _ZTI10S8195C2_nt; 
extern  VTBL_ENTRY _ZTV10S8195C2_nt[];
Class_Descriptor cd_S8195C2_nt = {  "S8195C2_nt", // class name
  0,0,//no base classes
  &(vtc_S8195C2_nt[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI10S8195C2_nt),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV10S8195C2_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  S8195C1  : S8195C2_nt {
  void *s8195c1f0;
  int s8195c1f1;
  virtual  ~S8195C1(); // _ZN7S8195C1D1Ev
  S8195C1(); // tgen
};
//SIG(1 S8195C1) C1{ BC2{ vd m Fp[2]} vd Fp Fi}


 S8195C1 ::~S8195C1(){ note_dtor("S8195C1", this);}
S8195C1 ::S8195C1(){ note_ctor("S8195C1", this);} // tgen

static void Test_S8195C1()
{
  extern Class_Descriptor cd_S8195C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[6];
    init_test(&cd_S8195C1, buf);
    S8195C1 *dp, &lv = *(dp=new (buf) S8195C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,20), "sizeof(S8195C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S8195C1)");
    check_base_class_offset(lv, (S8195C2_nt*), 0, "S8195C1");
    check_field_offset(lv, s8195c1f0, ABISELECT(24,12), "S8195C1.s8195c1f0");
    check_field_offset(lv, s8195c1f1, ABISELECT(32,16), "S8195C1.s8195c1f1");
    test_class_info(&lv, &cd_S8195C1);
    dp->~S8195C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS8195C1(Test_S8195C1, "S8195C1", ABISELECT(40,20));

#else // __cplusplus

extern void _ZN7S8195C1C1Ev();
extern void _ZN7S8195C1D1Ev();
Name_Map name_map_S8195C1[] = {
  NSPAIR(_ZN7S8195C1C1Ev),
  NSPAIR(_ZN7S8195C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S8195C2_nt;
extern VTBL_ENTRY _ZTI10S8195C2_nt[];
extern  VTBL_ENTRY _ZTV10S8195C2_nt[];
static Base_Class bases_S8195C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S8195C2_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S8195C1[];
extern void _ZN7S8195C1D1Ev();
extern void _ZN7S8195C1D0Ev();
static  VTBL_ENTRY vtc_S8195C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S8195C1[0]),
  (VTBL_ENTRY)&_ZN7S8195C1D1Ev,
  (VTBL_ENTRY)&_ZN7S8195C1D0Ev,
};
extern VTBL_ENTRY _ZTI7S8195C1[];
extern  VTBL_ENTRY _ZTV7S8195C1[];
Class_Descriptor cd_S8195C1 = {  "S8195C1", // class name
  bases_S8195C1, 1,
  &(vtc_S8195C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,20), // object size
  NSPAIRA(_ZTI7S8195C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S8195C1),4, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17265C1  {
  int s17265c1f0[5];
  __tsi64 s17265c1f1[2];
  char s17265c1f2[40];
  int s17265c1f3;
  void  mf17265c1(); // _ZN8S17265C19mf17265c1Ev
};
//SIG(1 S17265C1) C1{ m Fi[5] FL[2] Fc[40] Fi}


void  S17265C1 ::mf17265c1(){}

static void Test_S17265C1()
{
  {
    init_simple_test("S17265C1");
    S17265C1 lv;
    check2(sizeof(lv), ABISELECT(88,80), "sizeof(S17265C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17265C1)");
    check_field_offset(lv, s17265c1f0, 0, "S17265C1.s17265c1f0");
    check_field_offset(lv, s17265c1f1, ABISELECT(24,20), "S17265C1.s17265c1f1");
    check_field_offset(lv, s17265c1f2, ABISELECT(40,36), "S17265C1.s17265c1f2");
    check_field_offset(lv, s17265c1f3, ABISELECT(80,76), "S17265C1.s17265c1f3");
  }
}
static Arrange_To_Call_Me vS17265C1(Test_S17265C1, "S17265C1", ABISELECT(88,80));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15148C1  {
  unsigned char s15148c1f0:1;
  char s15148c1f1:8;
  int s15148c1f2:8;
  int s15148c1f3:16;
  void  mf15148c1(); // _ZN8S15148C19mf15148c1Ev
};
//SIG(1 S15148C1) C1{ m Fc:1 Fc:8 Fi:8 Fi:16}


void  S15148C1 ::mf15148c1(){}

static void Test_S15148C1()
{
  {
    init_simple_test("S15148C1");
    static S15148C1 lv;
    check2(sizeof(lv), 8, "sizeof(S15148C1)");
    check2(__alignof__(lv), 4, "__alignof__(S15148C1)");
    set_bf_and_test(lv, s15148c1f0, 0, 0, 1, 1, "S15148C1");
    set_bf_and_test(lv, s15148c1f1, 1, 0, 8, 1, "S15148C1");
    set_bf_and_test(lv, s15148c1f1, 1, 0, 8, hide_sll(1LL<<7), "S15148C1");
    set_bf_and_test(lv, s15148c1f2, 2, 0, 8, 1, "S15148C1");
    set_bf_and_test(lv, s15148c1f2, 2, 0, 8, hide_sll(1LL<<7), "S15148C1");
    set_bf_and_test(lv, s15148c1f3, 4, 0, 16, 1, "S15148C1");
    set_bf_and_test(lv, s15148c1f3, 4, 0, 16, hide_sll(1LL<<15), "S15148C1");
  }
}
static Arrange_To_Call_Me vS15148C1(Test_S15148C1, "S15148C1", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12822C1  {
  int s12822c1f0;
  short s12822c1f1;
  int s12822c1f2[2];
  ::S9624C10_nt s12822c1f3;
};
//SIG(1 S12822C1) C1{ Fi Fs Fi[2] FC2{ Fl[4]}}



static void Test_S12822C1()
{
  {
    init_simple_test("S12822C1");
    S12822C1 lv;
    check2(sizeof(lv), ABISELECT(48,32), "sizeof(S12822C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S12822C1)");
    check_field_offset(lv, s12822c1f0, 0, "S12822C1.s12822c1f0");
    check_field_offset(lv, s12822c1f1, 4, "S12822C1.s12822c1f1");
    check_field_offset(lv, s12822c1f2, 8, "S12822C1.s12822c1f2");
    check_field_offset(lv, s12822c1f3, 16, "S12822C1.s12822c1f3");
  }
}
static Arrange_To_Call_Me vS12822C1(Test_S12822C1, "S12822C1", ABISELECT(48,32));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6550C2  {
  long double s6550c2f0;
  virtual void  v2(); // _ZN7S6550C22v2Ev
  virtual void  v3(); // _ZN7S6550C22v3Ev
  virtual void  v4(); // _ZN7S6550C22v4Ev
  ~S6550C2(); // tgen
  S6550C2(); // tgen
};
//SIG(-1 S6550C2) C1{ v1 v2 v3 FD}


void  S6550C2 ::v2(){vfunc_called(this, "_ZN7S6550C22v2Ev");}
void  S6550C2 ::v3(){vfunc_called(this, "_ZN7S6550C22v3Ev");}
void  S6550C2 ::v4(){vfunc_called(this, "_ZN7S6550C22v4Ev");}
S6550C2 ::~S6550C2(){ note_dtor("S6550C2", this);} // tgen
S6550C2 ::S6550C2(){ note_ctor("S6550C2", this);} // tgen

static void Test_S6550C2()
{
  extern Class_Descriptor cd_S6550C2;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S6550C2, buf);
    S6550C2 *dp, &lv = *(dp=new (buf) S6550C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6550C2)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6550C2)");
    check_field_offset(lv, s6550c2f0, ABISELECT(16,4), "S6550C2.s6550c2f0");
    test_class_info(&lv, &cd_S6550C2);
    dp->~S6550C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6550C2(Test_S6550C2, "S6550C2", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6550C2C1Ev();
extern void _ZN7S6550C2D1Ev();
Name_Map name_map_S6550C2[] = {
  NSPAIR(_ZN7S6550C2C1Ev),
  NSPAIR(_ZN7S6550C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6550C2[];
extern void _ZN7S6550C22v2Ev();
extern void _ZN7S6550C22v3Ev();
extern void _ZN7S6550C22v4Ev();
static  VTBL_ENTRY vtc_S6550C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6550C2[0]),
  (VTBL_ENTRY)&_ZN7S6550C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6550C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6550C22v4Ev,
};
extern VTBL_ENTRY _ZTI7S6550C2[];
extern  VTBL_ENTRY _ZTV7S6550C2[];
Class_Descriptor cd_S6550C2 = {  "S6550C2", // class name
  0,0,//no base classes
  &(vtc_S6550C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6550C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6550C2),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  S6550C1  : S6550C2 {
  virtual  ~S6550C1(); // _ZN7S6550C1D1Ev
  virtual void  v1(); // _ZN7S6550C12v1Ev
  S6550C1(); // tgen
};
//SIG(1 S6550C1) C1{ BC2{ v2 v3 v4 FD} vd v1}


 S6550C1 ::~S6550C1(){ note_dtor("S6550C1", this);}
void  S6550C1 ::v1(){vfunc_called(this, "_ZN7S6550C12v1Ev");}
S6550C1 ::S6550C1(){ note_ctor("S6550C1", this);} // tgen

static void Test_S6550C1()
{
  extern Class_Descriptor cd_S6550C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(3,5)];
    init_test(&cd_S6550C1, buf);
    S6550C1 *dp, &lv = *(dp=new (buf) S6550C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S6550C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S6550C1)");
    check_base_class_offset(lv, (S6550C2*), 0, "S6550C1");
    test_class_info(&lv, &cd_S6550C1);
    dp->~S6550C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6550C1(Test_S6550C1, "S6550C1", ABISELECT(32,16));

#else // __cplusplus

extern void _ZN7S6550C1C1Ev();
extern void _ZN7S6550C1D1Ev();
Name_Map name_map_S6550C1[] = {
  NSPAIR(_ZN7S6550C1C1Ev),
  NSPAIR(_ZN7S6550C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6550C2;
extern VTBL_ENTRY _ZTI7S6550C2[];
extern  VTBL_ENTRY _ZTV7S6550C2[];
static Base_Class bases_S6550C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6550C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6550C1[];
extern void _ZN7S6550C22v2Ev();
extern void _ZN7S6550C22v3Ev();
extern void _ZN7S6550C22v4Ev();
extern void _ZN7S6550C1D1Ev();
extern void _ZN7S6550C1D0Ev();
extern void _ZN7S6550C12v1Ev();
static  VTBL_ENTRY vtc_S6550C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6550C1[0]),
  (VTBL_ENTRY)&_ZN7S6550C22v2Ev,
  (VTBL_ENTRY)&_ZN7S6550C22v3Ev,
  (VTBL_ENTRY)&_ZN7S6550C22v4Ev,
  (VTBL_ENTRY)&_ZN7S6550C1D1Ev,
  (VTBL_ENTRY)&_ZN7S6550C1D0Ev,
  (VTBL_ENTRY)&_ZN7S6550C12v1Ev,
};
extern VTBL_ENTRY _ZTI7S6550C1[];
extern  VTBL_ENTRY _ZTV7S6550C1[];
Class_Descriptor cd_S6550C1 = {  "S6550C1", // class name
  bases_S6550C1, 1,
  &(vtc_S6550C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(32,16), // object size
  NSPAIRA(_ZTI7S6550C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6550C1),8, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5545C1  : S21708C5_nt {
  int s5545c1f0[3];
  __tsi64 s5545c1f1[200];
};
//SIG(1 S5545C1) C1{ BC2{ Fi} Fi[3] FL[200]}



static void Test_S5545C1()
{
  extern Class_Descriptor cd_S5545C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(203,405)];
    init_test(&cd_S5545C1, buf);
    S5545C1 &lv = *(new (buf) S5545C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 1616, "sizeof(S5545C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S5545C1)");
    check_base_class_offset(lv, (S21708C5_nt*), 0, "S5545C1");
    check_field_offset(lv, s5545c1f0, 4, "S5545C1.s5545c1f0");
    check_field_offset(lv, s5545c1f1, 16, "S5545C1.s5545c1f1");
    test_class_info(&lv, &cd_S5545C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5545C1(Test_S5545C1, "S5545C1", 1616);

#else // __cplusplus

extern Class_Descriptor cd_S21708C5_nt;
extern VTBL_ENTRY _ZTI11S21708C5_nt[];
static Base_Class bases_S5545C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S21708C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5545C1 = {  "S5545C1", // class name
  bases_S5545C1, 1,
  0, // no vftv
  0, //no vtt
  1616, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S19978C2  {
  virtual void  v1(); // _ZN8S19978C22v1Ev
  ~S19978C2(); // tgen
  S19978C2(); // tgen
};
//SIG(-1 S19978C2) C1{ v1}


void  S19978C2 ::v1(){vfunc_called(this, "_ZN8S19978C22v1Ev");}
S19978C2 ::~S19978C2(){ note_dtor("S19978C2", this);} // tgen
S19978C2 ::S19978C2(){ note_ctor("S19978C2", this);} // tgen

static void Test_S19978C2()
{
  extern Class_Descriptor cd_S19978C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19978C2, buf);
    S19978C2 *dp, &lv = *(dp=new (buf) S19978C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19978C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19978C2)");
    test_class_info(&lv, &cd_S19978C2);
    dp->~S19978C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19978C2(Test_S19978C2, "S19978C2", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19978C2C1Ev();
extern void _ZN8S19978C2D1Ev();
Name_Map name_map_S19978C2[] = {
  NSPAIR(_ZN8S19978C2C1Ev),
  NSPAIR(_ZN8S19978C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S19978C2[];
extern void _ZN8S19978C22v1Ev();
static  VTBL_ENTRY vtc_S19978C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S19978C2[0]),
  (VTBL_ENTRY)&_ZN8S19978C22v1Ev,
};
extern VTBL_ENTRY _ZTI8S19978C2[];
extern  VTBL_ENTRY _ZTV8S19978C2[];
Class_Descriptor cd_S19978C2 = {  "S19978C2", // class name
  0,0,//no base classes
  &(vtc_S19978C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19978C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S19978C2),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  S19978C3  : virtual S19978C2 {
  virtual void  v2(); // _ZN8S19978C32v2Ev
  ~S19978C3(); // tgen
  S19978C3(); // tgen
};
//SIG(-1 S19978C3) C1{ VBC2{ v2} v1}


void  S19978C3 ::v2(){vfunc_called(this, "_ZN8S19978C32v2Ev");}
S19978C3 ::~S19978C3(){ note_dtor("S19978C3", this);} // tgen
S19978C3 ::S19978C3(){ note_ctor("S19978C3", this);} // tgen

static void Test_S19978C3()
{
  extern Class_Descriptor cd_S19978C3;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19978C3, buf);
    S19978C3 *dp, &lv = *(dp=new (buf) S19978C3());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19978C3)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19978C3)");
    check_base_class_offset(lv, (S19978C2*), 0, "S19978C3");
    test_class_info(&lv, &cd_S19978C3);
    dp->~S19978C3();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19978C3(Test_S19978C3, "S19978C3", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19978C3C1Ev();
extern void _ZN8S19978C3D1Ev();
Name_Map name_map_S19978C3[] = {
  NSPAIR(_ZN8S19978C3C1Ev),
  NSPAIR(_ZN8S19978C3D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19978C2;
extern VTBL_ENTRY _ZTI8S19978C2[];
extern  VTBL_ENTRY _ZTV8S19978C2[];
static Base_Class bases_S19978C3[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19978C2,    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 _ZTI8S19978C3[];
extern void _ZN8S19978C22v1Ev();
extern void _ZN8S19978C32v2Ev();
static  VTBL_ENTRY vtc_S19978C3[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19978C3[0]),
  (VTBL_ENTRY)&_ZN8S19978C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19978C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19978C3[];
static  VTT_ENTRY vtt_S19978C3[] = {
  {&(_ZTV8S19978C3[4]),  4,6},
  {&(_ZTV8S19978C3[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19978C3[];
extern  VTBL_ENTRY _ZTV8S19978C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19978C3[];
Class_Descriptor cd_S19978C3 = {  "S19978C3", // class name
  bases_S19978C3, 1,
  &(vtc_S19978C3[0]), // expected_vtbl_contents
  &(vtt_S19978C3[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19978C3),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S19978C3),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19978C3),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  S19978C1  : virtual S19978C2 , S19978C3 {
  ~S19978C1(); // tgen
  S19978C1(); // tgen
};
//SIG(1 S19978C1) C1{ VBC2{ v1} BC3{ VBC2 v2}}


S19978C1 ::~S19978C1(){ note_dtor("S19978C1", this);} // tgen
S19978C1 ::S19978C1(){ note_ctor("S19978C1", this);} // tgen

static void Test_S19978C1()
{
  extern Class_Descriptor cd_S19978C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[2];
    init_test(&cd_S19978C1, buf);
    S19978C1 *dp, &lv = *(dp=new (buf) S19978C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(S19978C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S19978C1)");
    check_base_class_offset(lv, (S19978C2*), 0, "S19978C1");
    check_base_class_offset(lv, (S19978C2*)(S19978C3*), 0, "S19978C1");
    check_base_class_offset(lv, (S19978C3*), 0, "S19978C1");
    test_class_info(&lv, &cd_S19978C1);
    dp->~S19978C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS19978C1(Test_S19978C1, "S19978C1", ABISELECT(8,4));

#else // __cplusplus

extern void _ZN8S19978C1C1Ev();
extern void _ZN8S19978C1D1Ev();
Name_Map name_map_S19978C1[] = {
  NSPAIR(_ZN8S19978C1C1Ev),
  NSPAIR(_ZN8S19978C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S19978C2;
extern VTBL_ENTRY _ZTI8S19978C2[];
extern  VTBL_ENTRY _ZTV8S19978C2[];
extern Class_Descriptor cd_S19978C3;
extern VTBL_ENTRY _ZTI8S19978C3[];
extern  VTBL_ENTRY _ZTV8S19978C3[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19978C3[];
static Base_Class bases_S19978C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S19978C2,    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
  1, 1},
  {&cd_S19978C3,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    4, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    2, //bcp->base_subarray_index_in_construction_vtbl_array
    2, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI8S19978C1[];
extern void _ZN8S19978C22v1Ev();
extern void _ZN8S19978C32v2Ev();
static  VTBL_ENTRY vtc_S19978C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19978C1[0]),
  (VTBL_ENTRY)&_ZN8S19978C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19978C32v2Ev,
};
extern VTBL_ENTRY _ZTV8S19978C1[];
extern void _ZN8S19978C22v1Ev();
extern void _ZN8S19978C32v2Ev();
static  VTBL_ENTRY _tg__ZTV8S19978C3__8S19978C1[] = {
  0,
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S19978C3[0]),
  (VTBL_ENTRY)&_ZN8S19978C22v1Ev,
  (VTBL_ENTRY)&_ZN8S19978C32v2Ev,
};
static  VTT_ENTRY vtt_S19978C1[] = {
  {&(_ZTV8S19978C1[4]),  4,6},
  {&(_tg__ZTV8S19978C3__8S19978C1[4]),  4,6},
  {&(_tg__ZTV8S19978C3__8S19978C1[4]),  4,6},
  {&(_ZTV8S19978C1[4]),  4,6},
};
extern VTBL_ENTRY _ZTI8S19978C1[];
extern  VTBL_ENTRY _ZTV8S19978C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S19978C1[];
Class_Descriptor cd_S19978C1 = {  "S19978C1", // class name
  bases_S19978C1, 2,
  &(vtc_S19978C1[0]), // expected_vtbl_contents
  &(vtt_S19978C1[0]), // expected_vtt_contents
  ABISELECT(8,4), // object size
  NSPAIRA(_ZTI8S19978C1),ABISELECT(56,32), //typeinfo_var
  NSPAIRA(_ZTV8S19978C1),6, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S19978C1),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  S20724C2  : virtual S9624C48 {
  long s20724c2f0;
  ~S20724C2(); // tgen
  S20724C2(); // tgen
};
//SIG(-1 S20724C2) C1{ VBC2{ m} Fl}


S20724C2 ::~S20724C2(){ note_dtor("S20724C2", this);} // tgen
S20724C2 ::S20724C2(){ note_ctor("S20724C2", this);} // tgen

static void Test_S20724C2()
{
  extern Class_Descriptor cd_S20724C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S20724C2, buf);
    S20724C2 *dp, &lv = *(dp=new (buf) S20724C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S20724C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20724C2)");
    check_base_class_offset(lv, (S9624C48*), 0, "S20724C2");
    check_field_offset(lv, s20724c2f0, ABISELECT(8,4), "S20724C2.s20724c2f0");
    test_class_info(&lv, &cd_S20724C2);
    dp->~S20724C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20724C2(Test_S20724C2, "S20724C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN8S20724C2C1Ev();
extern void _ZN8S20724C2D1Ev();
Name_Map name_map_S20724C2[] = {
  NSPAIR(_ZN8S20724C2C1Ev),
  NSPAIR(_ZN8S20724C2D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
static Base_Class bases_S20724C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    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 _ZTI8S20724C2[];
static  VTBL_ENTRY vtc_S20724C2[] = {
  0,
  0,
  (VTBL_ENTRY)&(_ZTI8S20724C2[0]),
};
extern VTBL_ENTRY _ZTV8S20724C2[];
static  VTT_ENTRY vtt_S20724C2[] = {
  {&(_ZTV8S20724C2[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20724C2[];
extern  VTBL_ENTRY _ZTV8S20724C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20724C2[];
Class_Descriptor cd_S20724C2 = {  "S20724C2", // class name
  bases_S20724C2, 1,
  &(vtc_S20724C2[0]), // expected_vtbl_contents
  &(vtt_S20724C2[0]), // expected_vtt_contents
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI8S20724C2),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20724C2),3, //virtual function table var
  3, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20724C2),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  S20724C1  : virtual S20724C2 {
  virtual  ~S20724C1(); // _ZN8S20724C1D2Ev
  virtual void  v1(); // _ZN8S20724C12v1Ev
  S20724C1(); // tgen
};
//SIG(1 S20724C1) C1{ VBC2{ VBC3{ m} Fl} vd v1}


 S20724C1 ::~S20724C1(){ note_dtor("S20724C1", this);}
void  S20724C1 ::v1(){vfunc_called(this, "_ZN8S20724C12v1Ev");}
S20724C1 ::S20724C1(){ note_ctor("S20724C1", this);} // tgen

static void Test_S20724C1()
{
  extern Class_Descriptor cd_S20724C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[4];
    init_test(&cd_S20724C1, buf);
    S20724C1 *dp, &lv = *(dp=new (buf) S20724C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,12), "sizeof(S20724C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S20724C1)");
    check_base_class_offset(lv, (S9624C48*)(S20724C2*), 0, "S20724C1");
    check_base_class_offset(lv, (S20724C2*), ABISELECT(8,4), "S20724C1");
    test_class_info(&lv, &cd_S20724C1);
    dp->~S20724C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS20724C1(Test_S20724C1, "S20724C1", ABISELECT(24,12));

#else // __cplusplus

extern void _ZN8S20724C1C1Ev();
extern void _ZN8S20724C1D2Ev();
Name_Map name_map_S20724C1[] = {
  NSPAIR(_ZN8S20724C1C1Ev),
  NSPAIR(_ZN8S20724C1D2Ev),
  {0,0}
};
extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S20724C2;
extern VTBL_ENTRY _ZTI8S20724C2[];
extern  VTBL_ENTRY _ZTV8S20724C2[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20724C2[];
static Base_Class bases_S20724C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, 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_S20724C2,    ABISELECT(8,4), //bcp->offset
    7, //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 _ZTI8S20724C1[];
extern void _ZN8S20724C1D1Ev();
extern void _ZN8S20724C1D0Ev();
extern void _ZN8S20724C12v1Ev();
static  VTBL_ENTRY vtc_S20724C1[] = {
  0,
  ABISELECT(8,4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20724C1[0]),
  (VTBL_ENTRY)&_ZN8S20724C1D1Ev,
  (VTBL_ENTRY)&_ZN8S20724C1D0Ev,
  (VTBL_ENTRY)&_ZN8S20724C12v1Ev,
  ABISELECT(-8,-4),
  ABISELECT(-8,-4),
  (VTBL_ENTRY)&(_ZTI8S20724C1[0]),
};
extern VTBL_ENTRY _ZTV8S20724C1[];
static  VTBL_ENTRY _tg__ZTV8S20724C2__8S20724C1[] = {
  ABISELECT(-8,-4),
  0,
  (VTBL_ENTRY)&(_ZTI8S20724C2[0]),
};
static  VTT_ENTRY vtt_S20724C1[] = {
  {&(_ZTV8S20724C1[4]),  4,10},
  {&(_ZTV8S20724C1[10]),  10,10},
  {&(_tg__ZTV8S20724C2__8S20724C1[3]),  3,3},
};
extern VTBL_ENTRY _ZTI8S20724C1[];
extern  VTBL_ENTRY _ZTV8S20724C1[];
extern  VTBL_ENTRY * __attribute__((weak))_ZTT8S20724C1[];
Class_Descriptor cd_S20724C1 = {  "S20724C1", // class name
  bases_S20724C1, 2,
  &(vtc_S20724C1[0]), // expected_vtbl_contents
  &(vtt_S20724C1[0]), // expected_vtt_contents
  ABISELECT(24,12), // object size
  NSPAIRA(_ZTI8S20724C1),ABISELECT(40,24), //typeinfo_var
  NSPAIRA(_ZTV8S20724C1),10, //virtual function table var
  4, // offset into main vftv pointed to by object[0]
  NSPAIRA(_ZTT8S20724C1),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  S2473C2  : S9336C5_nt {
  char s2473c2f0;
};
//SIG(-1 S2473C2) C1{ BC2{ Fi[3]} Fc}



static void Test_S2473C2()
{
  extern Class_Descriptor cd_S2473C2;
  void *lvp;
  {
    int buf[5];
    init_test(&cd_S2473C2, buf);
    S2473C2 &lv = *(new (buf) S2473C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), 16, "sizeof(S2473C2)");
    check2(__alignof__(lv), 4, "__alignof__(S2473C2)");
    check_base_class_offset(lv, (S9336C5_nt*), 0, "S2473C2");
    check_field_offset(lv, s2473c2f0, 12, "S2473C2.s2473c2f0");
    test_class_info(&lv, &cd_S2473C2);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2473C2(Test_S2473C2, "S2473C2", 16);

#else // __cplusplus

extern Class_Descriptor cd_S9336C5_nt;
static Base_Class bases_S2473C2[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9336C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2473C2 = {  "S2473C2", // class name
  bases_S2473C2, 1,
  0, // no vftv
  0, //no vtt
  16, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S2473C1  : S2473C2 {
  void *s2473c1f0;
};
//SIG(1 S2473C1) C1{ BC2{ BC3{ Fi[3]} Fc} Fp}



static void Test_S2473C1()
{
  extern Class_Descriptor cd_S2473C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(4,6)];
    init_test(&cd_S2473C1, buf);
    S2473C1 &lv = *(new (buf) S2473C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S2473C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S2473C1)");
    check_base_class_offset(lv, (S9336C5_nt*)(S2473C2*), 0, "S2473C1");
    check_base_class_offset(lv, (S2473C2*), 0, "S2473C1");
    check_field_offset(lv, s2473c1f0, 16, "S2473C1.s2473c1f0");
    test_class_info(&lv, &cd_S2473C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS2473C1(Test_S2473C1, "S2473C1", ABISELECT(24,20));

#else // __cplusplus

extern Class_Descriptor cd_S9336C5_nt;
extern Class_Descriptor cd_S2473C2;
static Base_Class bases_S2473C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9336C5_nt,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    1, //immediately_derived
  0, 0},
  {&cd_S2473C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S2473C1 = {  "S2473C1", // class name
  bases_S2473C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(24,20), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S16823C1  {
  int s16823c1f0;
  ::S10296C48 s16823c1f1;
  int s16823c1f2;
  void  mf16823c1(); // _ZN8S16823C19mf16823c1Ev
};
//SIG(1 S16823C1) C1{ m Fi FC2{ m Fp[2]} Fi}


void  S16823C1 ::mf16823c1(){}

static void Test_S16823C1()
{
  {
    init_simple_test("S16823C1");
    S16823C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S16823C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S16823C1)");
    check_field_offset(lv, s16823c1f0, 0, "S16823C1.s16823c1f0");
    check_field_offset(lv, s16823c1f1, ABISELECT(8,4), "S16823C1.s16823c1f1");
    check_field_offset(lv, s16823c1f2, ABISELECT(24,12), "S16823C1.s16823c1f2");
  }
}
static Arrange_To_Call_Me vS16823C1(Test_S16823C1, "S16823C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12080C1  {
  ::S1540C14_nt s12080c1f0;
  ::S1540C14_nt s12080c1f1;
  int s12080c1f2;
};
//SIG(1 S12080C1) C1{ FC2{ m Fi[3]} FC2 Fi}



static void Test_S12080C1()
{
  {
    init_simple_test("S12080C1");
    S12080C1 lv;
    check2(sizeof(lv), 28, "sizeof(S12080C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12080C1)");
    check_field_offset(lv, s12080c1f0, 0, "S12080C1.s12080c1f0");
    check_field_offset(lv, s12080c1f1, 12, "S12080C1.s12080c1f1");
    check_field_offset(lv, s12080c1f2, 24, "S12080C1.s12080c1f2");
  }
}
static Arrange_To_Call_Me vS12080C1(Test_S12080C1, "S12080C1", 28);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17937C2  {
  void *s17937c2f0;
  char s17937c2f1;
};
//SIG(-1 S17937C2) C1{ Fp Fc}



static void Test_S17937C2()
{
  {
    init_simple_test("S17937C2");
    S17937C2 lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S17937C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17937C2)");
    check_field_offset(lv, s17937c2f0, 0, "S17937C2.s17937c2f0");
    check_field_offset(lv, s17937c2f1, ABISELECT(8,4), "S17937C2.s17937c2f1");
  }
}
static Arrange_To_Call_Me vS17937C2(Test_S17937C2, "S17937C2", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17937C1  {
  void *s17937c1f0[2];
  ::S17937C2 s17937c1f1;
  void  mf17937c1(); // _ZN8S17937C19mf17937c1Ev
};
//SIG(1 S17937C1) C1{ m Fp[2] FC2{ Fp Fc}}


void  S17937C1 ::mf17937c1(){}

static void Test_S17937C1()
{
  {
    init_simple_test("S17937C1");
    S17937C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S17937C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17937C1)");
    check_field_offset(lv, s17937c1f0, 0, "S17937C1.s17937c1f0");
    check_field_offset(lv, s17937c1f1, ABISELECT(16,8), "S17937C1.s17937c1f1");
  }
}
static Arrange_To_Call_Me vS17937C1(Test_S17937C1, "S17937C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6113C1  : S9624C48 , S9624C39 {
  void *s6113c1f0[8];
};
//SIG(1 S6113C1) C1{ BC2{ m} BC3{ m} Fp[8]}



static void Test_S6113C1()
{
  extern Class_Descriptor cd_S6113C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[9];
    init_test(&cd_S6113C1, buf);
    S6113C1 &lv = *(new (buf) S6113C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(64,32), "sizeof(S6113C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6113C1)");
    check_base_class_offset(lv, (S9624C48*), 0, "S6113C1");
    check_base_class_offset(lv, (S9624C39*), 0, "S6113C1");
    check_field_offset(lv, s6113c1f0, 0, "S6113C1.s6113c1f0");
    test_class_info(&lv, &cd_S6113C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6113C1(Test_S6113C1, "S6113C1", ABISELECT(64,32));

#else // __cplusplus

extern Class_Descriptor cd_S9624C48;
extern VTBL_ENTRY _ZTI8S9624C48[];
extern Class_Descriptor cd_S9624C39;
extern VTBL_ENTRY _ZTI8S9624C39[];
static Base_Class bases_S6113C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S9624C48,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    -1, //init_seq
    -1, //immediately_derived
  1, 0},
  {&cd_S9624C39,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S6113C1 = {  "S6113C1", // class name
  bases_S6113C1, 2,
  0, // no vftv
  0, //no vtt
  ABISELECT(64,32), // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18540C1  {
  void *s18540c1f0;
  short s18540c1f1;
  char s18540c1f2;
  int s18540c1f3[5];
  virtual void  v1(); // _ZN8S18540C12v1Ev
  ~S18540C1(); // tgen
  S18540C1(); // tgen
};
//SIG(1 S18540C1) C1{ v1 Fp Fs Fc Fi[5]}


void  S18540C1 ::v1(){vfunc_called(this, "_ZN8S18540C12v1Ev");}
S18540C1 ::~S18540C1(){ note_dtor("S18540C1", this);} // tgen
S18540C1 ::S18540C1(){ note_ctor("S18540C1", this);} // tgen

static void Test_S18540C1()
{
  extern Class_Descriptor cd_S18540C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[ABISELECT(6,9)];
    init_test(&cd_S18540C1, buf);
    S18540C1 *dp, &lv = *(dp=new (buf) S18540C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(40,32), "sizeof(S18540C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S18540C1)");
    check_field_offset(lv, s18540c1f0, ABISELECT(8,4), "S18540C1.s18540c1f0");
    check_field_offset(lv, s18540c1f1, ABISELECT(16,8), "S18540C1.s18540c1f1");
    check_field_offset(lv, s18540c1f2, ABISELECT(18,10), "S18540C1.s18540c1f2");
    check_field_offset(lv, s18540c1f3, ABISELECT(20,12), "S18540C1.s18540c1f3");
    test_class_info(&lv, &cd_S18540C1);
    dp->~S18540C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS18540C1(Test_S18540C1, "S18540C1", ABISELECT(40,32));

#else // __cplusplus

extern void _ZN8S18540C1C1Ev();
extern void _ZN8S18540C1D1Ev();
Name_Map name_map_S18540C1[] = {
  NSPAIR(_ZN8S18540C1C1Ev),
  NSPAIR(_ZN8S18540C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S18540C1[];
extern void _ZN8S18540C12v1Ev();
static  VTBL_ENTRY vtc_S18540C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S18540C1[0]),
  (VTBL_ENTRY)&_ZN8S18540C12v1Ev,
};
extern VTBL_ENTRY _ZTI8S18540C1[];
extern  VTBL_ENTRY _ZTV8S18540C1[];
Class_Descriptor cd_S18540C1 = {  "S18540C1", // class name
  0,0,//no base classes
  &(vtc_S18540C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(40,32), // object size
  NSPAIRA(_ZTI8S18540C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S18540C1),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  S14349C1  {
  void *s14349c1f0;
  int s14349c1f1[4];
  void *s14349c1f2;
  int s14349c1f3[3];
};
//SIG(1 S14349C1) C1{ Fp Fi[4] Fp Fi[3]}



static void Test_S14349C1()
{
  {
    init_simple_test("S14349C1");
    S14349C1 lv;
    check2(sizeof(lv), ABISELECT(48,36), "sizeof(S14349C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14349C1)");
    check_field_offset(lv, s14349c1f0, 0, "S14349C1.s14349c1f0");
    check_field_offset(lv, s14349c1f1, ABISELECT(8,4), "S14349C1.s14349c1f1");
    check_field_offset(lv, s14349c1f2, ABISELECT(24,20), "S14349C1.s14349c1f2");
    check_field_offset(lv, s14349c1f3, ABISELECT(32,24), "S14349C1.s14349c1f3");
  }
}
static Arrange_To_Call_Me vS14349C1(Test_S14349C1, "S14349C1", ABISELECT(48,36));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10534C1  {
  char s10534c1f0:2;
  unsigned char s10534c1f1:1;
  char s10534c1f2:5;
  char s10534c1f3;
};
//SIG(1 S10534C1) C1{ Fc:2 Fc:1 Fc:5 Fc}



static void Test_S10534C1()
{
  {
    init_simple_test("S10534C1");
    static S10534C1 lv;
    check2(sizeof(lv), 2, "sizeof(S10534C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10534C1)");
    set_bf_and_test(lv, s10534c1f0, 0, 0, 2, 1, "S10534C1");
    set_bf_and_test(lv, s10534c1f0, 0, 0, 2, hide_sll(1LL<<1), "S10534C1");
    set_bf_and_test(lv, s10534c1f1, 0, 2, 1, 1, "S10534C1");
    set_bf_and_test(lv, s10534c1f2, 0, 3, 5, 1, "S10534C1");
    set_bf_and_test(lv, s10534c1f2, 0, 3, 5, hide_sll(1LL<<4), "S10534C1");
    check_field_offset(lv, s10534c1f3, 1, "S10534C1.s10534c1f3");
  }
}
static Arrange_To_Call_Me vS10534C1(Test_S10534C1, "S10534C1", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S15636C1  {
  ::S20948C8 s15636c1f0;
  void *s15636c1f1;
  void  mf15636c1(); // _ZN8S15636C19mf15636c1Ev
};
//SIG(1 S15636C1) C1{ m FC2{ m Fc[7]} Fp}


void  S15636C1 ::mf15636c1(){}

static void Test_S15636C1()
{
  {
    init_simple_test("S15636C1");
    S15636C1 lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(S15636C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S15636C1)");
    check_field_offset(lv, s15636c1f0, 0, "S15636C1.s15636c1f0");
    check_field_offset(lv, s15636c1f1, 8, "S15636C1.s15636c1f1");
  }
}
static Arrange_To_Call_Me vS15636C1(Test_S15636C1, "S15636C1", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14498C1  {
  void *s14498c1f0[2];
  int s14498c1f1;
  char s14498c1f2[108];
};
//SIG(1 S14498C1) C1{ Fp[2] Fi Fc[108]}



static void Test_S14498C1()
{
  {
    init_simple_test("S14498C1");
    S14498C1 lv;
    check2(sizeof(lv), ABISELECT(128,120), "sizeof(S14498C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14498C1)");
    check_field_offset(lv, s14498c1f0, 0, "S14498C1.s14498c1f0");
    check_field_offset(lv, s14498c1f1, ABISELECT(16,8), "S14498C1.s14498c1f1");
    check_field_offset(lv, s14498c1f2, ABISELECT(20,12), "S14498C1.s14498c1f2");
  }
}
static Arrange_To_Call_Me vS14498C1(Test_S14498C1, "S14498C1", ABISELECT(128,120));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S12109C1  {
  ::S20489C10_nt s12109c1f0;
  ::S20489C10_nt s12109c1f1;
  int s12109c1f2;
};
//SIG(1 S12109C1) C1{ FC2{ m Fi} FC2 Fi}



static void Test_S12109C1()
{
  {
    init_simple_test("S12109C1");
    S12109C1 lv;
    check2(sizeof(lv), 12, "sizeof(S12109C1)");
    check2(__alignof__(lv), 4, "__alignof__(S12109C1)");
    check_field_offset(lv, s12109c1f0, 0, "S12109C1.s12109c1f0");
    check_field_offset(lv, s12109c1f1, 4, "S12109C1.s12109c1f1");
    check_field_offset(lv, s12109c1f2, 8, "S12109C1.s12109c1f2");
  }
}
static Arrange_To_Call_Me vS12109C1(Test_S12109C1, "S12109C1", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10825C1  {
  char s10825c1f0[32];
  __tsi64 s10825c1f1[2];
  int s10825c1f2;
};
//SIG(1 S10825C1) C1{ Fc[32] FL[2] Fi}



static void Test_S10825C1()
{
  {
    init_simple_test("S10825C1");
    S10825C1 lv;
    check2(sizeof(lv), ABISELECT(56,52), "sizeof(S10825C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10825C1)");
    check_field_offset(lv, s10825c1f0, 0, "S10825C1.s10825c1f0");
    check_field_offset(lv, s10825c1f1, 32, "S10825C1.s10825c1f1");
    check_field_offset(lv, s10825c1f2, 48, "S10825C1.s10825c1f2");
  }
}
static Arrange_To_Call_Me vS10825C1(Test_S10825C1, "S10825C1", ABISELECT(56,52));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14610C1  {
  void *s14610c1f0[3];
  int s14610c1f1;
  void *s14610c1f2[2];
};
//SIG(1 S14610C1) C1{ Fp[3] Fi Fp[2]}



static void Test_S14610C1()
{
  {
    init_simple_test("S14610C1");
    S14610C1 lv;
    check2(sizeof(lv), ABISELECT(48,24), "sizeof(S14610C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14610C1)");
    check_field_offset(lv, s14610c1f0, 0, "S14610C1.s14610c1f0");
    check_field_offset(lv, s14610c1f1, ABISELECT(24,12), "S14610C1.s14610c1f1");
    check_field_offset(lv, s14610c1f2, ABISELECT(32,16), "S14610C1.s14610c1f2");
  }
}
static Arrange_To_Call_Me vS14610C1(Test_S14610C1, "S14610C1", ABISELECT(48,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14843C1  {
  short s14843c1f0:7;
  unsigned short s14843c1f1:1;
  short s14843c1f2:8;
};
//SIG(1 S14843C1) C1{ Fs:7 Fs:1 Fs:8}



static void Test_S14843C1()
{
  {
    init_simple_test("S14843C1");
    static S14843C1 lv;
    check2(sizeof(lv), 2, "sizeof(S14843C1)");
    check2(__alignof__(lv), 2, "__alignof__(S14843C1)");
    set_bf_and_test(lv, s14843c1f0, 0, 0, 7, 1, "S14843C1");
    set_bf_and_test(lv, s14843c1f0, 0, 0, 7, hide_sll(1LL<<6), "S14843C1");
    set_bf_and_test(lv, s14843c1f1, 0, 7, 1, 1, "S14843C1");
    set_bf_and_test(lv, s14843c1f2, 1, 0, 8, 1, "S14843C1");
    set_bf_and_test(lv, s14843c1f2, 1, 0, 8, hide_sll(1LL<<7), "S14843C1");
  }
}
static Arrange_To_Call_Me vS14843C1(Test_S14843C1, "S14843C1", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13039C1  {
  int s13039c1f0[2];
  char s13039c1f1[4];
  int s13039c1f2;
};
//SIG(1 S13039C1) C1{ Fi[2] Fc[4] Fi}



static void Test_S13039C1()
{
  {
    init_simple_test("S13039C1");
    S13039C1 lv;
    check2(sizeof(lv), 16, "sizeof(S13039C1)");
    check2(__alignof__(lv), 4, "__alignof__(S13039C1)");
    check_field_offset(lv, s13039c1f0, 0, "S13039C1.s13039c1f0");
    check_field_offset(lv, s13039c1f1, 8, "S13039C1.s13039c1f1");
    check_field_offset(lv, s13039c1f2, 12, "S13039C1.s13039c1f2");
  }
}
static Arrange_To_Call_Me vS13039C1(Test_S13039C1, "S13039C1", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S5507C2  {
  int s5507c2f0:6;
};
//SIG(-1 S5507C2) C1{ Fi:6}



static void Test_S5507C2()
{
  {
    init_simple_test("S5507C2");
    static S5507C2 lv;
    check2(sizeof(lv), 4, "sizeof(S5507C2)");
    check2(__alignof__(lv), 4, "__alignof__(S5507C2)");
    set_bf_and_test(lv, s5507c2f0, 0, 0, 6, 1, "S5507C2");
    set_bf_and_test(lv, s5507c2f0, 0, 0, 6, hide_sll(1LL<<5), "S5507C2");
  }
}
static Arrange_To_Call_Me vS5507C2(Test_S5507C2, "S5507C2", 4);

#else // __cplusplus

Class_Descriptor cd_S5507C2 = {  "S5507C2", // 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  S5507C1  : S5507C2 {
  int s5507c1f0:4;
};
//SIG(1 S5507C1) C1{ BC2{ Fi:6} Fi:4}



static void Test_S5507C1()
{
  extern Class_Descriptor cd_S5507C1;
  void *lvp;
  {
    int buf[3];
    init_test(&cd_S5507C1, buf);
    S5507C1 &lv = *(new (buf) S5507C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), 8, "sizeof(S5507C1)");
    check2(__alignof__(lv), 4, "__alignof__(S5507C1)");
    check_base_class_offset(lv, (S5507C2*), 0, "S5507C1");
    set_bf_and_test(lv, s5507c1f0, 4, 0, 4, 1, "S5507C1");
    set_bf_and_test(lv, s5507c1f0, 4, 0, 4, hide_sll(1LL<<3), "S5507C1");
    test_class_info(&lv, &cd_S5507C1);
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS5507C1(Test_S5507C1, "S5507C1", 8);

#else // __cplusplus

extern Class_Descriptor cd_S5507C2;
static Base_Class bases_S5507C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S5507C2,    0, //bcp->offset
    -1, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //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_S5507C1 = {  "S5507C1", // class name
  bases_S5507C1, 1,
  0, // no vftv
  0, //no vtt
  8, // object size
  {0,0},0, // typeinfo_var
  {0,0},0, // virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  0, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S17452C1  {
  void *s17452c1f0;
  char s17452c1f1;
  void *s17452c1f2[2];
  void  mf17452c1(); // _ZN8S17452C19mf17452c1Ev
};
//SIG(1 S17452C1) C1{ m Fp Fc Fp[2]}


void  S17452C1 ::mf17452c1(){}

static void Test_S17452C1()
{
  {
    init_simple_test("S17452C1");
    S17452C1 lv;
    check2(sizeof(lv), ABISELECT(32,16), "sizeof(S17452C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S17452C1)");
    check_field_offset(lv, s17452c1f0, 0, "S17452C1.s17452c1f0");
    check_field_offset(lv, s17452c1f1, ABISELECT(8,4), "S17452C1.s17452c1f1");
    check_field_offset(lv, s17452c1f2, ABISELECT(16,8), "S17452C1.s17452c1f2");
  }
}
static Arrange_To_Call_Me vS17452C1(Test_S17452C1, "S17452C1", ABISELECT(32,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11801C2_nt  {
  __tsi64 s11801c2f0;
};
//SIG(-1 S11801C2_nt) C1{ FL}



//skip512 S11801C2_nt

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S11801C1  {
  ::S11801C2_nt s11801c1f0;
  int s11801c1f1[3];
};
//SIG(1 S11801C1) C1{ FC2{ FL} Fi[3]}



static void Test_S11801C1()
{
  {
    init_simple_test("S11801C1");
    S11801C1 lv;
    check2(sizeof(lv), ABISELECT(24,20), "sizeof(S11801C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S11801C1)");
    check_field_offset(lv, s11801c1f0, 0, "S11801C1.s11801c1f0");
    check_field_offset(lv, s11801c1f1, 8, "S11801C1.s11801c1f1");
  }
}
static Arrange_To_Call_Me vS11801C1(Test_S11801C1, "S11801C1", ABISELECT(24,20));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S21558C1  {
  long double s21558c1f0[10];
  void  mf21558c1(); // _ZN8S21558C19mf21558c1Ev
  virtual  ~S21558C1(); // _ZN8S21558C1D1Ev
  S21558C1(); // tgen
};
//SIG(1 S21558C1) C1{ vd m FD[10]}


void  S21558C1 ::mf21558c1(){}
 S21558C1 ::~S21558C1(){ note_dtor("S21558C1", this);}
S21558C1 ::S21558C1(){ note_ctor("S21558C1", this);} // tgen

static void Test_S21558C1()
{
  extern Class_Descriptor cd_S21558C1;
  void *lvp;
  {
    ABISELECT(sal_16,int) buf[ABISELECT(12,32)];
    init_test(&cd_S21558C1, buf);
    S21558C1 *dp, &lv = *(dp=new (buf) S21558C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(176,124), "sizeof(S21558C1)");
    check2(__alignof__(lv), ABISELECT(16,4), "__alignof__(S21558C1)");
    check_field_offset(lv, s21558c1f0, ABISELECT(16,4), "S21558C1.s21558c1f0");
    test_class_info(&lv, &cd_S21558C1);
    dp->~S21558C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS21558C1(Test_S21558C1, "S21558C1", ABISELECT(176,124));

#else // __cplusplus

extern void _ZN8S21558C1C1Ev();
extern void _ZN8S21558C1D1Ev();
Name_Map name_map_S21558C1[] = {
  NSPAIR(_ZN8S21558C1C1Ev),
  NSPAIR(_ZN8S21558C1D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI8S21558C1[];
extern void _ZN8S21558C1D1Ev();
extern void _ZN8S21558C1D0Ev();
static  VTBL_ENTRY vtc_S21558C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI8S21558C1[0]),
  (VTBL_ENTRY)&_ZN8S21558C1D1Ev,
  (VTBL_ENTRY)&_ZN8S21558C1D0Ev,
};
extern VTBL_ENTRY _ZTI8S21558C1[];
extern  VTBL_ENTRY _ZTV8S21558C1[];
Class_Descriptor cd_S21558C1 = {  "S21558C1", // class name
  0,0,//no base classes
  &(vtc_S21558C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(176,124), // object size
  NSPAIRA(_ZTI8S21558C1),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV8S21558C1),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  S10567C1  {
  char s10567c1f0[1024];
  long s10567c1f1;
};
//SIG(1 S10567C1) C1{ Fc[1024] Fl}



static void Test_S10567C1()
{
  {
    init_simple_test("S10567C1");
    S10567C1 lv;
    check2(sizeof(lv), ABISELECT(1032,1028), "sizeof(S10567C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S10567C1)");
    check_field_offset(lv, s10567c1f0, 0, "S10567C1.s10567c1f0");
    check_field_offset(lv, s10567c1f1, 1024, "S10567C1.s10567c1f1");
  }
}
static Arrange_To_Call_Me vS10567C1(Test_S10567C1, "S10567C1", ABISELECT(1032,1028));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S13950C1  {
  __tsi64 s13950c1f0[2];
  void *s13950c1f1[2];
};
//SIG(1 S13950C1) C1{ FL[2] Fp[2]}



static void Test_S13950C1()
{
  {
    init_simple_test("S13950C1");
    S13950C1 lv;
    check2(sizeof(lv), ABISELECT(32,24), "sizeof(S13950C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S13950C1)");
    check_field_offset(lv, s13950c1f0, 0, "S13950C1.s13950c1f0");
    check_field_offset(lv, s13950c1f1, 16, "S13950C1.s13950c1f1");
  }
}
static Arrange_To_Call_Me vS13950C1(Test_S13950C1, "S13950C1", ABISELECT(32,24));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S14390C1  {
  void *s14390c1f0;
  long s14390c1f1;
  void *s14390c1f2[5];
};
//SIG(1 S14390C1) C1{ Fp Fl Fp[5]}



static void Test_S14390C1()
{
  {
    init_simple_test("S14390C1");
    S14390C1 lv;
    check2(sizeof(lv), ABISELECT(56,28), "sizeof(S14390C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S14390C1)");
    check_field_offset(lv, s14390c1f0, 0, "S14390C1.s14390c1f0");
    check_field_offset(lv, s14390c1f1, ABISELECT(8,4), "S14390C1.s14390c1f1");
    check_field_offset(lv, s14390c1f2, ABISELECT(16,8), "S14390C1.s14390c1f2");
  }
}
static Arrange_To_Call_Me vS14390C1(Test_S14390C1, "S14390C1", ABISELECT(56,28));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S6370C2  {
  long s6370c2f0;
  virtual void  v1(); // _ZN7S6370C22v1Ev
  ~S6370C2(); // tgen
  S6370C2(); // tgen
};
//SIG(-1 S6370C2) C1{ v1 Fl}


void  S6370C2 ::v1(){vfunc_called(this, "_ZN7S6370C22v1Ev");}
S6370C2 ::~S6370C2(){ note_dtor("S6370C2", this);} // tgen
S6370C2 ::S6370C2(){ note_ctor("S6370C2", this);} // tgen

static void Test_S6370C2()
{
  extern Class_Descriptor cd_S6370C2;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6370C2, buf);
    S6370C2 *dp, &lv = *(dp=new (buf) S6370C2());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6370C2)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6370C2)");
    check_field_offset(lv, s6370c2f0, ABISELECT(8,4), "S6370C2.s6370c2f0");
    test_class_info(&lv, &cd_S6370C2);
    dp->~S6370C2();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6370C2(Test_S6370C2, "S6370C2", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6370C2C1Ev();
extern void _ZN7S6370C2D1Ev();
Name_Map name_map_S6370C2[] = {
  NSPAIR(_ZN7S6370C2C1Ev),
  NSPAIR(_ZN7S6370C2D1Ev),
  {0,0}
};
extern VTBL_ENTRY _ZTI7S6370C2[];
extern void _ZN7S6370C22v1Ev();
static  VTBL_ENTRY vtc_S6370C2[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6370C2[0]),
  (VTBL_ENTRY)&_ZN7S6370C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S6370C2[];
extern  VTBL_ENTRY _ZTV7S6370C2[];
Class_Descriptor cd_S6370C2 = {  "S6370C2", // class name
  0,0,//no base classes
  &(vtc_S6370C2[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6370C2),ABISELECT(16,8), //typeinfo_var
  NSPAIRA(_ZTV7S6370C2),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  S6370C1  : S6370C2 {
  ~S6370C1(); // tgen
  S6370C1(); // tgen
};
//SIG(1 S6370C1) C1{ BC2{ v1 Fl}}


S6370C1 ::~S6370C1(){ note_dtor("S6370C1", this);} // tgen
S6370C1 ::S6370C1(){ note_ctor("S6370C1", this);} // tgen

static void Test_S6370C1()
{
  extern Class_Descriptor cd_S6370C1;
  void *lvp;
  {
    ABISELECT(double,int) buf[3];
    init_test(&cd_S6370C1, buf);
    S6370C1 *dp, &lv = *(dp=new (buf) S6370C1());
    lvp = (void*)&lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(S6370C1)");
    check2(__alignof__(lv), ABISELECT(8,4), "__alignof__(S6370C1)");
    check_base_class_offset(lv, (S6370C2*), 0, "S6370C1");
    test_class_info(&lv, &cd_S6370C1);
    dp->~S6370C1();
  }
  Check_Ctor_Dtor_Calls(lvp);
}
static Arrange_To_Call_Me vS6370C1(Test_S6370C1, "S6370C1", ABISELECT(16,8));

#else // __cplusplus

extern void _ZN7S6370C1C1Ev();
extern void _ZN7S6370C1D1Ev();
Name_Map name_map_S6370C1[] = {
  NSPAIR(_ZN7S6370C1C1Ev),
  NSPAIR(_ZN7S6370C1D1Ev),
  {0,0}
};
extern Class_Descriptor cd_S6370C2;
extern VTBL_ENTRY _ZTI7S6370C2[];
extern  VTBL_ENTRY _ZTV7S6370C2[];
static Base_Class bases_S6370C1[] = {
  // ofst, vfto, nneg, vtt_idx, base_vtt_idx, init_seq, direct, virtual
  {&cd_S6370C2,    0, //bcp->offset
    0, //bcp->virtual_function_table_offset
    2, //num_negative_vtable_entries(t, bcp)
    0, //bcp->index_in_construction_vtbl_array
    0, //bcp->base_subarray_index_in_construction_vtbl_array
    1, //init_seq
    -1, //immediately_derived
  1, 0},
  {0}};
extern VTBL_ENTRY _ZTI7S6370C1[];
extern void _ZN7S6370C22v1Ev();
static  VTBL_ENTRY vtc_S6370C1[] = {
  0,
  (VTBL_ENTRY)&(_ZTI7S6370C1[0]),
  (VTBL_ENTRY)&_ZN7S6370C22v1Ev,
};
extern VTBL_ENTRY _ZTI7S6370C1[];
extern  VTBL_ENTRY _ZTV7S6370C1[];
Class_Descriptor cd_S6370C1 = {  "S6370C1", // class name
  bases_S6370C1, 1,
  &(vtc_S6370C1[0]), // expected_vtbl_contents
  0, //no vtt
  ABISELECT(16,8), // object size
  NSPAIRA(_ZTI7S6370C1),ABISELECT(24,12), //typeinfo_var
  NSPAIRA(_ZTV7S6370C1),3, //virtual function table var
  2, // offset into main vftv pointed to by object[0]
  {0,0},0, // virtual table table var
  1, // n_initialized_bases
  0, // has_virtual_bases
  0, // has_class_type_fields
  0, // alt-thunk-names
};
#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10870C1  {
  char s10870c1f0[38];
  int s10870c1f1;
};
//SIG(1 S10870C1) C1{ Fc[38] Fi}



static void Test_S10870C1()
{
  {
    init_simple_test("S10870C1");
    S10870C1 lv;
    check2(sizeof(lv), 44, "sizeof(S10870C1)");
    check2(__alignof__(lv), 4, "__alignof__(S10870C1)");
    check_field_offset(lv, s10870c1f0, 0, "S10870C1.s10870c1f0");
    check_field_offset(lv, s10870c1f1, 40, "S10870C1.s10870c1f1");
  }
}
static Arrange_To_Call_Me vS10870C1(Test_S10870C1, "S10870C1", 44);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S18430C1  {
  short s18430c1f0[10];
  void  mf18430c1(); // _ZN8S18430C19mf18430c1Ev
};
//SIG(1 S18430C1) C1{ m Fs[10]}


void  S18430C1 ::mf18430c1(){}

static void Test_S18430C1()
{
  {
    init_simple_test("S18430C1");
    S18430C1 lv;
    check2(sizeof(lv), 20, "sizeof(S18430C1)");
    check2(__alignof__(lv), 2, "__alignof__(S18430C1)");
    check_field_offset(lv, s18430c1f0, 0, "S18430C1.s18430c1f0");
  }
}
static Arrange_To_Call_Me vS18430C1(Test_S18430C1, "S18430C1", 20);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus

struct  S10801C1  {
  char s10801c1f0[294];
};
//SIG(1 S10801C1) C1{ Fc[294]}



static void Test_S10801C1()
{
  {
    init_simple_test("S10801C1");
    S10801C1 lv;
    check2(sizeof(lv), 294, "sizeof(S10801C1)");
    check2(__alignof__(lv), 1, "__alignof__(S10801C1)");
    check_field_offset(lv, s10801c1f0, 0, "S10801C1.s10801c1f0");
  }
}
static Arrange_To_Call_Me vS10801C1(Test_S10801C1, "S10801C1", 294);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

